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

Projekt bazy danych:opcje EAV?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przechowywanie uprawnień aplikacji w bazie danych

  2. Problem z dostępem do rzekomo wyłączonej funkcji w CODEIGNITER

  3. Co może powodować zbyt wiele połączeń z bazą danych

  4. serwer mysql nie uruchamia MAMP

  5. Błąd składni SQL