Transformácia ERM do RM a vytvorenie SQL skriptu

Ciele

  1. Transformácia entitno-relačného modelu na relačný dátový model.
  2. 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.

ER model študentov zapisujúcich sa na predmety
Obr. 1: ER model študentov zapisujúcich sa 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.

Relačný model databázy Chinook
Obr. 2: Relačný model 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

  1. Chinook
  2. Entity to Relation Conversion
  3. When to apply normalization in database design
  4. SQL skript na vytvorenie a naplnenie databázy
  5. Prednáška 05: Modifikácia údajov
  6. Prednáška 06: SELECT

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:

Relačný model databázy Podnik
Obr. 3: Relačný model databázy Podnik