Chociaż minimalistyczna, jak pokazano, tabela atrybutów Model2 wprowadza koncepcję metadanych do mieszanki, z całym dobrem, które z niej pochodzi. Model 2 ma inne zalety, na przykład wzrost wydajności związane z mniejszym rozmiarem wiersza (tabeli Value), ale chciałbym skupić się na koncepcji metadanych.
Nawet tak jak jest Tabela atrybutów Model2 stanowi repozytorium wszystkich ważnych atrybutów (w przypadku modelu 1 należałoby uruchomić agregujące zapytanie sortowania, aby uzyskać taką listę). Oraz tak jak jest , repozytorium wystarczy, aby wprowadzić ograniczenia kluczy obcych aby pomóc w utrzymaniu integralności zbioru danych (w przypadku Modelu 1 potrzebne byłyby zewnętrzne formy walidacji wartości przechowywanych w kolumnie atrybutów.
Dzięki kilku prostym dodatkom tabela atrybutów może stać się wszechstronnym repozytorium, które można wykorzystać do różnych celów. Na przykład tabela może zawierać niektóre z poniższych
- informacje, takie jak przyjazna dla wyświetlenia nazwa każdego atrybutu
- niektóre flagi wskazujące typ pola (liczba vs. ciąg vs. data itp.), dla zróżnicowanej obsługi / przetwarzania
- konkretna tabela wartości, w której przechowywany jest podstawowy atrybut (Model pokazuje tylko jedną tabelę, ale optymalizacja/skalowanie czasami powoduje podział tabel)
- fakt, że atrybut może być przechowywany jako osobna kolumna w tabeli „Wartość” (ponownie forma optymalizacji, zasadniczo wykorzystująca to, co najlepsze z obu światów:elastyczność schematu modelu EAV, ale wydajność tradycyjnego model relacyjny dla atrybutów, które są najczęściej używane i/lub najczęstsze dla wszystkich encji.
- możliwość zmiany nazwy atrybutów bez naruszania głównej tabeli. Zmiany tylko na poziomie metadanych.
- różne semantyki zorientowane na aplikacje. Na przykład wskaźniki, że dany atrybut powinien być oferowany jako jedno z podstawowych i zaawansowanych pól wyszukiwania.
W skrócie, tablica atrybutów staje się zasobem, który pozwala aplikacji na prawdziwie opartą na danych (a dokładniej meta oparte na danych). Rzeczywiście, możesz również polubić tabelę encji, tj. taką, w której gromadzone są metadane dotyczące różnych typów encji:jakie są różne typy encji, które atrybuty są dozwolone dla jakiego typu encji itp.
Teraz... zwróć uwagę na komentarz zerkms , pod samym pytaniem. Pomimo wszystkich swoich zalet, model EAV ma również swoje wady i wyzwania, co sugeruje złożoność zapytań, a także problemy z wydajnością. Obawy te nie powinny jednak a priori dyskwalifikować EAV:jest wiele przypadków użycia, w których EAV jest lepszym podejściem.
Zakładając, że EAV jest lepszym wyborem niż Model2 lub nawet coś nieco bardziej wyrafinowanego jest zdecydowanie lepsze od modelu1.