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.