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.