sql >> Databáze >  >> RDS >> Mysql

Jaký je správný způsob uložení těchto dat ve schématu MySQL?

Místo jednoho řádku pro každý film použijte tabulku hodnot atributů. Poté k tomu přidejte další pole, které specifikuje uživatele, což by bylo 0 pro původní výchozí nastavení. Tabulka tedy vypadá takto:

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

Pak by dotaz na získání názvu vypadal takto:

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'

Někteří návrháři databází také rádi používají AttributeID spíše než řetězec jako název atributu a samostatnou tabulku, která mapuje názvy atributů na ID.



  1. Jak vytvořit pohledy historie NEBO auditování z tabulek pro zachycení změn dat (CDC) na serveru SQL Server - kurz SQL Server

  2. Jak nastavit znakovou sadu a řazení databáze v MySQL

  3. Události a vlákna v .NET

  4. Jak použít metodu bindValue v klauzuli LIMIT?