Ciele
- Transformácia entitno-relačného modelu na relačný dátový model.
- Transformácia reačného modelu na SQL skript vytvárajúci databázu.
Úvod
Cieľom tohto cvičenia je precvičiť si transformáciu entitno-relačného modelu na relačný model používaný v relačných databázových systémoch.
Postup
Krok 1
Na nasledujúcom obrázku môžete vidieť ER model opisujúci študentov a ich zápis na predmety.
Úloha 1.1
Použite vybraný nástroj pre relačné modelovanie na vytvorenie logického relačného modelu pre uvedený ER model zapisovania študentov na predmety.
V rámci transformácie je potrebné určiť primárne kľúče pre vytvorené tabuľky. Pomocou čoho budete vedieť identifikovať napr. študenta? Postačí Vám kombinácia (meno, priezvisko)? Alebo sa hodí viac vytvoriť si umelý primárny kľúč?
V rámci relačného modelu je potrebné určiť údajové typy stĺpcov tabuliek, a ďalšie obmedzenia doménovej integrity. Viete napr. povedať, ktoré atribúty budú povinné?
Všimnite si, že vzťah medzi študentom a predmetom má kardinalitu M:N. Čo to znamená pre relačný model? Ako takýto vzťah vyjadríte?
Všimnite si tiež, že vzťah studies medzi entitnou množinou študent a predmet je vlastne asociatívnou entitou - tento vzťah má aj atribúty. Nesie totiž nie len informáciu, že študent Janko študuje Fyziku, ale zároveň hovorí aj to, v ktorý rok bol na tú Fyziku zapísaný a akú známku vtedy dostal. Pri jeho prevode na to pamätajte, a zároveň zabezpečte, aby ten istý študent mohol v prípade potreby predmet zopakovať.
Krok 2
V tomto kroku si precvičíte používanie DDL časti jazyk SQL na vytváranie databázy.
Úloha 2.1
Použite DDL časť jazyka SQL na vytvorenie databázy zapisovania študentov na predmety tak, aby vytvorený skript (sekvencia príkazov) bol spustiteľný na PostgreSQL databázovom systéme.
Poznámka
Oproti logickému relačnému modelu je potrebné brať ohľad na konkrétny databázový systém a jeho obmedzenia a vlastnosti. Potrebujete určiť konkrétne údajové typy stĺpcov, ktoré sú v PostgreSQL podporované, a taktiež aplikovať pravidlá referenčnej integrity v možnostiach, ktoré Vám ponúka PostgreSQL.
Samozrejme, že na tejto úlohe môžete pracovať iteratívne. Začnite jednou tabuľkou a skúste ju vytvoriť správne. Ak urobíš nejakú chybu (napr. uvediete nesprávny údajový typ), môžete použiť príkaz ALTER TABLE, ktorým je možné modifikovať štruktúru databázy (alternatívou je zmazanie tabuľky a jej vytvorenie nanovo - ak by však v databáze boli nejaké údaje, tak týmto spôsobom by ste o ne prišli).
Vytvorenú databázu si viete prezerať v DataGrip vo svojom pripojení pod priečinkom Tables. Alternatívne viete použiť SQL príkaz pre opis databázy, napr.:
SELECT
table_name,
column_name,
data_type
FROM
information_schema.columns
WHERE
table_name = 'studies';
Krok 3
Na prvom cvičení ste si databázu s názvom menopriezviskochinook naplnili databázovou schémou chinook (aj údajmi), ktorá predstavuje databázu obchodu so skladbami.
Na nasledujúcom obrázku môžete vidieť logickú relačnú schému databázy Chinook.
Úloha 3.1
Preštudujte si relačný model databázy Chinook.
Poznámka
Ak by ste si náhodou databázu zmazali, alebo nejako poškodili, použitím nasledujúceho SQL skriptu ju viete vrátiť do pôvodného stavu: SQL skript na vytvorenie a naplnenie databázy
Zdroje
Doplňujúce úlohy
Úloha A.1
Podnik
Vytvorte v jazyku SQL tabuľku s názvom Podnik, ktorá bude mať nasledujúce stĺpce:
Ev_cislo typu číslo
Priezvisko retazec s maximálnou dĺžkou 15 znakov
Meno retazec s maximálnou dĺžkou 10 znakov
Narodeny typu dátum
Ulica retazec s maximálnou dĺžkou 20 znakov
Mesto retazec s maximálnou dĺžkou 15 znakov (15)
Poc_deti typu číslo
Stav retazec s maximálnou dĺžkou 8 znakov
Mzda typu číslo
Poznámka
Niektoré z nasledujúcich doplňujúcich úloh bude pokračovať na tejto databáze, preto ju nezmažte. Tieto úlohy budú začínať názvom Podnik.
Úloha A.2
Podnik
Vytvorte tabuľku Dovolenka, ktorá bude mať nasledujúce stĺpce (ev_cislo je cudzí kľúč na tabuľku Podnik):
Ev_cislo typu číslo
Rok typu číslo
Dov_celkom typu číslo
Dov_cerpane typu číslo
Úloha A.3
Podnik
Vytvorte tabuľku 'ucet', ktorá bude obsahovať informácie pre mzdové oddelenie o osobných účtoch zamestnancov. Tabuľka 'ucet' má nasledujúce stĺpce:
cislo_transakcie typu číslo
ev_cislo typu číslo
ucet_cislo retazec s maximálnou dĺžkou 10 znakov
banka_cislo retazec s maximálnou dĺžkou 4 znakov
mzda typu číslo
Poznámka
Výsledná schéma databázy podnik by mala vyzerať nasledovne: