sql >> Databáze >  >> RDS >> Mysql

Návrh databáze:Možnosti EAV?

Ačkoli je tabulka atributů modelu 2 minimalistická, jak je znázorněno, zavádí koncept meta-dat do směsi se vším dobrým, co z toho plyne. Model2 má další výhody, například zvýšení výkonu spojené s menší velikostí řádku (tabulky Hodnota), ale rád bych se zaměřil na koncept metadat.

Dokonce i tak jak je Tabulka atributů Model2 představuje úložiště všech platných atributů (s model1 by bylo potřeba spustit agregovaný dotaz druhu, aby se takový seznam dostal). Také a tak jak je , úložiště je dostatečné pro zavedení omezení cizích klíčů pomáhá udržovat integritu datové sady (s Modelem 1 by bylo zapotřebí externích forem ověření hodnot uložených ve sloupci atributů.

S několika jednoduchými doplňky se z atributové tabulky může stát všestranné úložiště, které lze použít pro různé účely. Tabulka může například obsahovat některé z následujících

  • informace, jako je například zobrazovaný název každého atributu
  • některé příznaky označující typ pole (číselné vs. řetězec vs. datum atd.), pro odlišnou manipulaci / zpracování
  • konkrétní tabulka hodnot, kde je uložen základní atribut (model zobrazuje pouze jednu tabulku, ale optimalizace/škálování někdy vyzve k rozdělení tabulek)
  • skutečnost, že atribut může být uložen jako vlastní sloupec v tabulce "Value" (opět forma optimalizace, v podstatě získání toho nejlepšího z obou světů:flexibilita schématu modelu EAV, ale výkon tradičního relační model pro atributy, které jsou nejpoužívanější a/nebo nejběžnější pro všechny entity.
  • možnost přejmenovat atributy, aniž by došlo k narušení hlavní tabulky. Změny pouze na úrovni metadat.
  • různé aplikačně orientované sémantiky. Například indikátory, že konkrétní atribut by měl být nabízen jako jedno ze základních vs. rozšířených vyhledávacích polí.

Stručně řečeno, tabulka atributů se stává zdrojem, který umožňuje aplikaci skutečně řídit data (nebo přesněji meta řízené daty). Může se vám také líbit tabulka entit, tj. taková, kde se shromažďují metadata týkající se různých typů entit:jaké jsou různé typy entit, které atributy jsou povoleny pro který typ entity atd.

Nyní... věnujte pozornost komentáři od zerkms , pod samotnou otázkou. Přes všechny své výhody má model EAV také svůj podíl nevýhod a výzev, jak naznačuje složitost dotazů, které přicházejí na mysl, a také problémy s výkonem. Tyto obavy by však neměly a priori diskvalifikovat EAV:existuje mnoho případů použití, kdy je EAV lepší přístup.
Za předpokladu, že EAV je volbou než Model2, nebo dokonce něco, co je o něco sofistikovanější, je definitivně lepší než model1.



  1. Opravit pomocí kde; Použití dočasného; Pomocí řazení souborů

  2. Připojení Visual c++ 2008 k MySql

  3. CHYBA:Nelze načíst knihovnu „/opt/PostgreSQL/9.0/lib/postgresql/plperl.so“:libperl.so:

  4. Výběr správné cesty v požadovaném prohlášení