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

Czy używanie tabeli głównej dla kolumn współdzielonych jest dobrą praktyką dla całej bazy danych?

Czemu? Zrób wszystko Twoje podmioty wymagają, aby były w ten sposób rozszerzalne? Prawdopodobnie nie - w większości aplikacji jest co najwyżej jeden lub dwa podmioty, które skorzystałyby z tego poziomu elastyczności. Inne podmioty faktycznie korzystają ze stabilności i przejrzystości nie zmienia się cały czas.

EAV jest przykładem efektu platformy wewnętrznej :

Innymi słowy, teraz Twoim obowiązkiem jest napisanie kodu aplikacji, który będzie wykonywał wszystkie czynności, które zapewnia właściwy RDBMS, takie jak ograniczenia i typy danych. Nawet coś tak prostego, jak uczynienie kolumny obowiązkową, jak NOT NULL nie działa w EAV.

To prawda, że ​​czasami projekt wymaga wielu tabel. Ale oszukujesz się, jeśli myślisz, że uprościłeś projekt, tworząc tylko dwie tabele. Nadal będziesz mieć tyle samo odrębnych jednostek, ile miałbyś stołów, ale teraz od ciebie zależy, czy nie zamienią się w kupę śmieci.

Zanim zainwestujesz zbyt dużo czasu w EAV, przeczytaj tę historię o firmie, która prawie przestała funkcjonować, ponieważ ktoś próbował dowolnie uelastycznić swoje repozytorium danych:Zła CarMA .

Więcej o EAV napisałem też w poście na blogu, NIEPOWODZENIE EAV oraz w rozdziale mojej książki 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. Konwersja Json do tabeli SQL

  2. Błąd w zapytaniu Symfony:oczekiwany literał, otrzymał „”

  3. Jak wybrać dwie dodatkowe kolumny z innej tabeli na podstawie wartości w tabeli głównej?

  4. Pytanie MySQL dotyczące planowania

  5. Zmiana strefy czasowej MySQL?