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
ELOFELT(TKOD_ENNEK, TKOD_EZ)
ahol TKOD_ENNEK és TKOD_EZ is TANTARGY.TKOD
OKTATO(EAZON,
NEV,
LAKCIM,
BELEP_DATUM, STATUSZ,
FIZETES, TANSZ) ahol
TANSZ=TANSZEK.TSZAZON,
é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, OKTAT) 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,
OKTAT=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, és
EAZON=HALLGATO.EAZON (és ki vette fel, a hallgató
azonosítója),
és JEGYTIP pl.
’gyak.jegy’, ’vizsga’,
’UV1’,
’UV2’,
stb.
EINDEX táblanév
(elektronikus) egyetemi index, vagyis a leckekönyv. >> E/K modell:pelda2EK.pdf
(jelszóval: pelda2EK.ppt
)
>>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
"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.
Budapest, 2005.
szeptember 5. Utolsó
módosítás: 2008. márc.18.