Informatika 2 - Adatbázis tervezés labor
Ez az oldal az Informatika 2 című tárgy - Adatbázis tervezés labor beugrókérdéseinek kidolgozását tartalmazza.
Jelenleg még elég hiányos a kidolgozás, továbbá évről évre kismértékben változhatnak beugrókérdések. A tanszéki honlapról mindig elérhető az aktuális mérési útmutató, mely az aktuális beugrókérdéseket tartalmazza.
Kérlek szerkesszétek, aktualizáljátok!
Pár alapfogalom:
- Egyed (entitás): valami dolog, aminek vannak számunkra érdekes tulajdonságai, illetve kapcsolatai. Jelölése: téglalap.
- Attribútum: valami tulajdonságai valamelyik (esetleg több) egyednek. Jelölése: szimpla vagy dupla körvonalú ellipszis.
- Kapcsolat (reláció): valami összefüggés két egyed közt, pl. egy autó és egy ember típusú entitás közt lehet "tulajdonosa" kapcsolat, vagy "az ezt gyártó cég igazgatója" kapcsolat, vagy "ő törte össze" kapcsolat, vagy akár ezek mind. Jelölése: rombusz.
- Kulcs: egy egyed egyedi azonosítója. Pl. egy alkatrész egyedi azonosítója lehet a gyári száma, egy emberé pedig szimplán egy sorszám, amit automatikusan kioszt neki az adatbázisengine, mikor bekerül a táblába.
- Idegen kulcs: ha egy egyed táblájában van olyan oszlop, ami egy másik egyed azonosítója (pl. az embernek van olyan attribútuma, hogy "az irodájában lévő gép gyári száma"), akkor ezt idegen kulcsnak hívjuk (mert kulcs, de nem a saját táblájában)
A fenti alakzatok közt összeköttetések is vannak: az egyedek attribútumai hozzá vannak kötve az egyedhez, azok az attribútumok, amik egy összetett attribútum (lásd 1. kérdés) részei, pedig ahhoz, aminek a részei (pl. "irányítószám" a "cím"-hez). A kapcsolatok rombusza hozzá van kötve a két entitáshoz, ami kapcsolatban van; ezek a vonalak az entitásoknál többféle módon végződhetnek.
Két fontos dolog: az, hogy mi lehet entitás, és mi attribútum, az függ a konkrét feladattól. Pl. egy szám az jellemzően attribútum, de egy prímkereső projekt adatbázisában lehet entitás, ahol tárolják, hogy mit derítettek eddig ki róla. A másik dolog, hogy a ábrán igazából dolgok egy csoportját jelölik az egyedek, és két egyed kapcsolata azt jelenti, hogy a két csoportból származó dolog közt van a kapcsolat. Pl. az ábrán nem az fog megjelenni, hogy Kiss Józsika az IBM-nél dolgozik, hanem hogy az "ember" osztály és a "cég" osztály tagja közt létezik egy "ott dolgozik" kapcsolat. Ezek az ábrák ugyanis adatbázisok szerkezetét írják le, és semmit nem mondanak a tartalmukról.
Mi a különbség az egyértékű és többértékű attribútum között? Miképp jelöljük őket az E/K diagramon?
Egyértékű attribútumnak csak egy értéke van, pl. "állampolgár" egyed "személyi igazolvány szám" attribútuma egyszerre csak egy értéket vehet fel. Jelölése: szimpla vonalas ellipszis. Többértékű attribútumnál lehet több is, pl. "ember" entitás "gyerekeinek életkora" attribútuma tartalmazhat egyszerre több értéket is, ha több gyereke van az illetőnek. Jelölése: dupla vonalas ellipszis.
Mi a különbség az egyszerű és összetett attribútum között? Miképp jelöljük őket az E/K diagramon?
Az egyszerű attribútum (valamilyen értelemben) oszthatatlan egység, míg az összetett az részekre bontható. Pl. egy szimpla szám az oszthatatlan (mivel általában nincs gyakorlati jelentősége egy bitjének vagy számjegyének, csak az egésznek együtt), de egy címnek az egyes részei (ország, irányítószám) külön-külön is használhatóak lehetnek. Az egyszerű és összetett attribútumokat is ellipszis jelöli, szimpla vagy dupla körvonallal (lásd 1. kérdés).
Mit értünk egy-egy kapcsolat alatt? Miképp jelöljük őket az E/K diagramon?
Két entitás úgy áll kapcsolatban, hogy mindkettőből legfeljebb egy lehet. Pl. az "ember" és "személyi igazolvány szám" entitások "ez a szám az övé jelenleg" kapcsolata egy-egy kapcsolat, mert egy embernek csak egy aktuális szig. száma lehet, és egy szám csak egy embernek lehet kiosztva. Viszont, lehet olyan ember, akinek épp nincs szig. száma (pl. le van járva az igazolványa), és lehet olyan szám, ami senkinek nincs éppen kiosztva. Viszont ugyanezen entitások "ő adminisztálta a szám kiadását" kapcsolata már nem egy-egy kapcsolat: egy-egy okmányirodai ügyintézőhöz több szám is kapcsolódhat. Tehát két entitás közt lehet több kapcsolat is, és lehet, hogy az egyik ilyen, a másik olyan típusú, és csak a két entitás ismeretében nem eldönthető, milyen a típus, ha a kapcsolat nem ismert. Jelölése: rombusz, ami szimpla vonallal össze van kötve a két egyeddel.
Mit értünk egy-több kapcsolat alatt? Miképp jelöljük őket az E/K diagramon?
Az egyik entitáshoz több is kapcsolódhat a másikból, de a másikból mindegyikhez csak egy tartozhat az elsőből. Pl. az "ember" és "autó" egyedek közt a "tulajdonosa" kapcsolat ilyen: egy embernek lehet több autója (vagy lehet, hogy egy sincs neki), de egy autónak egyszerre csak egy tulajdonosa lehet (vagy lehet, hogy az országút szélén rozsdásodik, és nincs egy tulajdonosa sem). Jelölése: rombusz, ami szimpla vonallal van összekötve azzal az egyeddel, amelyikből csak egy lehet, és "csirkelábbal" azzal, amelyikből több.
Mit értünk több-több kapcsolat alatt? Miképp jelöljük őket az E/K diagramon?
Az egyik entitáshoz kapcsolódhat több is a másikból, és a másikhoz is több kapcsolódhat az elsőből. Pl. "ember" és "cég" közti "volt munkahelyek" kapcsolat ilyen: egy embernek lehet több volt munkahelye, és egy cégtől létezése óta kiléphetett már több dolgozó. Jelölése: rombusz, ami "csirkelábbal" van összekötve mindkét egyeddel.
Mire szolgálnak az összekapcsoló entitások? Miképp jelöljük őket az E/K diagramon?
A több-több kapcsolatok az adatbázisokban nehezen kezelhetőek, ezért ezeket helyettesíteni szokták két egy-több kapcsolattal és egy összekapcsoló entitással. Pl. az előző példában a több-több kapcsolat helyett létrehozunk egy "néhai munkaviszony" egyedet, ami egy-több kapcsolatban fog állni az emberrel és a céggel is. Jelölése: a több-több kapcsolat rombuszára rárajzolunk egy téglalapot.
Hogyan képezzük le az egy-egy kapcsolatot relációs adatmodellre?
Az egyik egyed táblájában a másik kulcsa "idegen kulcs" lesz.
Hogyan képezzük le az egy-több kapcsolatot relációs adatmodellre?
A "több" oldalon lévő egyed táblájában idegen kulcs lesz az "egy" oldalon lévő egyed kulcsa.
Hogyan képezzük le a több-több kapcsolatot relációs adatmodellre?
Először az összekapcsoló entitások segítségével (lásd 6. kérdés) egy-több kapcsolatokká alakítjuk, így pedig már a 8. kérdés válasza szerint lehet.
Írjon SQL utasítást mely, létrehoz egy táblát, aminek két oszlopa van és az első oszlopa a tábla elsődleges kulcsa!
CREATE TABLE sometable ( id INT PRIMARY KEY, name VARCHAR(100) )