Příklad jednoho z možných řešení úkolu 12
Toto řešení je silně zjednodušené, pro implementaci v praxi by vyžadovalo zahrnout do modelů mnohem větší počet prvků.
Zadání 3 - Katalog produktů
Katalog produktů tvoří údaje o produktech uspořádaných do kategorií a o producentovi těchto produktů, který katalog publikuje. Každý katalog obsahuje jeden název a jednu sadu údajů o producentovi, které tvoří jméno a kontaktní údaje. Katalog musí obsahovat alespoň jednu kategorii, počet kategorií není omezen. Každá kategorie se může dále členit na podkategorie. V každé kategorii musí být alespoň jeden produkt, počet produktů v kategorii není omezen. Produkt se zařazuje vždy jen do jedné kategorie nebo podkategorie. Údaje o produktu se uvádějí vždy v tomto pořadí: 1. kód, 2. název produktu, 3. foto, 4. parametr. Každý produkt charakterizuje alespoň jeden parametr, počet parametrů není omezen.
1. Tabulka prvků
prvek dokumentu |
násobnost (kardinalita) a povinnost výskytu prvku v dokumentu |
atribut/y prvku dokumentu (pokud byly zjištěny) |
násobnost (kardinalita) a povinnost výskytu atributu v prvku dokumentu |
producent katalogu | 1..1 | jméno kontakt |
1..1 1..* |
kategorie produktů | 1..* | ||
podkategorie produktů | 0..* | ||
produkt | 1..* | kód název produktu foto |
1..1 1..1 0..* |
parametr | 1..* | název parametru hodnota parametru |
1..1 1..1 |
2. Tabulka vztahů
prvky nebo atributy | typ vztahu |
produkt - kategorie/podkategorie produktů | asociace |
kategorie produktů - podkategorie produktů | partitivní hierarchie |
kód - název produktu | sekvenční asociace |
název produktu - foto | sekvenční asociace |
produkt - parametr | partitivní hierarchie |
3. Model pro SGML
Model stromové struktury
DTD - varianta s elementy | DTD - varianta s atributy | |
<! DOCTYPE katalog produktů [ <! ELEMENT katalog produktů (název katalogu, producent, kategorie produktů+)> <! ELEMENT název katalogu (#PCDATA)> <! ELEMENT producent (jméno, kontakt)> <! ELEMENT jméno (#PCDATA)> <! ELEMENT kontakt (#PCDATA)> <! ELEMENT kategorie produktů (#PCDATA|kategorie produktů* <!-- případná podkategorie --> , produkt+)> <! ELEMENT produkt (kód, název produktu, foto, parametr+)> <! ELEMENT kód (#CDATA)> <! ELEMENT název produktu (#PCDATA)> <! ELEMENT foto EMPTY> <! ELEMENT parametr (název parametru, hodnota parametru)> <! ELEMENT název parametru (#PCDATA)> <! ELEMENT hodnota parametru (#PCDATA)> ] > |
<! DOCTYPE katalog produktů [ <! ELEMENT katalog produktů (producent, kategorie produktů+)> <! ELEMENT producent (#PCDATA)> <! ELEMENT kategorie produktů (#PCDATA|kategorie produktů*<!-- případná podkategorie --> , produkt+)> <! ELEMENT produkt (parametr+)> <! ELEMENT parametr (#PCDATA)> <! ATTLIST katalog produktů název katalogu #PCDATA> <! ATTLIST producent jméno #PCDATA> kontakt #PCDATA> <! ATTLIST produkt kód #CDATA název produktu #PCDATA foto EMPTY> <! ATTLIST parametr název parametru #PCDATA hodnota parametru #PCDATA> ] > |
Příklad instance (varianta s elementy bez atributů) - dokument s vyznačením
<katalog produktů>
<název katalogu>Katalog KOH-I-NOOR HARDTMUTH</název katalogu>
<producent>
<jméno>KOH-I-NOOR HARDTMUTH, a.s.</jméno>
<kontakt>https://www.koh-i-noor.cz/</kontakt>
</producent>
<kategorie produktů>Tužky<!-- kategorie -->
<kategorie produktů>Tužky pastelové<!-- podkategorie -->
<produkt>
<kód>V3724024020BL</kód>
<název produktu>Souprava pastelek akvarelových</název produktu>
<foto ID=odkaz>
<parametr>
<název parametru>hmotnost</název parametru>
<hodnota>0,18 kg</hodnota>
<název parametru>šířka</název parametru>
<hodnota>130 mm</hodnota>
</parametr>
</produkt>
</kategorie produktů>
</kategorie produktů>
</katalog produktů>
4. Diagram tříd v UML
V tomto diagramu je pro názornost zachycen i analyzovaný celek, tj. katalog produktů. |
Příklad instance - záznamy v tabulkách v relační databázi |
|
![]() |
|