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.

Lap tetejére        Vissza a példákhoz      
dr. Hajas Csilla, ELTE, IK
E-mail: sila@inf.elte.hu

 Kezdőlapra