2. Példa - Egyszerűsített egyetemi
hallgatói rendszer
Relációsémák
(2.Példa)
TANSZEK(TSZAZON,
TSZNEV, WEBLAP)
TANTARGY(TKOD,
MEGNEV, KREDIT,
EA_OSZAM, GYAK_OSZAM, AJANL_FELEV, FELELOS)
ahol FELELOS=TANSZEK.TSZAZON melyik tanszék felelős a tantárgyért
ELOFELT(TARGY, ELOFELTETEL)
ahol TARGY és ELOFELTETEL is TANTARGY.TKOD
OKTATO(EAZON,
NEV,
LAKCIM,
BELEP_DATUM, STATUSZ,
FIZETES, DOLGOZIK)
ahol DOLGOZIK=TANSZEK.TSZAZON melyik tanszéken dolgozik
és STATUSZ pl.
’docens’, ’tanár’,
’PhDhallg’,
’demonstrátor’, stb.
HALLGATO(EAZON,
NEV,
LAKCIM,
BELEP_DATUM, SZAK,
ODIJ,
TANDIJ, TUTOR)
ahol
TUTOR=OKTATO.EAZON vagyis a
hallgatónak van egy „tutor”
tanára
TANREND(CIKLUS,
HIRDKOD, EA_V_GYAK,
TEREM, IDOPONT, TKOD, OKTATOAZON)
TANREND
tábla kulcsa összetett: primary key(CIKLUS,
HIRDKOD),
ahol pl. CIKLUS=
’2007-2008-2’(2007-2008 tanév 2.
féléve) és
HIRDKOD a
hirdetési kód (lehet előadás vagy
valamelyik
gyak.csop.)
TKOD=TANTARGY.TKOD
melyik kurzust hirdették meg az adott ciklusban,
OKTATOAZON=OKTATO.EAZON ki
tartja az órát (egy oktató
azonosítója).
EINDEX(CIKLUS, HIRDKOD, EAZON,
DATUM, JEGY,
JEGYTIP)
ahol
(CIKLUS,HIRDKOD)=(TANREND.CIKLUS, TANREND.HIRDKOD)
vagyis melyik cilusban melyik
meghirdetett
tárgyat vette fel,
EAZON=HALLGATO.EAZON (és ki vette fel, a hallgató
azonosítója),
JEGYTIP pl.
’gyak.jegy’, ’vizsga’,
’UV1’,
’UV2’,
stb.
EINDEX táblanév
(elektronikus) egyetemi index, vagyis a leckekönyv.
>> E/K modell: pelda2EK.pdf
>>Megvalósítás:
SQL DDL (a
táblák és
megszorítások létrehozása)
és DML (a
táblák
feltöltése a
megszorításokat kielégítő
adatokkal)
HF_cATP 6.gyak-ra
a táblák és
megszorítások létrehozása
és a táblák
feltöltése
a
megszorításoknak eleget tevő adatsorokkal: drop table, create table, insert
ZH_cATP 7.gyak-on ezeknek a tábláknak
a lekérdézéséből írunk gépes
ZH-t.
"Súgó" a HF megoldáshoz:
1. A leképezéshez
segítségként az E/K
diagramban csupa nagy betűvel
van szedve, amiből tábla lesz,
és kicsivel, ami beolvad más
táblába.
2. A create table tanrend ... utasításban
összetett elsődleges kulcsot
kell definiálni, de egy
táblában csak
egyetlen primary key lehet,
ezért mivel a
kulcsmegszorítás
több oszlopra vonatkozik, azt nem
az oszlopdefinicióknál kell
megadni, hanem
táblamegszorításként:
PRIMARY KEY ( <column expression>
{, <column
expression>}... )
a szintaxis, amibe be kell
helyettesíteni a megfelelő
oszlopneveket.
3. A másik create table eindex ...
utasításban a külső kulcs az lehet,
ami a hivatkozott táblában
kulcs volt, pl. a
hallgato tábla eazon kulcsa,
de a másik tanrend táblanak
az összetett
kulcsára való hivatkozás
megint több oszlopra vonatkozik, vagyis
megint nem oszlop-,
hanem
táblamegszorításként kell
megadni:
FOREIGN KEY ( <column expression>
{, <column
expression>}... )
REFERENCES <table identifier> [ (
<column
expr> {, <column expr>}... ) ]
a szintaxis, be kell helyettesíteni a
megfelelő
tábla- és oszlopneveket.
4. Az insert... utasításnál arra kell
figyelni, hogy olyan adatsorokat
vigyünk fel a
táblákba, amelyek eleget
tesznek a create table ...
utasításban megadott
megszorításoknak.