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

Qual è il modo corretto per archiviare questi dati in uno schema MySQL?

Invece di una singola riga per ogni film, usa una tabella dei valori degli attributi. Quindi aggiungi un campo aggiuntivo a questo che specifica l'utente, che sarebbe 0 per l'impostazione predefinita originale. Quindi la tabella assomiglia a:

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

Quindi una query per ottenere il titolo sarebbe simile a:

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'

Ad alcuni progettisti di database piace anche utilizzare un AttributeID anziché una stringa come nome dell'attributo e una tabella separata che associa i nomi degli attributi agli ID.