Nie należy traktować tego jako wyczerpującej odpowiedzi, ale tylko kilka punktów na ten temat.
Ponieważ pytanie jest również oznaczone tagiem [sql]
, proszę pozwolić mi powiedzieć, że ogólnie rzecz biorąc, relational databases nie są szczególnie odpowiednie do przechowywania danych przy użyciu modelu EAV. Nadal możesz zaprojektować model EAV w SQL, ale będziesz musiał poświęcić wiele zalet, które dałaby relacyjna baza danych. Nie tylko nie będziesz w stanie wymuszać integralności referencyjnej, używać typów danych SQL dla wartości i wymuszać obowiązkowych atrybutów, ale nawet bardzo podstawowe zapytania mogą być trudne do napisania. W rzeczywistości, aby pokonać to ograniczenie, kilka rozwiązań EAV polega na powielaniu danych, zamiast łączenia się z powiązanymi tabelami, które, jak można sobie wyobrazić, mają wiele wad.
Jeśli naprawdę potrzebujesz zaprojektowanego przez siebie szablonu, "pozwalającego na nieograniczoną liczbę atrybutów", najlepiej jest użyć rozwiązania NoSQL. Mimo że słabości EAV w stosunku do relacyjnych baz danych mają również zastosowanie do alternatyw NoSQL, otrzymasz dostęp do dodatkowych funkcji, które są trudne do osiągnięcia dzięki konwencjonalnym bazom danych SQL. Na przykład, zwykle magazyn danych NoSQL można skalować znacznie łatwiej niż relacyjne bazy danych, po prostu dlatego, że zostały zaprojektowane w celu rozwiązania pewnego problemu skalowalności i celowo usunięto funkcje, które utrudniają skalowanie.
Wiele platform cloud computing (takie jak te oferowane przez Amazon, Google i Microsoft) są wyposażone magazynów danych w oparciu o model EAV, gdzie dowolna liczba atrybutów mogą być związane z danym podmiotem. Jeśli zastanawiasz się nad wdrożeniem aplikacji w chmurze, możesz uznać ją zarówno za przewagę biznesową, jak i techniczną, ponieważ silna konkurencja między dużymi dostawcami przesuwa stosunek wartości do kosztów na bardzo wysokie poziomy, poprzez ciągłe zwiększanie funkcjonalności i obniżanie kosztów finansowych i wdrożenia.
Zobacz http://stackoverflow.com/search?q=%5bdatabase%5d%20%2beav&tab=newest –