Cvičení – základní relace v relační databázi
Cvičení – základní relace v relační databázi
Práce v prostředí drawdb.eduiq.cz
|
Cíl cvičení: Vytvořit tři databázové diagramy a prakticky si procvičit tabulky, pole, datové typy, primární a cizí klíče a relace 1 : 1, 1 : N a M : N. |
1. Příprava
Otevři https://drawdb.eduiq.cz/ a vytvoř nový prázdný diagram. Pokud se editor zeptá na typ databáze, zvol Postgres. V tomto cvičení budeme používat datové typy INT, VARCHAR a DATE.
· INT – celé číslo
· VARCHAR – text
· DATE – datum
Vytvoříš tři samostatné diagramy. Každý po dokončení zkontroluj podle vzoru.
Úkol 1 – relace 1 : 1
Vytvoř diagram studenta a jeho studentské karty. Jeden student má jednu kartu a jedna karta patří jednomu studentovi.
|
Tabulka student |
Datový typ |
Nastavení |
|
student_id |
INT |
primární klíč |
|
jmeno |
VARCHAR(60) |
|
|
prijmeni |
VARCHAR(60) |
Potom vytvoř druhou tabulku:
|
Tabulka studentska_karta |
Datový typ |
Nastavení |
|
karta_id |
INT |
primární klíč |
|
student_id |
INT |
cizí klíč |
|
cislo_karty |
VARCHAR(20) |
|
|
platnost_do |
DATE |
Propoj: student.student_id ↔ studentska_karta.student_id a nastav kardinalitu 1 : 1.
Obr. 1 – Vzor výsledku: relace 1 : 1 mezi studentem a studentskou kartou.
Úkol 2 – relace 1 : N
Vytvoř nový samostatný diagram pro vztah mezi třídou a žáky. Jedna třída může mít více žáků, jeden žák patří do jedné třídy.
|
Tabulka trida |
Datový typ |
Nastavení |
|
trida_id |
INT |
primární klíč |
|
nazev |
VARCHAR(10) |
|
|
obor |
VARCHAR(80) |
|
|
Tabulka zak |
Datový typ |
Nastavení |
|
zak_id |
INT |
primární klíč |
|
jmeno |
VARCHAR(60) |
|
|
prijmeni |
VARCHAR(60) |
|
|
|
VARCHAR(120) |
|
|
trida_id |
INT |
cizí klíč |
Propoj: zak.trida_id → trida.trida_id. Výsledkem musí být relace TŘÍDA 1 : N ŽÁK.
Obr. 2 – Vzor výsledku: relace 1 : N mezi třídou a žáky.
Všimni si: trida_id je v tabulce trida primární klíč a v tabulce zak cizí klíč. Díky tomu databáze pozná, do které třídy žák patří.
Úkol 3 – relace M : N
Vytvoř třetí samostatný diagram. Jeden žák může mít více předmětů a jeden předmět může studovat více žáků. Pro vztah M : N použij spojovací tabulku zapis.
|
Tabulka zak |
Datový typ |
Nastavení |
|
zak_id |
INT |
primární klíč |
|
jmeno |
VARCHAR(60) |
|
|
prijmeni |
VARCHAR(60) |
|
|
Tabulka predmet |
Datový typ |
Nastavení |
|
predmet_id |
INT |
primární klíč |
|
nazev |
VARCHAR(100) |
|
|
Tabulka zapis |
Datový typ |
Nastavení |
|
zapis_id |
INT |
primární klíč |
|
zak_id |
INT |
cizí klíč |
|
predmet_id |
INT |
cizí klíč |
|
skolni_rok |
VARCHAR(9) |
|
|
datum_zapisu |
DATE |
Vytvoř dvě relace: zapis.zak_id → zak.zak_id a zapis.predmet_id → predmet.predmet_id. Mezi zak a predmet nevytvářej přímou relaci.
Obr. 3 – Vzor výsledku: vztah M : N mezi žákem a předmětem přes spojovací tabulku zapis.
Na diagramu vzniknou dvě relace 1 : N – ŽÁK 1 : N ZÁPIS a PŘEDMĚT 1 : N ZÁPIS. Dohromady tím získáme vztah ŽÁK M : N PŘEDMĚT.
Jak vytvořit relaci v diagramu
Propoj cizí klíč s odpovídajícím primárním klíčem. Propojovaná pole mají mít kompatibilní datový typ. Například zak.trida_id a trida.trida_id používají INT.
|
Kontrola: U každé spojovací čáry ověř, zda značky 1 a N odpovídají zadání. U prvního diagramu musí být 1 : 1, u druhého 1 : N. |
Co má být hotové
|
Diagram |
Tabulky |
Výsledná relace |
|
1 |
student + studentska_karta |
1 : 1 |
|
2 |
trida + zak |
1 : N |
|
3 |
zak + zapis + predmet |
M : N přes zapis |
Kontrola před odevzdáním
· Všechny tabulky mají správný název.
· Pole mají správný název a datový typ.
· Každá tabulka má primární klíč.
· Cizí klíče jsou ve správných tabulkách.
· Diagram 1 obsahuje relaci 1 : 1.
· Diagram 2 obsahuje relaci 1 : N.
· Diagram 3 používá spojovací tabulku zapis a představuje vztah M : N.
· Tabulky jsou rozmístěny přehledně a spojovací čáry se zbytečně nekříží.
Na závěr exportuj každý hotový diagram jako PNG obrázek.
Po cvičení bys měl umět vysvětlit
|
Otázka |
Odpověz vlastními slovy |
|
1. |
Co je primární klíč? |
|
2. |
Co je cizí klíč? |
|
3. |
Jaký je rozdíl mezi relací 1 : 1 a 1 : N? |
|
4. |
Proč potřebujeme u vztahu M : N spojovací tabulku? |
Důležité: cílem není diagram pouze okopírovat, ale pochopit, proč jsou tabulky propojené právě tímto způsobem.