sql >> Database >  >> RDS >> Mysql

Wat is de juiste manier om deze gegevens op te slaan in een MySQL-schema?

Gebruik in plaats van een enkele rij voor elke film een ​​tabel met attributen en waarden. Voeg hier dan een extra veld aan toe dat de gebruiker specificeert, dit zou 0 . zijn voor de oorspronkelijke standaard. Dus de tabel ziet er als volgt uit:

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

Een zoekopdracht om de titel te krijgen zou er dan als volgt uitzien:

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'

Sommige databaseontwerpers gebruiken ook graag een AttributeID in plaats van een string als attribuutnaam, en een aparte tabel die attribuutnamen toewijst aan ID's.



  1. Controleer welke ID's van een set niet in een tabel voorkomen

  2. Ondersteunt Microsoft OLE DB Provider voor SQL Server TLS 1.2?

  3. SQLite SUM

  4. Hoe woorden maar geen definities te beperken met mysql