Přejít na obsah

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)


email

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.

V tomto kurzu nejsou povoleny komentáře.