Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie speichert man diese Daten richtig in einem MySQL-Schema?

Verwenden Sie anstelle einer einzelnen Zeile für jeden Film eine Attributwerttabelle. Fügen Sie dann ein zusätzliches Feld hinzu, das den Benutzer angibt, was 0 wäre für die ursprüngliche Vorgabe. Die Tabelle sieht also so aus:

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

Dann würde eine Abfrage zum Abrufen des Titels wie folgt aussehen:

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'

Einige Datenbankdesigner verwenden auch gerne eine AttributeID anstelle einer Zeichenfolge als Attributname und eine separate Tabelle, die Attributnamen IDs zuordnet.