Istället för en enda rad för varje film, använd en attribut-värdetabell. Lägg sedan till ett ytterligare fält till detta som anger användaren, vilket skulle vara 0
för den ursprungliga standarden. Så tabellen ser ut så här:
MovieID UserID Attribute Value
1 0 Title 12 Monkeys
1 0 Format DVD
1 1 Title Twelve Monkeys
Då skulle en fråga för att få titeln se ut så här:
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'
Vissa databasdesigners gillar också att använda ett AttributeID
snarare än en sträng som attributnamn och en separat tabell som mappar attributnamn till ID:n.