Informatika 2 - Adatbázis tervezés labor

A VIK Wikiből


Ez az oldal az Informatika 2 című tárgy Adatbázis tervezés labor beugrókérdéseinek kidolgozását tartalmazza.

Az aktuális segédlet az aktuális (ajánlott) beugrókérdésekkel bejelentkezés után megtalálható a tanszéki honlapon a 3. gyakorlat segédlet címen (2013 tavasz).

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.

FONTOS: Ezektől eltérő kérdések is előfordulhatnak a beugrókban! Ezek csak irányadó kérdések, így ajánlott a segédlet alapos áttanulmányozása is.

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?

Egyértékű attribútumnak csak egy értéke van, pl. "állampolgár" egyed "személyiigazolvá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.

Mi a különbség az egyszerű és összetett attribútum között?

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.

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élyiigazolvá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. lejárt az igazolványa), és lehet olyan szám, ami senkinek nincs éppen kiosztva. Viszont ugyanezen entitások "ő adminisztrá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?

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.

Mit értünk erős entitás alatt?

Erős entitás alatt olyan egyedet értünk, melynek egyedpéldányai létezhetnek önállóan, létezésük nem függ más egyedtől.

Mit értünk gyenge entitás alatt?

Gyenge entitás alatt olyan egyedet értünk, melynek egyedpéldányai önállóan nem, csak egy erős entitáshoz kapcsolódóan létezhetnek.

Mit értünk azonosító kapcsolat alatt?

Azonosító kapcsolatról akkor beszélünk, ha a gyerekrekord nem létezhet a szülő nélkül, tehát gyenge entitás. Ekkor a gyerek többnyire összetett kulcsot kap, melynek része a szülőrekord azonosítója is.

Mit értünk nem azonosító kapcsolat alatt?

Nem azonosító kapcsolatról akkor beszélünk, ha a gyerekrekord létezése független a szülő létezésétől, tehát erős entitás.

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, innentől pedig már az előző kérdés válasza szerint lehetséges a megoldás.

Í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 pelda (
       id INT PRIMARY KEY,
       name VARCHAR(100)
)

Milyen szintaktikájú SQL utasítással lehet létrehozni egy rekordot egy táblában?

Egy rekord beszúrása:

INSERT INTO táblanév (oszlopok listája)
VALUES (értékek listája)

Az oszlopok listája elhagyható, ekkor minden oszlopnak értéket kell adni.

Több rekord esetén:

INSERT INTO táblanév (oszlopok listája)
SELECT...

Itt a select egy lekérdezést hajt végre, és az általa lekérdezett összes sor beszúrásra kerül.

Milyen szintaktikájú SQL utasítással lehet módosítani rekordokat?

UPDATE táblanév
SET oszlopnév=érték1, oszlopnév2=érték2...
WHERE logikai feltétel

Csak azoknál a rekordoknál lesz módosítva az adott oszlopbeli érték, ahol a where feltétel igazra értékelődik ki! A where rész elhagyható, ekkor a tábla összes rekordja módosításra kerül.

Milyen szintaktikájú SQL utasítással lehet törölni rekordokat?

DELETE FROM táblanév
WHERE logikai feltétel

A where után megadott logikai kifejezés teljesülése (=igaz) esetén az adott sor törlődik. A where elhagyható, ekkor a tábla összes sora törlődni fog.

Hogyan lehet vizsgálni egy kifejezés nullitását?

A where feltételben lehet egyedül vizsgálni, a következő módon:

WHERE pelda IS NULL

Miképp működik a like operátor? Milyen joker-karaktereket lehet használni?

kifejezés LIKE string minta

String összehasonlító operátor, a kifejezésben keres a mintának megfelelően, és ha a minta illeszthető a kifejezésre, akkor az operátor igaz értékkel tér vissza. A mintaillesztés case sensitive, a használható joker karakterek:

_: Pontosan EGY tetszőleges karakter helyettesítése
%: Tetszőleges hosszúságú karaktersorozat helyettesítése
": szimpla aposztróf, mivel, a szimpla aposztróf jel önmagában a stringhatároló karakter

Pl.: SELECT * FROM termek WHERE nev LIKE '%er%'

Azon termékek listája, amelyek neve tartalmazza az er karaktersorozatot