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.