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

Propozycja struktury tabeli mysql?

Nie, to zły projekt dla relacyjnej bazy danych. To jest przykład Entity-Attribute-Value projekt. Jest elastyczny, ale łamie większość zasad tego, co oznacza bycie relacyjną bazą danych.

Zanim przejdziesz do projektowania EAV jako rozwiązania dla elastycznej bazy danych, przeczytaj tę historię:Zła CarMA .

Mówiąc dokładniej, niektóre problemy z EAV obejmują:

  • Nie wiesz, jakie atrybuty istnieją dla danego ID_NUM bez zapytania o nie.
  • Nie możesz uczynić żadnego atrybutu obowiązkowym, odpowiednikiem NOT NULL.
  • Nie możesz używać ograniczeń bazy danych.
  • Nie można używać typów danych SQL; value kolumna musi być długim VARCHAR.
  • Szczególnie w MySQL, każdy VARCHAR jest przechowywany na własnej stronie danych, więc jest to bardzo marnotrawne.

Zapytania są również niezwykle złożone, gdy używasz projektu EAV. Magento, platforma e-commerce typu open source, intensywnie korzysta z EAV, a wielu użytkowników twierdzi, że jest bardzo powolna i trudna do wyszukania, jeśli potrzebujesz niestandardowych raportów.

Aby być relacyjnym, powinieneś przechowywać każdy inny atrybut w osobnej kolumnie, z własną nazwą i odpowiednim typem danych.

Więcej o EAV napisałem w mojej prezentacji Praktyczne zorientowane na obiekt Modele w SQL oraz w moim poście na blogu Niepowodzenie EAV oraz w mojej książce Antywzorce SQL:unikanie pułapek programowania baz danych .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. host „localhost” nie może połączyć się z tym serwerem MySQL (#1130)

  2. Błąd Airflow mysql do gcp Dag

  3. Synchronizacja danych między MySQL i MongoDB

  4. Wykonaj skrypt/polecenie powłoki z poziomu wyzwalacza/procedury przechowywanej MySQL

  5. Zamów przez ostatnie 3 znaki