Lubomír Hauerland


Databázový návrh MySQL pro nový web 2.0 projekt

Zasláno do Internet, Wordpress od hauerland v 4. 3. 2008
Tags: , ,

V hlavě se mi spřádají plány na nový komunitní projekt, který bych chtěl v druhé polovině roku spustit. Rozhodl jsem se abstrahovat od klasické kategoriální navigace a vše by mělo být založeno čistě na free taggingu. Na českém a zahraničním internetu lze najít dostatek odstrašujích případů, jak se může tagování zvrhnout. Na většině stránek jsou nálepky úplně zbytečné, na další části stránek přímo vtahují návštěvníky do částí webu, který stojí mimo hlavní záběr. Na WordPress.com se mi naopak líbí, díky nim najdu posty z příslušných kategorií a zároveň tagy, které jsou vzájemně relevantní. Žádný iPhone, sex a webdesign v jednom tag cloudu (ten bude navíc hezky skrytý, aby komunitu neblbl jako našeptávače).

U té příležitosti jsem hledal vhodné databázové schéma, protože špatný návrh databáze by mi při stovkách tisíc položek mohl hezky zatopit. Našel jsem k tomuto tématu pár let starý (ale stále užitečný) článek (návrh + benchmark) srovnávají výkon čtyř řešení: s jednou tabulkou, s jednou tabulkou a fulltextovou optimalizací, dvěmi tabulkami a třemi tabulkami. Je v něm diskutována rychlost v závislosti na počtu položek, ale i variabilitě dat, a to z pohledu různých operací. Nakonec jsem se rozhodl pro trojtabulkovou variantu s vnořenou mapovací tabulkou napojenou na dva primární klíče. Toto schéma využívá třeba WordPress od verze 2.3 a umožňuje autorům pluginů pružně vytvářet libovolné druhy taxonomických řazení. Ve výchozí instalaci se u WordPressu starají tři tabulky o řazení článků do kategorií i přiřazování tagů (viz schéma a popis).

Jedna odpověď do 'Databázový návrh MySQL pro nový web 2.0 projekt'

Přihlásit se ke komentování s RSS nebo Zpětný odkaz do 'Databázový návrh MySQL pro nový web 2.0 projekt'.

  1. Messa řekl,

    Já ti nevim, ale osobně bych se raději spolehnul na pojmy jako “normalizace” nebo “normálová forma” a nepokoušel se vymýšlet hranaté kolo.

    Co by se mělo v tom komunitním projektu tagovat, resp. o čem by to vůbec mělo být? Doufám, že tě nenapadlo přesně to samé, nad čím už asi rok přemýšlím já :-) (ale nějak jsem se ještě nedostal k realizaci…)


Zanechat odpověď