Databáza: Tvorba konceptuálneho modelu z business zadania
Návrh databázy spravidla začína pri business zadaní. To je dokument, kde zákazník (alebo priamo vy:) ) zhŕňa svoje požiadavky na systém. Zadanie často explicitne nehovorí, čo má systém obsahovať, ale skôr to, čo od neho klient očakáva alebo ako by mal fungovať. Našou úlohou bude v zadaní identifikovať tzv. základné entity. Ide o prvky, ktoré sú pre nás zaujímavé ao ktorých má z databázového hľadiska zmysel udržiavať dáta. Model, v ktorom sú vyobrazené tieto entity a vzťahy medzi nimi, sa nazýva konceptuálne.
Pripravil som pre vás jednoduché zadanie informačného systému, prečítajte si ho a potom z neho spoločne vytvoríme konceptuálny model, z ktorého budeme ďalej pri návrhu databázy vychádzať.
Business zadanie - vzdelávací projekt
Skupina študentov IT so záujmom o programovaní hier sa rozhodla napraviť nepriaznivú situáciu ohľadom materiálov na programovanie na českom internete. Študenti vytvorili sériu článkov a tutoriálov k rôznym vývojovým nástrojom a algoritmom, ktoré následne publikovali na webe, ktorý bol založený na redakčnom systéme WordPress.
Časom sa ukázalo, že je o ich tvorbu záujem, ale s pribúdajúcim obsahom webu sa začali prejavovať nevýhody hotového riešenia. Rozhodli sa teda, že si vytvoria redakčný systém na mieru. Najprv pristúpili k tvorbe databázového modelu, ich predstava je nasledujúca:
Na webe sú uložené články, ktoré patria určitému užívateľovi a obsahujú pod sebou komentáre. Článok môže patriť do viacerých sekcií av jednej sekcii môže byť viac článkov. Článok okrem svojho obsahu (textu, ktorý sa následne prevádza do HTML) obsahuje ešte perex, identifikátor do URI (v tvare titulok-clanku), titulok, kľúčové slová do HTML hlavičky a dátum publikácie. Pri sekciách článkov sa uchováva iba ich názov.
Užívatelia sa registrujú pomocou emailu a hesla, ďalším atribútom je prezývka.
Komentár sa viaže na konkrétny článok a používateľa. Obsahuje iba dátum vloženia a text.
Študenti sa tiež rozhodli implementovať novú funkčnosť a to znalostné testy z programovacích jazykov, na ktorých si používatelia budú môcť testovať svoje znalosti. Samotný test obsahuje titulok a popis. Testovacích otázok môže byť ľubovoľný počet a váži sa vždy na jeden konkrétny test. Otázka obsahuje text a vždy štyri možnosti (model ABCD), kedy prvá uložená otázka v DB bude vždy správna (program sám si ich potom zamieša a do HTML kódu priradí pod určité hashe). Výsledky testov jednotlivých užívateľov sa samozrejme ukladajú a to aj s dátumom odoslania testu.
Identifikácia kľúčových entít
Z článku vyčítame niekoľko entít: Článok, Sekcia, Užívateľ, Komentár, Znalostný test a Otázka.
Teraz sa zamerajme na vzťahy medzi entitami. Máme tu niekoľko väzieb 1:N (jedna ku niekoľkým), tými sú užívateľ-článok, užívateľ-komentár, článok-komentár, znalostná_test-otázka. Princíp väzby 1:N je jednoduchý, používateľ má viac článkov, ale článok patrí vždy jednému užívateľovi.
Podobu výsledku testu zatiaľ nepoznáme, preto naznačíme len jednoduchú väzbu. Medzi sekciou a článkom máme väzbu M:N. Článok môže patriť do viacerých sekcií av jednej sekcii môže byť viac článkov. Na tejto úrovni modelu ju však nebudeme riešiť, v ďalších dieloch tohto seriálu sa nám rozpadne na 2 väzby 1:N a väzobnú tabuľku.
Konceptuálny model
Entity zakreslíme do modelu a pomocou UML notácie znázorníme väzby medzi nimi:
Model je iba náčrt, časom napr. zistíme, že znalostný test bude mať nejaký výsledok a podobne. Tým sa však budeme zaoberať až nabudúce.