Jak na schéma databáze CMS v MySQL rubrika: Databáze: SQL

Zdravím,
vytvářím vlastní CMS, ve kterém je možné v rámci administrace definovat vlastní pole ke stránkám (např. titulek, obsah, autor atd.), ale nevím, jak to nejlépe namodelovat databázi. Je pro mě důležité, aby zůstala možnost agregace, budu chtít abych mohl získat např. stránky od určitého autora, razene podle nazvu atd. Používám MySQL.
Zatím vím o těchto možnostech:
a) serializovaná data (např. JSON) ve sloupci data - nevhodné, protože nebudu moct při fetchování podle vlastních polí různě filtrovat, řadit (nebo ano?)
b) určitý počet předpřipravených "custom columns" v tabulce - asi nejjednodušší, ale dost ubohé, navíc omezený počet vlastních polí
c) EAV (entity - attribute - value model) - ten používám teď, ale dotazy jsou dost komplikované a časově náročné, podle některých anti-pattern, já ale nic jiného použitelného nenašel.
Děkuji za jakékoliv nápady. Např. ví někdo jak to dělají různé CMS (Drupal a jiné) ?

b) je jednoznačné zlo
a) by připadalo v úvahu, pokud bys na základě těch dat nechtěl dělat projekci ani restrikci a stačilo by ti je prostě jen načítat a ukládat (nebo pokud by DB podporovala efektivní práci s těmi daty - to některé DB umí v případě XML - můžeš filtrovat pomocí XPath dotazů a je to i indexované, není to jen blob/text)
c) je absolutně univerzální a pružné, ale daní za to je ta nižší efektivita a/nebo složitější dotazy
d) datový model se může upravovat za chodu (typicky budou přibývat a ubývat sloupečky), to je nejlepší řešení, ale vyžaduje to určité počáteční úsilí (musí se to udělat pořádně, aby se ti to nevymklo z rukou - pak ale bude taková aplikace/databáze dobře sloužit)
Pro zobrazení všech 17 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře