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 .