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

katalog-strom

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

katalog-uml  

tab1

tab2

tab3

tab4

tab5

Naposledy změněno: úterý, 13. května 2025, 15.11