Adatbázisrendszerek I.
Készítette: Rádai Levente G-202i

Dátum: 2000. ápr. 27.

Vizsga adminisztrációs adatbázisa

 
 
 

A feladat leírása, egyedek, kapcsolatok leírása:

A feladat egyetemünkön félévek végén az egyes tárgyak lezárására szolgáló vizsgák adatainak, és a rájuk jelentkező hallgatók adminisztrálása. Nyilvántartja a vizsgák tárgyát, típusát, helyét, idejét, a vizsgák helyéül szolgáló termek helyét, férőhelyének számát, a vizsgát tartó tanárok nevét, azonosítóját, beosztását, szobaszámát, a hallgatók nevét, azonosítóját, tankörét, jelentkezését. Segítségével lekérdezhető, mely tantárgyakból hol, mikor, ki milyen vizsgát tart, vagy tartott, és arra kik jelentkeztek, van-e még hely jelentkezők számára, és egy adott időpontban mely termek mely vizsgák részére hány fővel (max. fő) van lefoglalva, vagy szabadok még újabb vizsgák tartására. A termekről vezetett nyilvántartás segítségével esetleges összevonások is szervezhetők. Tanárok csak akkor kerülnek be a nyilvántartásba, ha vizsgát szándékszanak tartani, ugyanígy a hallgatók is csak akkor, ha jelentkeznek valamelyik vizsgára. Viszont a termek listája teljes egészében benne van az adatbázisban, hogy könnyebb legyen vizsgához megfelelőt választani. Az adatbázis feladata ebben ki is merül, azt már nem tartja számon, hogy a jelentkező elment-e, és milyen eredménnyel szerepelt. Ezen dolgok már nem publikusak a tanárok és a hallgatók előtt, és a tanulmányi osztály úgyis számon tartja egy másik adatbázisban.
 
 

Egyedek definíciói, tulajdonságaik:

Vizsga: A modell fő egyede: erre a vizsgára jelentkeznek a hallgatók, ezt tartja a tanár, és ehhez foglal termet az ezzel megbízott személy: tanár, gyakvezér, tanszéki adminisztráció (a modell szempontjából lényegtelen). (Az előbbi mondatban dőlten szedve a modell leendő kapcsolatai szerepeltek.)

Az egyed tulajdonságai:

Tanár: Aki a vizsgát tartja.

Az egyed tulajdonságai:

Terem: ahol a vizsga lesz. Lehet az egy tanár szobája is bizonyos esetekben, ekkor a terem száma megegyezik egy szobaszámmal.

A teremnek van:

Hallgató: aki a vizsgára jelentkezik.

Van:

E/R modell:
 
 

Kapcsolatok:

Vizsgát tart: Kötelező jellegű, mert ha a tanár kitűzte a vizsgát, akkor a ?vizsgát meg is kell tartania?, vagyis tanár nélkül nincs vizsga.

Egy vizsgán több tanár is megjelenhet felügyelni (és nem feltétlenül azok, akik értékelni fognak - írásbeli esetén), és az adott alkalommal ugyanaz a tanár több vizsgát is tarthat ,ha más-más tantárgyakból, vagy más-más típusút ugyanazon tantárgyból tart.

Teremfoglalás: Kötelező jellegű, mert valahol lennie kell a vizsgának.

Egy vizsga általában csak egy teremben van, de egy teremben lehet több vizsga is, ha ugyanazon tanár több tárgyból és/vagy többféle vizsgát tart, vagy ha különböző vizsgák tanárai erről megegyeznek.

Jelentkezés: Nincs kötelező jellege, mert egy kiírt vizsgára nem kötelező a hallgatónak elmenni.

Egy vizsgára több hallgató is jelentkezhet (normális esetben), és egy hallgató több vizsgára is jelentkezhet, a gyakorlat szerint ugyanazon napra eső vizsgákra is.

Tulajdonságai:









IFO modell:
 
 

Konverzió:







Relációs adatmodell:
 
 

A relációs adatmodell létrehozása a megadott szabályokat követi:







Normalizálás:
 
 

Először meg kell vizsgálni a függőségeket:







Első normálforma: mező atomisága és kulcsmező létezése

Az atomiság teljesül mindegyik táblára, mert a konverziónál a többértékű vizsga típusa mező új formában tárolja az értékeket (lásd: relációs adatmodell), az összetett vizsga ideje mező dátum és kezdési idő mezőkre, a terem helye mező pedig épület, emelet, ajtó mezőkre esett szét. Kulcsmező mindegyik táblában van, és ezekből indulnak ki a függőségek, kivéve a Tart és Jelentkezés táblában:

Mindezek után így néz ki a modell:

Második normálforma: teljes kulcsból, ne pedig részkulcsból induljanak ki a függőségek:

Részkulcsok a Tart és Jelentkezés táblában vannak, de ezekből nem indul ki függőség, csak a teljes kulcsból..

Harmadik normálforma: ne legyen tranzitív függőség:

Nincs tranzitiv függőség.
 

Így már nekieshetünk az SQL megvalósításhoz. A SELECT-ek:

1. Irassuk ki a tantermek es az eloadok atlagos ferohelyeinek szamat a Miskolci Egyetemen!
2. Irassuk ki, hogy kik jelentkeztek mar fizika vizsgara (ElDinOpt+MechHotan-eltolt)!
3. Irassuk ki, hogy hol van a XXX-as eloado!
4. Modositsuk Raisz Peter beosztasat docensre!
5. Irassuk ki mikor vizsgaztat Fegyverneki!

Es a megoldasok:

1. CREATE VIEW KOD AS SELECT VIZSGA FROM TART WHERE TANAR=(SELECT LOGIN FROM TANAR WHERE NEV='FEGYVERNEKI SANDOR');
SELECT DATUM, SZAK, TARGY FROM VIZSGA, KOD WHERE ID=VIZSGA;
DROP VIEW KOD;

2. UPDATE TANAR SET BEOSZTAS='DOCENS' WHERE NEV='RAISZ PETER';

3. SELECT HELYE FROM TEREM WHERE MEGNEV='XXX. ELOADO';

4. CREATE VIEW VID AS SELECT ID FROM VIZSGA WHERE TARGY IN ('ELEKRODINAMIKA OPTIKA' , 'MECHANIKA ALAPJAI HOTAN' );
CREATE VIEW LOGJel AS SELECT HALLGATO FROM JELENTKEZES,VID WHERE ( VIZSGA=ID and tipus like 'V%' );
SELECT NEV FROM HALLGATO, LOGJEL WHERE HALLGATO=LOGIN;
DROP VIEW VID;
DROP VIEW LOGJEL;

5. SELECT AVG( FEROHELY ) FROM TEREM;