Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jaki jest właściwy sposób przechowywania tych danych w schemacie MySQL?

Zamiast pojedynczego wiersza dla każdego filmu, użyj tabeli atrybut-wartość. Następnie dodaj do tego dodatkowe pole, które określa użytkownika, którym będzie 0 dla oryginalnej wartości domyślnej. Tak więc tabela wygląda tak:

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

Wtedy zapytanie o tytuł wyglądałoby tak:

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'

Niektórzy projektanci baz danych również lubią używać AttributeID zamiast ciągu jako nazwy atrybutu i oddzielnej tabeli, która odwzorowuje nazwy atrybutów na identyfikatory.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd migracji rzemieślnika php:podano nazwę węzła lub nazwę serwera lub nie znamy

  2. Szybkie wskazówki dotyczące projektowania relacyjnych baz danych dla MySQL

  3. PHP-SQL:przesłany obraz wyświetlany jako niechciany tekst

  4. MySQL w 2018 roku:co jest w wersji 8.0 i inne obserwacje

  5. Użyto Mysql utf32_unicode_ci i html charset utf-8, ale pojawia się znak �