Databáze: Tvorba konceptuálního modelu z business zadání
Návrh databáze zpravidla začíná u business zadání. To je dokument, kde
zákazník (nebo přímo vy )
shrnuje své požadavky na systém. Zadání často explicitně neříká, co
má systém obsahovat, ale spíše to, co od něj klient očekává nebo jak by
měl fungovat. Naším úkolem bude v zadání identifikovat tzv. základní
entity. Jedná se o prvky, které jsou pro nás zajímavé a o kterých má z
databázového hlediska smysl udržovat data. Model, ve kterém jsou vyobrazeny
tyto entity a vztahy mezi nimi, se nazývá konceptuální.
Připravil jsem pro vás jednoduché zadání informačního systému, přečtěte si jej a poté z něj společně vytvoříme konceptuální model, ze kterého budeme dále při návrhu databáze vycházet.
Business zadání - vzdělávací projekt
Skupina studentů IT se zájmem o programování her se rozhodla napravit nepříznivou situaci ohledně materiálů k programování na českém internetu. Studenti vytvořili sérii článků a tutoriálů k různým vývojovým nástrojům a algoritmům, které následně publikovali na webu, který byl založen na redakčním systému WordPress.
Časem se ukázalo, že je o jejich tvorbu zájem, ale s přibývajícím obsahem webu se začaly projevovat nevýhody hotového řešení. Rozhodli se tedy, že si vytvoří redakční systém na míru. Nejprve přistoupili k tvorbě databázového modelu, jejich představa je následující:
Na webu jsou uloženy články, které náleží určitému uživateli a obsahují pod sebou komentáře. Článek může náležet do více sekcí a v jedné sekci může být více článků. Článek kromě svého obsahu (textu, který se následně převádí do HTML) obsahuje ještě perex, identifikátor do URI (ve tvaru titulek-clanku), titulek, klíčová slova do HTML hlavičky a datum publikace. U sekcí článků se uchovává pouze jejich název.
Uživatelé se registrují pomocí emailu a hesla, dalším atributem je přezdívka.
Komentář se váže na konkrétní článek a uživatele. Obsahuje pouze datum vložení a text.
Studenti se také rozhodli implementovat novou funkčnost a to znalostní testy z programovacích jazyků, na kterých si uživatelé budou moci testovat své znalosti. Samotný test obsahuje titulek a popis. Testovacích otázek může být libovolný počet a váží se vždy na jeden konkrétní test. Otázka obsahuje text a vždy čtyři možnosti (model ABCD), kdy první uložená otázka v DB bude vždy správná (program sám si je poté zamíchá a do HTML kódu přiřadí pod určité hashe). Výsledky testů jednotlivých uživatelů se samozřejmě ukládají a to i s datem odeslání testu.
Identifikace klíčových entit
Z článku vyčteme několik entit: Článek, Sekce, Uživatel, Komentář, Znalostní test a Otázka.
Nyní se zaměřme na vztahy mezi entitami. Máme zde několik vazeb 1:N (jedna ku několika), těmi jsou uživatel-článek, uživatel-komentář, článek-komentář, znalostní_test-otázka. Princip vazby 1:N je jednoduchý, uživatel má více článků, ale článek patří vždy jednomu uživateli.
Podobu výsledku testu zatím neznáme, proto naznačíme jen jednoduchou vazbu. Mezi sekcí a článkem máme vazbu M:N. Článek může náležet do více sekcí a v jedné sekci může být více článků. Na této úrovni modelu ji však nebudeme řešit, v dalších dílech tohoto seriálu se nám rozpadne na 2 vazby 1:N a vazební tabulku.
Konceptuální model
Entity zakreslíme do modelu a pomocí UML notace znázorníme vazby mezi nimi:

Model je pouze náčrt, časem např. zjistíme, že znalostní test bude mít nějaký výsledek a podobně. Tím se však budeme zabývat až příště.