sql >> Database teknologi >  >> RDS >> Mysql

Hvad er den rigtige måde at gemme disse data i et MySQL-skema?

I stedet for en enkelt række for hver film skal du bruge en attributværdi-tabel. Tilføj derefter et ekstra felt til dette, der specificerer brugeren, hvilket ville være 0 for den oprindelige standard. Så tabellen ser sådan ud:

MovieID UserID  Attribute   Value
1       0       Title       12 Monkeys
1       0       Format      DVD
1       1       Title       Twelve Monkeys

Så ville en forespørgsel om at få titlen se ud som:

SELECT MovieID, IFNULL(my.Value, default.Value) AS title
FROM movies AS default
LEFT JOIN movies AS my ON default.MovieID = my.MovieID AND my.Attribute = 'Title' AND my.userID = @user
WHERE default.UserID = 0 AND default.Attribute = 'Title'

Nogle databasedesignere kan også lide at bruge et AttributeID snarere end en streng som attributnavnet og en separat tabel, der tilknytter attributnavne til ID'er.



  1. Hvordan vedligeholder jeg PHP-sessioner på tværs af flere domæner på den samme server?

  2. Hvorfor bruge InnoDB over MySIAM

  3. Sådan omdøbes primær nøglebegrænsning for flere tabeller i SQL Server-databasen - SQL Server / TSQL vejledning del 64

  4. Indsæt i 2 tabeller med PDO MySQL