15ntibi.web.elte.hu/adatbazis/adatbazis.docx · web view(pl: elte,sote, bme stb…). az egyedhalmaz...

31
Alapfogalmak Információs rendszer: Lehetőséget ad nagy mennyiségű adatok tárolására hardware segítségével, hogy a felhasználók hardware és software segítségével információkat kapjanak a tárolt adatokból. Egyed: A valós világot önállóan létező dolgok alkotják. Ezeket az önálló létű dolgokat az adatmodellezésben egyednek nevezzük. Például egyed az egyetem, jármű, iskolatípus. Az egyed előfordulása egy konkrét érték, pl: ELTE, villamos, Főiskola. Az egyed előfordulásainak összessége az egyedhalmaz (Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés, minden egyed csak egyszer fordul elő. Tulajdonság (attribútum): amivel az egyedet leírjuk, amivel az egyedhalmaz elemei megkülönböztethetőek egymástól. Egy konkrét érték az a tulajdonság előfordulása. Pl: Egyed: egyetem, tulajdonsága pl cím, tulajdonság előfordulása: Szerb utca; Pl2 Egyed: iskolatípus, tulajdonsága: meddig kell tanulni, tul. előford.: 5 év Kapcsolat: Az egyedek vagy tulajdonságaik nem függetlenek egymástól, közöttük különféle viszonyok állnak fenn. Ezeket a fennálló viszonyokat kapcsolatoknak nevezünk. Pl: egyedek: gépkocsi(szín, rendszám, típus), tulajdonos(név,kor,cím). Kapcsolat: melyik kocsi kié. Adatmodell: A valós világ objektumait (egyedek, tulajdonságaik, kapcsolatok) ábrázolását segíti elő, hogy a felhasználó egy átlátható képet kapjon az objektumokról. A valóságot kell tükröznie. Az adatmodellezés célja, hogy a valós információk tárolására kitaláljunk valami olyasféle struktúrát, amiben az adatok információvesztés nélkül tárolhatók, az adatok közti kapcsolatok leírhatók és a struktúra a számítógépes feldolgozás szempontjából hatékony. Az adatbázis-kezelő rendszerek által használt leképezési módot adatmodellnek nevezzük. Az adatmodell a valós világ leképezése valamilyen tárolási struktúrába. Az adatmodell meghatározza a tárolási szerkezetet, mely úgynevezett modellezési alapelemben történik. Ilyen alapelem lehet például a táblázat. Az adatmodellhez szabályok is tartoznak, melyeket a tárolt adatnak az adatbázis élete során mindig ki kell elégíteni. Az azonosítást és kapcsolatleírást szolgáló adatokra vonatkoznak az úgynevezett integritási szabályok, amelyekkel garantálhatjuk az adatbázis hibátlanságát. Más adatokra is előírhatunk az adatmodellben szabályokat, amelyeket megszorításoknak nevezünk. Az adatmodell negyedik részét az adatokon elvégezhető műveletek adják. Az évek során többféle adatmodellt dolgoztak ki, és alkalmaztak a gyakorlatban. A modelljeinket többféle alapmodellre építhetjük. Egy modellt a jelölés rendszerével és műveleteivel definiálhatjuk. Legfontosabb gyakorlatban is előforduló alapmodellek: 1. hálós (történelmi jelentőségű) a. jelölésrendszer: gráf (csomópont-egyed, vonal-kapcsolat) b. műveletek: adat definiáló nyelv c. Az egyed adatait rekordban tárolja, a kapcsolatok leírására kapcsoló mezőkből álló kapcsolórekordot alkalmaz. Mindhárom típusú kapcsolatot képes leírni. 2. hierarchikus (XML (dokumentum leíró nyelv) miatt újra aktuális.) a. jelölésrendszer: faszerkezet (csomópont-egyed, vonal-kapcsolat) b. sok-sok kapcsolat nem írható le, mindenkinek csak 1 szülője lehet. c. műveletek: speciális nyelv d. Az egyed adatait, tulajdonságait logikailag összetartozó adatsorban, úgynevezett rekordban tárolják. A rekordokhoz kapcsolómezőket fűznek, amelyek a rekorddal kapcsolatban álló további rekordokra mutatnak. A modell hátránya, hogy csak 1:1 és 1:N típusú kapcsolatok leírására alkalmas. 3. relációs a. jelölésrendszer: mátrix (=tábla =reláció) b. műveletek: SQL nyelv (relációs algebra műveletei kibővítve) <ember> <nev>Kiss Éva</nev> <kor>35</kor> </ember>

Upload: others

Post on 23-Feb-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

Alapfogalmak

Információs rendszer: Lehetőséget ad nagy mennyiségű adatok tárolására hardware segítségével, hogy a felhasználók hardware és software segítségével információkat kapjanak a tárolt adatokból.

Egyed: A valós világot önállóan létező dolgok alkotják. Ezeket az önálló létű dolgokat az adatmodellezésben egyednek nevezzük. Például egyed az egyetem, jármű, iskolatípus. Az egyed előfordulása egy konkrét érték, pl: ELTE, villamos, Főiskola. Az egyed előfordulásainak összessége az egyedhalmaz (Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés, minden egyed csak egyszer fordul elő.Tulajdonság (attribútum): amivel az egyedet leírjuk, amivel az egyedhalmaz elemei megkülönböztethetőek egymástól. Egy konkrét érték az a tulajdonság előfordulása.Pl: Egyed: egyetem, tulajdonsága pl cím, tulajdonság előfordulása: Szerb utca;Pl2 Egyed: iskolatípus, tulajdonsága: meddig kell tanulni, tul. előford.: 5 évKapcsolat: Az egyedek vagy tulajdonságaik nem függetlenek egymástól, közöttük különféle viszonyok állnak fenn. Ezeket a fennálló viszonyokat kapcsolatoknak nevezünk.Pl: egyedek: gépkocsi(szín, rendszám, típus), tulajdonos(név,kor,cím). Kapcsolat: melyik kocsi kié.Adatmodell: A valós világ objektumait (egyedek, tulajdonságaik, kapcsolatok) ábrázolását segíti elő, hogy a felhasználó egy átlátható képet kapjon az objektumokról. A valóságot kell tükröznie. Az adatmodellezés célja, hogy a valós információk tárolására kitaláljunk valami olyasféle struktúrát, amiben az adatok információvesztés nélkül tárolhatók, az adatok közti kapcsolatok leírhatók és a struktúra a számítógépes feldolgozás szempontjából hatékony.Az adatbázis-kezelő rendszerek által használt leképezési módot adatmodellnek nevezzük. Az adatmodell a valós világ leképezése valamilyen tárolási struktúrába. Az adatmodell meghatározza a tárolási szerkezetet, mely úgynevezett modellezési alapelemben történik. Ilyen alapelem lehet például a táblázat. Az adatmodellhez szabályok is tartoznak, melyeket a tárolt adatnak az adatbázis élete során mindig ki kell elégíteni. Az azonosítást és kapcsolatleírást szolgáló adatokra vonatkoznak az úgynevezett integritási szabályok, amelyekkel garantálhatjuk az adatbázis hibátlanságát. Más adatokra is előírhatunk az adatmodellben szabályokat, amelyeket megszorításoknak nevezünk. Az adatmodell negyedik részét az adatokon elvégezhető műveletek adják.Az évek során többféle adatmodellt dolgoztak ki, és alkalmaztak a gyakorlatban.

A modelljeinket többféle alapmodellre építhetjük. Egy modellt a jelölés rendszerével és műveleteivel definiálhatjuk. Legfontosabb gyakorlatban is előforduló alapmodellek:

1. hálós (történelmi jelentőségű)a. jelölésrendszer: gráf (csomópont-egyed, vonal-kapcsolat)b. műveletek: adat definiáló nyelvc. Az egyed adatait rekordban tárolja, a kapcsolatok leírására kapcsoló mezőkből álló kapcsolórekordot alkalmaz.

Mindhárom típusú kapcsolatot képes leírni.2. hierarchikus (XML (dokumentum leíró nyelv) miatt újra aktuális.)

a. jelölésrendszer: faszerkezet (csomópont-egyed, vonal-kapcsolat)b. sok-sok kapcsolat nem írható le, mindenkinek csak 1 szülője lehet.c. műveletek: speciális nyelvd. Az egyed adatait, tulajdonságait logikailag összetartozó adatsorban, úgynevezett rekordban tárolják. A rekordokhoz

kapcsolómezőket fűznek, amelyek a rekorddal kapcsolatban álló további rekordokra mutatnak. A modell hátránya, hogy csak 1:1 és 1:N típusú kapcsolatok leírására alkalmas.

3. relációsa. jelölésrendszer: mátrix (=tábla =reláció)b. műveletek: SQL nyelv (relációs algebra műveletei kibővítve)c. Az egyedhalmazok és a kapcsolatok adatait, tulajdonságait táblázatokban tárolja, mindhárom kapcsolattípust kezeli.

4. Egyed-kapcsolat modell: Elméleti adatmodell, számítógépes gyakorlati megvalósítása nincs. A modellezési alapfogalmakhoz külön grafikus jeleket rendel, az adatmodell egy grafikus diagram. Mindhárom kapcsolattípust kezeli.

Adatbázis: Egymással valamilyen szempontból kapcsolatban lévő adatok jól szervezett halmaza, mely számítógépen tárolt, és egyszerre több felhasználó is használhatja. Az adatmodellnek megfelelően az adatbázis-kezelő rendszerek az adatokat összefüggéseikben, kapcsolataikkal együtt egyetlen integrált rendszerben, az adatbázisban tárolják.

Adatbázis szintjei:

1. A koncepcionális szint - séma tartalmazza az adatbázisnak a tervezés során létrehozott absztrakt leképezését, az adatmodellt. Ezen a szinten definiáljuk, hogy milyen tárolási alapelemek, például táblázatok tartalmazzák az adatbázis adatait, továbbá azt is, hogy milyen adatok állnak kapcsolatban egymással. A koncepcionális szint tartalmazhat az egyes adatokra vonatkozó előírásokat is, melyeket megszorításoknak nevezünk, és amelyek teljesülését az adatbázis-kezelő rendszer automatikusan ellenőrzi. Ugyancsak automatikusan ellenőrzi a kapcsolatok helyességét, és amennyiben a felhasználó kéri, automatikus kapcsolatmódosítást is végrehajt.

2. A fizikai szint írja le a koncepcionális szint elemeinek fizikai tárolási és elérési rendszerét. A fizikai tárolásnál kerül kialakításra, hogy az egyes adatok milyen lemezen, azon belül melyik cilinderen, sávon és blokkban tárolódnak. Az elérési mód meghatározza az adatok elérési sorrendjét, például fizikai tárolási rendben, közvetlenül, stb. A koncepcionális szint

<ember> <nev>Kiss Éva</nev> <kor>35</kor></ember>

Page 2: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

fizikai szintre történő leképezését általában maga az adatbázis-kezelő rendszer hajtja végre, ebbe a felhasználónak nincs beleszólása.

3. A külső szint - view valójában a valós világnak egy közvetett leképezése oly módon, hogy a koncepcionális szint elemeiből újabb adatbáziselemeket képezünk, amelyeket ugyan megjelenítünk a képernyőn vagy nyomtatásban, de nem tárolunk az adatbázisban. Például az adatbázis két táblázat adataiból létrehozunk egy harmadik táblázatot, amit megjelenítünk, de nem tárolunk. A tárolás felesleges lenne, és többszörös tárolást eredményezne, hiszen a kívánt táblázat az adatbázis két táblázatából bármikor előállítható.

Adatfüggetlenség:

Felhasználói és logikai szint között (A logikai szint megváltoztatása esetén (pl új tábla) mennyire változik a felhasználói szint, mennyire veszi észre a felhasználó. (Az a jó, ha kicsit.) Ha a szerkezetet megváltoztatjuk, az nem vonhatja maga után az összes felhasználói program módosítását, csupán azokét, amelyek miatt a szerkezet megváltoztatása szükségessé vált. Például, ha egy új táblázattal bővítjük az adatbázist, akkor csak azokat a programokat kell módosítani, amelyek az új táblázatot kezelik. Ezt a megoldást logikai adatfüggetlenségnek nevezzük.

Fizikai és felhasználói szint között: A fizikai tárolás és elérési mód megváltoztatásának sem lehet a felhasználói programok módosítását igénylő hatása. Például nem kell a felhasználói programot módosítani, ha új típusú lemezen tároljuk az adatbázist. Ezt a jelenséget fizikai adatfüggetlenségnek nevezzük. Ha a fizikai és logikai adatfüggetlenség is teljesül, akkor adatfüggetlenségről beszélünk.

Page 3: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

Információs rendszer és adatbázis tervezés:

Információs rendszer: Lehetőséget ad nagy mennyiségű adatok tárolására hardware segítségével, hogy a felhasználók hardware és software segítségével információkat kapjanak a tárolt adatokból. Információs rendszer =adatbázis hardware+software.

Adatbázis: Egymással valamilyen szempontból kapcsolatban lévő adatok jól szervezett halmaza, mely számítógépen tárolt, és egyszerre több felhasználó is használhatja.

Információs rendszer tervezése:1. Megvalósítás vizsgálat ( Megvalósítható-e: szabályok, körülmények miatt)2. Követelmények elemzése (Kiknek, minek,elvárások, ezekből dokumentáció készítése)3. Tervezés: párhuzamosan: Háttér tervezés, alkalmazói programok és adatbázis tervezés4. Prototípus megvalósítás, még könnyű változtatni5. Megvalósítás6. Érvényességi vizsgálat, teszt (Azt és jól csinálja-e amit kell)7. Üzembe helyezés

Az adatbázis tervezés:Csak a sémával foglalkozunk, az előfordulással nem. Lépései:

1. Fogalmi tervezés: Milyen egyedekkel foglalkozunk, egyedhalmazok tulajdonságai, kapcsolatok megtervezése. Egyed-Kapcsolati modell, egyed kapcsolati diagram készítése.

2. Logikai tervezés: alap adatmodell, logikai séma választása, Jelölésrendszer választás. Az egyed-kapcsolati diagramot leképezzük pl relációs modellre.

3. Fizikai tervezés: Konkrét adatbázis meghatározása (Oracle,Mysql stb…), Eredménye a fizikai séma. 4. Adatbázis létrehozása: scriptek, utasítások futtatása a logikai séma megvalósítására, majd feltöltése tesztadatokkal, majd

éles adatokkal. Üzembe helyezés.

Modellezési alapfogalmak

A valós világot önállóan létező dolgok alkotják. Ezeket az önálló létű dolgokat az adatmodellezésben egyednek nevezzük. Az azonos fajtájú, közös jellemzőkkel rendelkező egyedek együttese az egyedhalmaz. Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés, minden egyed csak egyszer fordul elő.Az egyedekre és egyedhalmazokra hivatkoznunk kell. Az egyedek azonosítása általában valamilyen egyértelmű jellemzőjükkel történik. Bizonyos esetekben előfordulhat, hogy nem találunk olyan egyedjellemzőt, ami egyértelműen azonosít, ilyenkor mi hozunk létre egy azonosítót. Ennek legegyszerűbb módja az egytől kezdődő, folyamatos sorszámozás.Az egyedek és egyedhalmazok nem függetlenek egymástól, közöttük különféle viszonyok állnak fenn. Két egyedhalmaz között fennálló viszonyt kapcsolatnak nevezünk. Az egyedek közötti viszonyt kapcsolat-előfordulásnak nevezzük. A kapcsolatokat és kapcsolat-előfordulásokat is tudnunk kell azonosítani. A kapcsolatokat megnevezzük egy egyértelmű névvel.A kapcsolat-előfordulásokat a résztvevő egyedek azonosítóival azonosítjuk.A kapcsolatokat kétféle szempont szerint szoktuk osztályozni. Az egyik az úgynevezett típus szerinti osztályozás, amikor is azt vizsgáljuk, hogy az egyik egyedhalmaz egy egyede a másik egyedhalmaz hány egyedével áll kapcsolatban. Ebben az értelemben megkülönböztetünk 1:1, 1:N és N:M típusú kapcsolatokat. Természetesen az is előfordulhat, hogy két egyedhalmaz egyedei között semmilyen viszony nem áll fenn, ez esetben e két egyedhalmaz független egymástól. Az egy-egy (jelölése: 1:1) típusú kapcsolat olyan kölcsönösen egyértelmű viszony, amelyben az egyik egyedhalmaz egyedei a másik egyedhalmazból pontosan egy egyeddel állnak kapcsolatban és viszont. Ilyen típusú kapcsolat például az országok és zászlók közötti kapcsolat. Az egy-több (jelölése: 1:N) típusú kapcsolatban az egyik egyedhalmaz egyedei a másik egyedhalmaz több egyedével vannak kapcsolatban, azonban a másik egyedhalmaz egyedei pontosan egy kapcsolatban szerepelnek. Ilyen típusú kapcsolat áll fenn többek között az anyák és gyermekek között. A több-több (jelölése: N:M) típusú kapcsolatban az egyik egyedhalmaz egyedei a másik egyedhalmaz több egyedével vannak kapcsolatban, és a másik egyedhalmaz egyedei is az első egyedhalmaz több egyedével lehetnek kapcsolatban. Ilyen típusú kapcsolat áll fenn például a kiadók és művek között.A kapcsolat típusát csak a valóság pontos ismeretében lehet meghatározni. Két egyedhalmaz közötti, azonos célú kapcsolat a körülményektől függően más-más típusú lehet.A kapcsolatok másik típusú osztályozása a résztvevők száma alapján történik. Ez alapján megkülönböztetünk egy résztvevős (unáris), két résztvevős (bináris) és három résztvevős (trináris) kapcsolatokat. Természetesen háromnál több résztvevője is lehet egy kapcsolatnak.Az egyedek, egyedhalmazok, kapcsolatok jellemzőit tulajdonságoknak, vagy más néven attribútumoknak nevezzük. A tulajdonságokat egyértelmű névvel látjuk el. A tulajdonságok konkrét adatértékekkel rendelkeznek, melyeket tulajdonság-értékeknek nevezünk.A tulajdonságokat megkülönböztetjük a jellemzőik alapján, az alábbiak szerint:- Azonosító tulajdonság, amely az egyedeket egyértelműen azonosítja, és egyedi értékkel rendelkezik, például személyi szám.- Egyértékű tulajdonság, amely egyetlen adatértékkel rendelkezik, például születési idő.- Többértékű tulajdonság, amely több adatértékkel rendelkezik, például nyelvvizsga.- Egyszerű tulajdonság, amely további tulajdonságokra nem bontható.- Összetett tulajdonság, amely további tulajdonságokra bontható, például cím.- Származtatott tulajdonság, amely más tulajdonságokból meghatározható, például a születési időből az életkor kiszámolható.

Page 4: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

Egyed, kapcsolat, tulajdonság, kapcsolatok osztályzása:

Egyed: A valós világot önállóan létező dolgok alkotják. Ezeket az önálló létű dolgokat az adatmodellezésben egyednek nevezzük. Például egyed az egyetem, jármű, iskolatípus. Az egyed előfordulása egy konkrét érték, pl: ELTE, villamos, Főiskola. Az egyed előfordulásainak összessége az egyedhalmaz (Pl: ELTE,SOTE,BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés, minden egyed csak egyszer fordul elő.Tulajdonság (attributum): amivel az egyedet leírjuk, amivel az egyedhalmaz elemei megkülönböztethetőek egymástól. Egy konkrét érték az a tulajdonság előfordulása.

Pl: Egyed: egyetem, tulajdonsága pl cím, tulajdonság előfordulása: Szerb utca;Pl2 Egyed: iskolatípus, tulajdonsága: meddig kell tanulni, tul. előford.: 5 évKapcsolat: Az egyedek vagy tulajdonságaik nem függetlenek egymástól, közöttük különféle viszonyok állnak fenn. Ezeket a fennálló viszonyokat kapcsolatoknak nevezünk.Pl: egyedek: gépkocsi(szín, rendszám, típus), tulajdonos(név,kor,cím). Kapcsolat: melyik kocsi kié.Kapcsolatok osztályzása:

1. Az egyedek között kapcsolatokat is megfogalmazhatunk (amiknek akár plusz tulajdonságaik is lehetnek). A kapcsolatok típusai: Nincs kapcsolat egy-egy kapcsolat (pl.: ország - főváros) több - egy kapcsolat (pl.: anya - gyerek) több - több kapcsolat (pl.: tanárok - diákok)

relációs adatbázisban a megvalósítása 1 kapcsolótábla, 2db több - egy kapcsolat2. Egy kapcsolat lehet kötelező (pl minden osztálynak kell, hogy legyen oszályfőnöke) és tetszőleges3. Egy kapcsolat létrejöhet 1(rekurzív) 2 vagy több egyedhalmaz között.4. Speciális kapcsolat az öröklődési, Jel A isa B. A részhalmaza B-nek, A örökli B tulajdonságait, de rendelkezhet más

tulajdonságokkal is. Szokás tartalmazási függőségnek is nevezni, pl.:tDiak(Ofo) tTanar(tAzon)Kulcsos megközelítésben, relációs adatbázisban ez idegenkulcsos kapcsolatnak felel meg.

Adatmodellekről

Egyed-kapcsolat modell és diagram

Ez a modell elméleti adatmodell, számítógépes megvalósítása nem létezik, nincs műveleti halmaza, ne épül rá adatbázis kezelő rendszer. Jelentősége az adatbázis-tervezésnél van.A kapcsolatokban szereplő dolgokat a következő jelölésekkel illetjük:

Egyed: egy a külvilág többi részétôl egyértelmûen megkülönböztethetô dolog

- normál egyed: rendelkezik olyan tulajdonságcsoporttal, mely egyértelmûen azonosítja az egyedet. Egy autó például normál egyed, hiszen mind a rendszáma, mind a gyártási száma egyedi azonosítóként szolgálhat. Jele egy téglalap, melynek belsejében az egyedtipus azonosító neve áll:

- gyenge egyed: nincs azonosító tulajdonságrendszere, így más egyedhez fûzôdô kapcsolata szükséges az azonosításához. Elõfordulhat példásul, hogy egy személynek nem tudjuk az azonosító adatait, csak egy nevét és azt hogy egy másik azonosított személynek valamilyen rokona. Így az illetõ egyértelmû kijelöléséhez szükség van a másik ismert személy megadására is. A gyenge egyed grafikus jele a duppla kerettel rajzolt téglalap, középen az azonosító névvel:

- Tulajdonság az egyed egy meghatározott jellemzôje

- egyszerû tulajdonság: egy elemi értékkel leírható tulajdonságot ad meg. A testmagasság például egyszerû tulajdonság, hiszen egy skalár szám elegendõ a megadásához. A hobby ezzel szemben nem egyszerû tulajdonság, hiszen több értékket is felvehet egyidûjeleg az ember egyed eseteén, hiszen egy embernek több hobbyja is lehet. A tulajdonságok ellipszisben adjuk meg, az ellipszis közepébe írva a tulajdonság azonosító nevét. Mivel tulajdonság

Page 5: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

önmagában nem állhat, ezért mindíg meg kell adni, hogy mely egyedhez (vagy kapcsolathoz) kötõdik. A kapcsolódást egy vonallal jelöljük, amely a megfelelõ tulajdonságot és az egyedet köti össze:

 - összetett tulajdonság: olyan tulajdonság, amely több elemi tulajdonság együttesére bontható. Ilyen tulajdonság például a lakcím, amely felbontható a város, útca, házszám, lakásszám elemi adatok együttesére. Az összetett tulajdonságot is ellipszissel jelöljük, melyhez hozzákötjük az illeszkedõ elemi tulajdonságok szimbólumait:

 - kulcs tulajdonság: az egyed egyértelmû azonosítására szolgáló tulajdonság. Az eutó egyed esetén például a rendszám játszhat azonosító szerepet. A grafikonon a kulcstulajdonságot úgy jelöljük ki, hogy a tulajdonság azonosító nevét aláhúzzuk egy folytonos vonallal:

 

- többértékű tulajdonság: olyan tulajdonság, amely nem egy elemi értéket, hanem több elemi értéket, az értékek egy tömbjét vehet fel. Így például a dolgozó egyed képzettség tulajdonságának leírására több elemi értéket is meg lehet adni, hiszen több képzettsége is lehet valakinek. Egy elemi érték egy sztringet jelent. A többértékû tulajdonságot egy duppla keretû ellipszissel reprezentáljuk:

 - leszármaztatott tulajdonság: olyan tulajdonság, melynek értéke más tulajdonságokból vezethetô le, származtatható. Így például egy termék esetén az ÁFA kiszámolható a termék árából és az ÁFA-kulcs mértékébõl. Az E/R modellben egy szagatott vonallal határolt ellipszis a leszármaztatott tulajdonság jele. A grafikonon nem jelöljük, hogy mely más tulajdonságokból és mi módon származtatható az érték:

 

Kapcsolat az egyedek között fennálló viszonyt hordozza.

- 1:1 kapcsolat: a kapcsolatban mindkét egyedtípus elõfordulásai csak egyetlenegy elôforduláshoz rendelõdnek a másik egyedtipusból. Így például nálunk a házasság kapcsolat a férfi és a nõ egyedtipusok között egy-egy jellegû, hiszen egy házasságban egy férfi és egy nõ elõfordulás ker-l kapcsolatba egymással. A kapcsolatot egy rombusszal szokás jelölni, melybe megadják a kapcsolatot leíró azonosító nevet. A négyszög átellenes csúcsaiból egy-egy nyilat húzunk, melyek a kapcsolódó egyedekhez vezetnek.

 

Page 6: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

- 1:N kapcsolat: Annyiban különbözik az elõzõ kapcsolattipustól, hogy az egyik, mondjuk A egyedtípus elôfordulásai több elôfordulással tarthatnak kapcsolatot a másik, mondjuk B típusból, de B egy elôfordulás továbbra is csak egy A elõforduláshoz kapcsolódhat. Az autó és ember kapcsolata a tulajdonosság alapján, példa az 1:N kapcsolatra, hiszen egy autónak csak egy tulajdonosa lehet, de egy ember több autónak is lehet tulajdonosa. A 1:N kapcsolat ábrázolásánál azon egyedbe, melybõl több is kapcsolódhat a másik egyedhez, egy kettõsnyíl vezet. Az autó-ember példa esetén az autó egyedbe kell a dupplanyílnak vezetnie.

- N:M kapcsolat: olyan kapcsolattipus, melyben mindkét egyedtípus elôfordulásai több elôfordulással is tarthatják a kapcsolatot a másik egyedtípusból. Jó példa az N:M kapcsolattipusra a szereposztás kapcsolat a szinészek és a szindarabok között, hiszen egy szinész több szindarabban is játszhat, míg egy színdarabban is több színész szerepelhet. A kapcsolat ábrázolásánál mindkét kapcsolódó egyedbe kettõsnyíl mutat:

 

 - n-ed fokú kapcsolat: a kapcsolatban nemcsak kettõ, hanem n egyed vesz részt. A valóságban ugyan a binér kapcsolat dominál, de elôfordulhat terciel, vagy magasabb fokszámú kapcsolat is. A hártmas kapcsolatra példa a rendelés kapcsolat, melyben a vevõ, a szállító és az árú kapcsolódik össze, hiszen egy rendelésnél egy vevõ, egy megadott terméket rendel egy megadott szállítótól. Az n-ed fokú kapcsolat ábrázolása abban különbözik a binér kapcsolatok ábrázolásától, hogy a rombuszból több nyíl fut ki.

 

 - totális kapcsolat: egy A egyed totálisan vesz részt a kapcsolatban, ha minden egyedelôfordulása az A-nak részt vesz egy kapcsolatelõfordulásban, azaz nincs olyan A-beli egyedelõfordulás, mely nem kapcsolódna a másik egyedtipus valamely elõfordulásához. Ha feltesszük, hogy minden autónak van tulajdonosa, akkor az autó totális kapcsolatban van ez emberrel a tulajdonosi kapcsolatban. Azon egyedek, melyek nem totálisan vesznek részt a kapcsolatban, parciális kapcsolatot alkotnak. Az elõbbi példánál maradva, az ember csak parciálisan vesz részt a tuljadonosi kapcsolatban, mivel lehetnek olyan emberek, akiknek nincs autójuk. A totális kapcsolatban lévõ egyedekhez egy duppla szárú él vezet, míg a parciális kapcsolatnál az eddig is használt egyszeres él vezet:

Tekintsünk egy igen egyszerű példát:

—— —— ——

A dolgozik nevű kapcsolat fejezi ki a két rekord: ember(név, ...) illetve cég(...) viszonyát. (A zárójelekben lévő "..."-ok további attribútumokat jelent(h)e(t)nek.)

Egy-egy kapcsolat—— ——

Page 7: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

Egy bizonyos személy munkahelye számára fontos adatai szerepelnek a dolgozó, személyi adatai pedig az ember nevű tárgy attribútumaiként. Minden egyes dolgozó tárgyhalmazbeli tárgyhoz (esetünkben ez egy személy) egyértelműen létezik egy emberbeli tárgy (szintén személy), és fordítva. Ez egy kölcsönösen egyértelmű megfeleltetés.

Több-egy kapcsolat

—— —

Minden személynek egyértelműen létezik egy édesanyja, de egy anyának lehet több gyereke is. Ez már NEM kölcsönösen egyértelmű megfeleltetés. Sok kapcsolat esetén nyilat használjunk!

Több-több kapcsolat

—— ——

Egy gyerek szülőjének (általában) többen is mondhatják magukat, és egy szülőnek is lehet több porontya.

Pl: Egyedhalmazok és tulajdonságaik:Ország(Név,elnök)

Nézzünk egy testesebb diagramot:

Ebben a példában az ország(név, elnök, ...), cég(név, hely, ...), áru(kód, név, ...) tárgyhalmazokat a termel kapcsolat köt össze. Itt a kulcs a vastagon szedett attribútumok halmaza.

Page 8: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

Relációs adatmodell

A relációs modellben az egyedhalmazok és a kapcsolatok attribútumainak tárolására egy kétdimenziós táblázat szolgál, amelyet szokás relációnak is nevezni. Ennek a táblázatnak a következő tulajdonságokkal kell rendelkeznie:- Minden táblázatnak egyértelmű névvel kell rendelkeznie.- A táblázat minden sorában azonos számú oszlop található.- Két azonos nevű oszlopot a táblázat nem tartalmazhat.- Az oszlopok csak elemi típusú adatokat tartalmazhatnak.- Egy oszlopbeli értékeknek ugyanabból az értékhalmazból kell származnia.- A táblázat egy sorában vagy egy egyed, vagy egy kapcsolat-előfordulás adatai szerepelhetnek.- A táblázatban két egyforma sor nem szerepelhet.- A táblázatban kell lennie egy olyan minimális oszlopkombinációnak (elsődleges kulcsnak), amely a táblázat sorait egyértelműen

azonosítja.-- reláció tulajdonságai :

- van neve- – oszlopainak is van neve- – a relációban az oszlopok száma állandó- – az oszlopok sorrendje tetszőleges azonosítás név alapján- – az egyes oszlopok egy meghatározott halmazból vehetnek fel értéket domain: azonos típusú értékek halmaza- – relációban minden sor különböző- – sorok sorrendje tetszőleges azonosítás nem sorrend, hanem tartalom alapján

– minden cellában egy elemi érték szerepelhet, nem lehet üres nem definiált érték: NULL- – sorok száma változó reláció számossága- – van az oszlopoknak egy olyan kombinációja, amely egyértelműen meghatározza bármelyik sort kulcs: oszlopkombináció- kulcs : - - az az atrribútum(halmaz), amely értékei egyértelműen azonosítják a relációt

– séma szintű definíció, szerkezettől függ- kulcsok fajtái:

- egyszerű kulcs– összetett kulcs: 2 vagy több attribútum alkotja - minimált kulcs: összetett kulcs esetén bármelyik attribútumot vesszük is el belőle, akkor már nem kulcs a legkisebb részhalmaz, ami még azonosít– kulcsjelöltek: minimális kulcsok közül választhatunk– elsődleges kulcs: a kulcsjelöltek közül kiválasztot kulcs, nem lehet NULL– alternatív kulcsok: a kulcsjelöltekből nem elsődleges kulcsként kiválasztott elemek– idegen kulcs: olyan attribútum(halmaz), amelyik egy másik relációban elsődleges kulcsként szerepelt

- hivatkozott reláció: - amelynek elsődleges kulcsára hivatkozunk– hivatkozott táblából nem törölhetek sort, ha a hivatkozó táblában szerepel– nem vehetek fel új idegen kulcsot a hivatkozó táblába, ha a hivatkozottban nem szerepel– hivatkozott táblában módosítás: törlés + bevitel

- hivatkozási integritási szabály: az adatbázisban nem lehet olyan idegen kulcs, melynek értéke ne egyezik meg egy hozzá kapcsolódó elsődleges kulcs értékével

Funkcionális függőség:- milyen kapcsolat van a relációk között- egy reláción beül az attribútumok közötti kapcsolatot vizsgáljuk- funkcionális függőség : egy adott R reláció Y attribútuma funkcionálisan függ az R reláció X attribútumától ha X minden

értéke egyértelműen meghatározza Y értékét- mindig érvényes, nemcsak az aktuális tartalomra- funkcionális teljes függőség : legyen X összetett attribútumhalmaz, Y attribútum funkcionálisan teljesen függ X-től, ha

funkcionálisan függ X-től, de nem függ X egyetlen részhalmazától sem- tranzitív függőség : R reláció Z attribútuma tranzitívan függ X relációtól, ha Z funkcionálisan függ X-től és Y-tól, és Y

funkcionálisan függ X-tőlNormálformák:- 1.NF: ha a relációban minden érték elemi- 2.NF :

- ha 1.NF-jú– és minden olyan attribútuma, amely nem része az elsődleges kulcsnak, funkcionálisan teljesen függ az elsődleges kulcstól (de nemcsak attól)

- 3.NF : - ha 2.NF-jú– és minden olyan attribútuma, amely nem része az elsődleges kulcsnak és funkcionálisan teljesen függ az elsődleges kulcstól, és csak attól (relráció nem tartalmaz tranzitív függőséget)

Page 9: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

Az EE/R modell konvertálása relációs adatmodellre

Egyed

megfeleltethető egy relációnak, a reláció neve megegyezik az egyedtípus azonosító nevével.

normál egyed: mivel van kulcstulajdonsága, ezért a tulajdonságok alkothatják a reláció mezőit, s nincs szükség kiegészítő mezőkre

gyenge egyed: mivel ezen egyedtípus tulajdonságai között nincs olyan, mely egyértelműen azonosíthatná az előfordulásokat, ezért a tulajdonságok önmagukban nem elegendőek a relációhoz, hiszen a relációs modellben minden relációnak léteznie kell kulcs értékének. A gyenge egyedet egy másik, normál egyedhez fűződő kapcsolata azonosít. Tehát úgy lehetne egy gyenge egyedhez tartozó relációban kulcsot létrehozni, hogy a mezők közé bevisszük a meghatározó egyed előfordulás kulcsértékét is. Ekkor már ez a mező együtt valamely más mezőkkel együtt már használható kulcsként. A következő ábra a dolgozókat és gyerekeiket ábrázolja. E modellben a gyerek egy gyenge egye, mivel a dolgozó azonosítja őket egyértelműen.

Tulajdonságok

egy tulajdonság a reláció egy mezőjének feletethető meg

egyszerű tulajdonság: mivel az egyszerű tulajdonság egy elemi skalár értéket vesz fel, ezért megfeleltethető egy mezőnek. A mező neve megegyezik a tulajdonság azonosító nevével.

kulcs tulajdonság: a tulajdonság azonosító szerepét a relációs modellben az integritási feltételekkel lehet kijelölni. A relációs modellben létezik egy olyan integritási elem, mellyel kijelölhető, hogy melyik mezőcsoportot választottuk kulcsnak. A relációs séma megadásakor aláhúzással jelöljük ki a kulcs mezőcsoportot.

összetett tulajdonság: a relációs modell mező szerkezete csak atomi értékeket tárolhat, amely nem bontható fel további részekre, ezért az összetett tulajdonság nem tárolható egy mezőben. Az összetett tulajdonság leképzésére a legegyszerűbb mód, ha felbontjuk az összetett tulajdonságot alkotó elemeire, a felbontást addig végezve, amíg egyszerű tulajdonságokat nem kapunk, s ezeket vesszük be a relációba mezőknek. Természetesen, az elnevezést esetleg módosítani kell, hiszen a relációban minden mezőnek egyedi elnevezést kell kapnia, míg a különböző összetett tulajdonságok esetleg tartalmazhattak azonos nevű komponenseket.

többértékű tulajdonság: Mivel a relációs modellben csak atomi értékeket tároló mezők létezhetnek, ezért, a többértékű mezők közvetlenül nem tárolhatók a relációban. Mivel itt egy mezőhöz egy értékhalmaz tartozna, s a halmazszerkezet a relációkhoz áll közel, ezért az összetett tulajdonságok ábrázolásának szokásos módszere, hogy létrehozunk egy újabb relációt, melybe a tulajdonságértékeket tároljuk le. Mivel így több relációba szétkerülnek az egyedtípus tulajdonságai, külön kell gondoskodnunk, hogy az összetartozó értékeket nyilvántartsuk, ezért ebbe az újonnan létrehozott relációba is bele teszik az egyedtípus kulcsmezőjét, amelynek szerepe, hogy kijelölje melyik egyed-előforduláshoz tartoznak az egyes tulajdonságérték előfordulások. Itt elsőként találkozhattunk a relációs modellezés egyik sajátosságával, hogy a szemantikai tartalom megőrzésére a relációkat szétdaraboljuk több relációra.

Page 10: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

- leszármaztatott tulajdonság: A tulajdonságot normál mezőként be kell hozni a relációba, majd az integritási feltételekkel lehet kijelölni, hogy ez a mező nem közvetlen értékeket tartalmaz, hanem más mezőkből származtatott értékeket. A relációs modellben létezik tehát egy olyan integritási elem, mellyel kijelölhető, hogy melyik mező lesz leszármaztatott. A séma grafikus megjelenítésénél normál mezőként ábrázoljuk a származtatott mezőt is.

Kapcsolatok

a kapcsolatok jelzése a kulcs-kapcsolókulcs párosban tárolt értékek alapján történik

1:1 kapcsolat: mivel ennél a kapcsolattípusnál egy egyed-előfordulás, azaz egy rekord előfordulás, mely a másik egyedtípus egyetlen egy előfordulásához kapcsolódhat, ezért rekord előfordulásonként elegendő egyetlen egy kapcsolóértéket tárolni. Tehát az 1:1 kapcsolat leképzése úgy történik, hogy az egyik rekordot kibővítjük egy új mezővel, mely a kapcsolókulcs szerepét fogja játszani. A mező domainje megegyezik a másik rekordtípus kulcsának domainjével, s értéke azon előfordulás kulcsértékét fogja tartalmazni, mellyel a kapcsolat fennáll. Az így megvalósított kapcsolatnak azonban még van egy szépséghibája, ugyanis a fenti szerkezetben semmi sem akadályozza meg, hogy a kapcsoló kulcsot tartalmazó relációban több rekord előfordulás is ugyanazt az értéket tartalmazza. Ennek megvalósulása egy 1:N kapcsolatot eredményezne, ami ellentmond szemantikai modellben felállított szerkezetnek. Az ellentmondást úgy lehetne megelőzni, hogy nem engedjük meg, hogy egy kapcsolókulcs érték többször is előforduljon. Szerencsére a relációs modell adatintegritási komponense rendelkezik ilyen eszközzel, ugyanis a mezőkhöz rendelhető egy érték egyediséget megszabó feltétel is, így ennek megadása után már nem fordulhat elő ugyanaz a kapcsoló kulcs érték kétszer.

1:N kapcsolat: mivel ennél a kapcsolattípusnál van egy olyan egyed előfordulás, mely a másik egyedtípus egyetlen egy előfordulásához kapcsolódhat, ezért rekord előfordulásonként elegendő egyetlen egy kapcsolóértéket tárolni. Tehát az 1:N kapcsolat leképzése is úgy történik, hogy az egyik rekordot kibővítjük egy új mezővel, mely a kapcsolókulcs szerepét fogja játszani. A mező domainje megegyezik a másik rekordtípus kulcsának domainjével, s értéke azon előfordulás kulcsértékét fogja tartalmazni, mellyel a kapcsolat fennáll. A két egyed közül abba kerül beépítésre a kapcsolókulcs, amelyik a másik egyednek maximum egy előfordulásával kapcsolódik. Ez a megkötés azért szükséges, mert a kapcsolókulcs mező, mint minden más mező, csak egyetlen egy értéket tárolhat. Mivel itt egy kapcsolókulcs érték több rekord-előfordulásban is szerepelhet egy reláción belül, ezért itt nincs szükség külön integritási feltétel definiálására.

N:M kapcsolat: mivel itt mindkét, a kapcsolatban előforduló egyedtípus előfordulásai több másik egyedtípusbeli előforduláshoz is kapcsolódhatnak, ezért minkét kapcsolókulcsnak több értéket kellene felvennie, ami nem megengedett. Így egyik sem tárolható a

Page 11: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

relációban mezőként. A probléma megoldása hasonlít a korábbi modellekben alkalmazott eljárásra, vagyis itt is létrehozunk egy új relációt, egy kapcsoló relációt, melynek minden rekord előfordulása egy konkrét kapcsolatot reprezentál. Ezen új reláció kulcsának a kapcsolatot kell azonosítania, s erre a két kapcsolódó egyed előfordulás kulcsainak együttesét szokták használni. A kapcsoló reláció kulcsa tehát magában foglalja a két kapcsolókulcsot is. Ez a megoldás lehetővé teszi, hogy a kapcsoló relációba mezőként bevegyük azokat a tulajdonságokat is, melyek magát a kapcsolatot jellemzik, s nem csak a kapcsolódó egyedeket.

A tulajdonsággal ellátott kapcsolat bemutatására bővítsük az előző ábrát, úgy, hogy a részvételnél az elért pontszámot is tároljuk. Ez az új tulajdonság ekkor a kapcsolatot reprezentáló kapcsoló relációba fog bekerülni.

n. fokú kapcsolat: mivel a kapcsolat a kapcsolókulcs-kulcs párokon alapszik, ezért ez a megközelítés a binér kapcsolatokon nyugszik. A magasabb fokú kapcsolatok leírására jó megközelítést ad, ha itt is bevezetünk egy kapcsoló relációt, melynek minden rekord előfordulása egy konkrét kapcsolatot reprezentál. Ezen új reláció kulcsának a kapcsolatot kell azonosítania, s erre a kapcsolódó egyed előfordulások kulcsainak együttesét szokták használni. A kapcsoló reláció kulcsa tehát magában foglalja az n darab kapcsolókulcsot is. Ez a megoldás lehetővé teszi, hogy a kapcsoló relációba mezőként bevegyük azokat a tulajdonságokat is, melyek magát a kapcsolatot jellemzik, s nem csak a kapcsolódó egyedeket.

 

totális kapcsolat: a kapcsolat totális voltának letárolása viszonylag egyszerűbb akkor, ha minden egyed előfordulás csak egy kapcsolat előfordulásban szerepel, tehát amikor az egyedhez tartozó reláció tartalmazza a kapcsolatra vonatkozó kapcsolókulcsot. Ekkor a kapcsolat totális jellege azt mondja ki, hogy egyetlen egy előfordulásban sem maradhat a kapcsolókulcs értéke NULL. Ez a megkötés azonban előírható a megfelelő integritási feltétel kiadásával. Ha azonban azon egyed kapcsolata totális, mely több másik egyed-előfordulással is kapcsolatban áll, akkor a feltétel úgy szólna, hogy az adott reláció minden kulcsértékének elő kell fordulnia a másik relációban szereplő kapcsolókulcs értékek között. Ez viszont már egy összetettebb integritási feltétel, melyet csak bonyolultabb

Page 12: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

úton valósíthatunk meg, pl. triggerek segítségével. Még így is olyan problémákkal találkozhatunk, hogy miként kezeljük le azt az esetet, amikor mindkét irányban totális a kapcsolat, s ekkor milyen lehet a rekordok felviteli sorrendje. Ha ugyanis előírjuk, hogy csak akkor vihetnék fel egy új rekordot, ha létezik kapcsolódó rekordja, akkor csak egyidejűleg vihetnénk fel a kapcsolódó rekordokat, amit már nehezebb lenne megoldani.

specializáció, kategória: az EE/R modellből származó két fogalom valójában igen távol áll az alap relációs modelltől. Hiszen ezek a fogalmak is kapcsolatokat írnak le, de nem egyed előfordulások közötti kapcsolatot, hanem típusok közötti kapcsolatot ábrázolnak. Ezért a kulcs-kapcsolókulcs szerkezet nem igazán illik erre a kapcsolatra, hiszen az kizárólag a rekord előfordulások közötti kapcsolatok leírására szolgál. Mivel a relációs modellben nincs megfelelő eszköz a típusok közötti kapcsolatok tárolására, ezért csak egy közelítést alkalmazhatunk a specializáció, kategória jelzésére a kulcs-kapcsolókulcs felhasználásával. Egyik lehetséges módszer, hogy egy leszármaztatott egyedet két relációba szétbontva tárolunk. Ekkor külön relációba kerül az általános rész és külön relációba a speciális rész. A kér rész közötti kapcsolatot pedig egy kapcsoló kulcs segítségével valósítjuk meg. A specializált, leszármaztatott típushoz tehát egy olyan relációt hozunk létre, mely csak a speciális, egyedi tulajdonságok tárolására szolgáló mezőket tartalmazza, illetve emellett tartalmaz egy kapcsoló kulcsot a szülő relációhoz fűződő kapcsolat jelzésére is. Ekkor a specializált egyed összes tulajdonságának kiíratására több relációból kell a mezőket összegyűjteni.

Page 13: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

Adatbázis-kezelő rendszerek tulajdonságai, fogalmak

Az adatbázis-kezelő rendszerek olyan általános célú szoftverek, amelyek lehetővé teszik a valós világ dolgainak számítógépes leképezését, beleértve a különböző dolgok között fennálló kapcsolatokat is. Az adatbázis-kezelő rendszerek kezelik az adatbázist, biztosítják az adatbázis adatainak elérését, biztosítják az adatbázis adatai hibátlanságának megőrzését, és szabályozzák az adatbázishoz való hozzáférést.Az adatbázis-kezelő rendszernek biztosítani kell az adatfüggetlenséget.Az adatbázis-kezelő rendszernek biztosítani kell az adatok védelmét. Ennek érdekében az adatbázis-kezelő rendszerek hozzáférési jogosultságokat definiálnak. A jogosultságokkal egyrészt szabályozhatjuk, hogy mely felhasználók használhatják az adatbázist, másrészt azt is megadhatjuk, hogy az adatbázis egyes elemekhez kik férhetnek hozzá, és milyen műveleteket hajthatnak végre rajtuk.Az adatbázis-kezelő rendszernek gondoskodnia kell az adatbázis hibátlanságáról. Az adatbázisban tárolt adatsorokat az adatok visszanyerésének érdekében egyértelmű, egyedi értékű adattal azonosítják. Az adatbázis-kezelő rendszernek ellenőriznie kell, hogy az azonosító egyedi értékű-e, a kapcsolat leírásánál létező azonosítóra hivatkozik-e. Ha az azonosítót módosítják, a legtöbb adatbázis-kezelő rendszer automatikusan végrehajtja a módosítást minden olyan helyen, ahol az azonosító előfordul, így biztosítva a hibátlan adatbázist.Ha valamilyen előre nem látható hiba folytán az adatbázis megsérül, az adatbázis-kezelő rendszernek képesnek kell lennie a helyreállításra. Ezt úgy érik el, hogy az adatbázisban végrehajtott műveleteket naplózzák. Ez a naplózás azt is lehetővé teszi, hogy bizonyos műveletsorozatot, úgynevezett tranzakciót érvényesítsünk, és visszaállítsuk a műveletsor előtti állapotot.Az adatbázisok többségét egy időben egyszerre több felhasználó kezeli. Ez felvet bizonyos problémákat. Ha egyidejűleg ugyanazt az adatsort több felhasználó is módosítja, hibás adatok keletkezhetnek. Az ilyen és hasonló problémák elkerülése érdekében az adatsort zárolják, azaz nem teszik hozzáférhetővé más felhasználó számára mindaddig, amíg egy megkezdett felújítási művelet be nem fejeződik. A zárolás nem csak adatsor, hanem fizikai összetevők, azaz lap, blokk szintjén is megvalósulhat, de történhet az adatbázis tárolási alapegysége, például táblázat szintjén is.Az adatbázis-kezelő rendszerek az adatbázis kezelését valamilyen adatbázis-kezelő nyelv segítségével biztosítják, melyek három fő részből állnak, az adatleíró, az adatkezelő és az adatfelügyelő nyelvből.

Az adatbázis-kezelő rendszerek napjainkban úgynevezett aktív elemeket használnak. Az aktív alatt itt azt értjük, hogy az adatbázis adott komponense mindig elérhető és készen áll arra, hogy a rendszer végrehajtsa, amikor szükség van rá.Két fajtáját különböztetik meg:- A megszorítások logikai értékű függvények, amelyek által visszaadott értéktől azt várjuk el, hogy igaz legyen.- A trigger egy programkód részlet, amelyik egy esemény bekövetkezésére vár. A lehetséges események például a beszúrás, a

módosítás vagy a törlés. Amikor az esemény bekövetkezik, a megfelelő műveletsorozat végrehajtódik, vagy más szóval kiváltódik (trigger = kivált).

Adatbázis-kezelő rendszerek például a dBASE, Access, Foxpro, MS SQL Server, Oracle, Ingres, Paradox, DB2. Az első négy PC-s adatbázis-kezelő rendszer, míg a többieknek különböző típusú számítógépre fejlesztett változatai léteznek.

Tranzakció kezelésVan néhány fontos szempont, amit az adatbázis-kezelőnek garantálnia kell azok számára, akik az adatbázison műveleteket hajtanak végre. Az adatbázis-kezelők többnyire megengedik a felhasználóknak, hogy egy vagy több lekérdezést vagy módosítást egy tranzakcióba csoportosítsanak. A tranzakció tulajdonképpen olyan műveletek egy csoportja, amelyeket egymás után egy egységként kell végrehajtani.Az adatbázisrendszerek gyakran sok tranzakció egyidejű végrehajtását engedik meg. Annak biztosítása, hogy mindezek a tranzakciók helyesen fussanak le, a tranzakció-kezelő feladata.A tranzakciók helyes lefutásán értjük a következőket:

1. egy elemi egységkén kezeljük => atomiság2. konzisztencia: minden tranzakció köteles az adatbázist konzisztens állapotból konzisztens állapotba vinni3. tartósság: véglegesített, kommitált tranzakció eredménye tartósan beíródik az adatbázisba, nem visszacsinálható4. függetlenség: párhuzamosan futó tranzakciók nem lehetnek hatással egymásra. Minden tranzakció más futó tranzakcióktól

függetlenül hajtódik végre5. sorba rendezhetőség: egy tranzakció akkor fut le jól, ha a kapott eredmény az, amit akkor kapnánk, ha a tranzakció egyedül

futna le, és nem párhuzamosan a többivel. A párhuzamosan futó tranzakciókat mindig sorrendbe lehet helyezni. Több tranzakció párhuzamos futásának az eredménye akkor és csak is akkor helyes, ha ugyanahhoz az eredményhez vezet amit, akkor kapnánk, ha valamilyen sorrendben, egymás után futtatnánk le őket.

A tranzakció-kezelő az összes megkezdett tranzakciót, a tranzakciók által az adatbázisban végzett módosításokat, és a tranzakciók végét feljegyzi egy naplóba. A napló mindig olyan tárolóeszközökre íródik, ami nem érzékeny az esetleges áramkimaradásra. Ilyenek például a lemezek. Ezért noha a tranzakció a munkájának egy részéhez a sokkal érzékenyebb memóriát használja, a napló minden esetben azonnal lemezre íródik. Az összes művelet naplózása fontos szerepet játszódik a tartósság biztosításában.A tartósság és az atomosság érdekében a tranzakciók egyfajta „puhatolózás” jelleggel kerülnek végrehajtásra, ami azt jelenti, hogy az adatbázisbeli módosítások kiszámításra kerülnek, de ténylegesen az adatbázisban még nem történnek meg. Amikor a tranzakció készen áll a befejezésre, arra, hogy érvényesítse az elvégzett munkát, a módosítások a naplóba kerülnek. Először ezek a naplóbejegyzések íródnak lemezre, és csak ezután történik meg az adatbázis tényleges módosítása.

Az adatbázis konzisztenciája (ellentmondásmentes, következetes): Ha eleget tesz az adatbázis meghatározott integritási szabályainak.

Page 14: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

Integritási szabályok:Olyan követelmények, igények az adatbázis felé, amelynek az adatbázis előfordulások minden időpillanatában eleget kell, hogy tegyen Az integritási szabályok célja az adatbázis előfordulások lehetséges, megengedett körének behatárolása. Az integritási szabályok tehát az adatbázisban lévő adat előfordulásokra adnak megszorításokat. Az integritási szabályokat csoportosíthatjuk aszerint, hogy milyen szinten fogalmazzák meg a megkötéseket.

- Relációs integritási szabályok: séma definíciójakor adjuk meg.CREATE TABLE (… NOT NULL) -> implicit integritási szabály, mindig kell, hogyértéke legyen. (A relációszintű ellenőrzéshez a teljes relációt, azaz több rekord előfordulást is át kell vizsgálni. Az a megkötés például, hogy a mezőben ugyanaz az érték nem fordulhat elő többször a relációban, csak úgy ellenőrizhető, ha ismerjük a relációban tárolt összes mezőértéket. Így e egyediséget előíró feltételt relációszintű integritási feltételnek tekintjük. A relációszintű ellenőrzési feltétel megfogalmazódhat egy aggregációs értékre vonatkozó megkötésben, például, amikor előírjuk, hogy az autók átlagéletkora nem lehet 12-nél több.)

- Domain típusú: A domain szinten egy mezőre vonatkozó érték előfordulások körét lehet megadniPl CREATE TABLE JEGY INT NOT NULL CHEK JEGY (1..5) (valahogy így) 6-ost nem lehet beírni

- Referenciál (hivatkozási) integritási szabály: Azt fejezi ki, hogy az adatbázisban nem lehet olyan idegen kulcs, melynek értéke nem egyeik meg a hozzá kapcsolódó idegen kulcs értékével.

- Egyéb: az üzleti szabályokat foglalják magukba, az alkalmazástól függő.Ezeket megadhatjuk: triggerek, rule, constraint segítségével.Rule: ugyanaz, mint a constraint pl: CREATE RULE…Triggerek: utasítások sorozata, eljárás vagy script, mely az adatbázisban tárolt és a trigger részére definiált esemény bekövetkezésekor mindig automatikusan végrehajtódik.

Esemény: - INSERT- DELETE- UPDATE

Pl: idegen kulcs definiálásakor automatikusan létrejön update trigger: mindiglefut és ellenőrzi, hogy nem sért-e valamilyen szabályt.

Ajánlott, hogy az összes üzleti szabályt adjuk meg adatbázis szinten az integritásiszabályok segítségével.

Közös erőforrások osztott használata:

Technikák:1. Zárolás(nem ez a legfejlettebb)

Amikor egy tranzakció az adatbázis valamelyik elemét használni kívánja, akkor azt zárolja, magához köti, megfogja, amíg ő ezt használja, más tranzakció nem érheti el!LOCKUNLOCKKülönböző egységeket zárolhatunk, ezek lehetnek kisebbek, vagy nagyobbak => zárolás szemcsézettség:

- durva: zárom (zárolom) a teljes táblát- közepes ez a beállítás az adott- finom: 1-1 sor, néhány adat feladattól függ!

Következmények: tranzakciók várakoznak

2. TípusaiSHARED (osztottan): csak olvasásraExkluzív (kizárólagos)

DCL:Begin: - abort vagy commit fejezheti be4AbortCommitLOCK ez is adatvezérlő, de nem minden rendszerben

Tranzakciók izolációs szintjei

Page 15: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

READ UNCOMMITTED. Olvasás érvényesítés nélkül. Ez a legalacsonyabb szint, ahol a tranzakciók csak annyira vannak egymástól elválasztva, hogy fizikailag hibás adatot ne olvassanak. Lehetőség van tehát beleolvasni egy tranzakcióban részt vevő táblába annak érvényesítése előtt. Így előfordulhat, hogy olyan adatot olvasunk, amit már megváltoztattak, vagy kitöröltek. Előnye, hogy rendkívül gyors, ám ugyanannyira veszélyes is. Például egy tranzakció megváltoztat egy sort. Eközben egy másik tranzakció elolvassa a megváltoztatott sort. Ha most az első tranzakció ROLLBACK-kel visszagörgeti a változtatásokat, a második tranzakció olyan adatok birtokában van, amely logikailag sohasem létezett (dirty read).

READ COMMITTED. Más tranzakciók csak már érvényesített változtatásokat láthatnak. A változtatás alatt álló sorokhoz csak a saját tranzakció férhet hozzá, de más sorokba bele lehet módosítani a tranzakció lezárása előtt. Így az előbb említett dirty read probléma már nem áll fent, előfordulhatnak azonban további érdekes esetek. Ha egy tranzakció egy sort két alkalommal is elolvas, és a két olvasás között azt egy másik tranzakció módosítja, a két érték különböző lesz (nonrepeatable read). Egy tranzakció elolvashat egy sort, ami nem is létezik, ha azt egy másik tranzakció beszúrja (INSERT), mielőtt az első tranzakció véget érne. Ez az úgynevezett fantom probléma (phantom). Ez az alapértelmezett izolációs szint.

REPEATABLE READ. Az érintett sorokra zár kerül a tranzakció végéig, tehát más tranzakciók abba nem módosíthatnak bele, de fantom sorok így is keletkezhetnek, mert a táblába adatot beszúrni továbbra is lehet. Az a fajta izoláció a párhuzamos végrehajtást már erősen korlátozhatja, ezért csak indokolt esetben használjuk!

SERIALIZABLE. Az egész adathalmaz zár alá kerül, amíg a tranzakció tart, abba sem beszúrni, sem módosítani nem lehet. Ez a legerősebb megszorítás, és a leglassabb is egyben.

Az izolációs szint beállítása a SET TRANSACTION ISOLATION LEVEL paranccsal történik. Egy példa: SET TRANSACTION ISOLATION LEVEL REPEATABLE READBEGIN TRANSACTIONSELECT * FROM publishersSELECT * FROM authors

Page 16: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

Helyreállítás (recovery):- Az adatbzis hiba utáni helyreállítása- az adatbázis konzisztenciájának visszaállítása hiba után komittált tranzakciók ne vesszenek el, a nem komittált ne tükrözödjön

az adatbázisban- visszaállítás a lehető legkisebb adatveszteséggel- Hibák

- Tranzakciós hibák- Rendszerhibák - Áramkimaradás elveszhetnek eredmények- Lemez sérülés- Hálózati hiba

- Naplózás (Log):- Adatbázis módosításait rögziti- Minden adatbázisnak van naplója, létrehozáskor ez is létrjön- Napló=táblázat: tranzakció azonosítója, objektum azonosítója, objektum kezdeti értéke, müvelet, tranzakció hogyan fejeződött be- Naplóbejegyzés: ha többször állítunk helyre a napló alapján az adatbázist, akkor mindig ugyanazt kapjuk.- Van max. mérete a napló fájlnak- Nem minden módosítást naplóz- Ha a napló betelik menteni kell- A napló nem aktív része törlődik (befejezett tranzakcióknál)

- Ellenőrzési pont :- A komittált tranzakció eredménye visszaíródik a memóriából az adatbázisba- A rendszer meghatározott időnként adja ki ezt a parancsot- Minél többször adjuk ki, annál gyorsabb a helyreállítási folyamat.- Helyreállítás az utolsó ellenőrzési ponttól kezdődik

- Visszagörgetés : abortált tranzakcióknál, ha hz adatbázisban nem az az érték van, mint a tranzakció elött.- Előregörgetés : ha a tranzakció kommitált az adatbázisba az új érték kerül- Ajánlott a naplót és az adatbázist külön lemezre tenni.- Helyreállításhoz min. 1 adatbázismentés (rendszeresen mentsünk)- A helyreállítás lépései:

- Adatbázis sérült1. a hiba elhárítása2. adatbázis séma létrehozása3. legutóbbi teljes adatbázis mentés betöltése4. napló mentések időrendi betöltése- napló sérült:1. adatbázis mentése2. ellenőrzési pont kiadása

- + védelem: tükrözés- védeni kell:

- az adatbázist jogtalan hozzáférés ellen - felhasználói jelszó oprendszeren belül - felhasználói jelszó adatbázison belül - jogosultság (GRANT) (visszavonás (REVOKE))- adatvesztés ellen: helyre állítás- érvénytelen adatok adatbázisba kerülése ellen

- view : csak annyit mutat a felhasználónak, amire jogosultsága van

Technikák a hibák kezelésére:

Tranzakció fogalmaa) Utasítások sorozata, melyet egy elemi egységnek tekintünk, vagy teljes egészében végrehajtódik, vagy semmi sem

történik.b) Véglegesítjük a tranzakciót => kommitáljuk (COMMIT)c) Ebben az esetben az utasítások eredménye véglegesen belekerül az adatbázisba.d) Ha az utasítások közül bármelyik nem tud jól lefutni, hiba történik => a tranzakció abortál, semmilyen hatása nem lehet

az adatbázisra!Az adatbázisnak vissza kell állnia a tranzakció megkezdése előtti állapotba.

Milyen hibák miatt következhet be az abort?

1. Hibás tranzakció pl INSERT (3,5) de az oszlopérték egész2. ABORT pl: nincs elég pénzünk!3. Adatbázis kezelő rendszer rossz, vagy az op. rendszer abortálja a tranzakciót4. Egyéb – rendszerhiba pl. áramszünet

Page 17: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

1.-2.-3.=> csak ere az egyre vonatkozik, nem befolyásolja a többit!!! Ezek tranzakciós hibák.

Az adatbázis hibái, helyreállításaPl: Bankautomata, pénz leemelése, áramszünet közben. Nem szabad a pénznek elvesznie!

Lehetséges hibák: hibás tranzakció( rossz Insert parancs); szerepel az ABORT utasítás a tranzakcióban(pl nincs benne pénz); DBMS vagy az op.rendszer abortál; egyéb rendszer hiba

A tranzakció-kezelő az összes megkezdett tranzakciót, a tranzakciók által az adatbázisban végzett módosításokat, és a tranzakciók végét feljegyzi egy naplóba. A napló mindig olyan tárolóeszközökre íródik, ami nem érzékeny az esetleges áramkimaradásra. Ilyenek például a lemezek. Ezért noha a tranzakció a munkájának egy részéhez a sokkal érzékenyebb memóriát használja, a napló minden esetben azonnal lemezre íródik. Az összes művelet naplózása fontos szerepet játszódik a tartósság biztosításában. (mentés-visszatöltés)Amikor a tranzakció készen áll a befejezésre, arra, hogy érvényesítse az elvégzett munkát, a módosítások a naplóba kerülnek. Először ezek a naplóbejegyzések íródnak lemezre, és csak ezután történik meg az adatbázis tényleges módosítása.

Page 18: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

Az SQL lekérdezőnyelv

A relációs adatbázisok szabványos nyelve az SQL, ami a Structured Query Language rövidítése. Az SQL-ben le tudunk írni lekérdezéseket, frissítéseket, séma-definíciókat és vezérlő utasításokat. Az SQL szabványnak van több változata is, legelterjedtebbek az SQL92 és az SQL99.

Az SQL nyelven utasításokat lehet leírni. Egy utasítás egy vagy több sorból állhat, a sorvége jelek fehér szóköznek számítanak. Az utasítás végét pontosvessző jelzi. A kifejezések típusa lehet egyszerű (numerikus, sztring, dátum), sor-érték vagy tábla-érték. Értékkifejezésnek fogunk nevezni egy olyan kifejezést, amelyiknek az értéke egyszerű típus. Az egyszerű típusokra általában értelmezve vannak az aritmetikai és összehasonító operátorok.

A NULL szerepe és a háromértékű logika

A NULL érték bármely egyszerű érték helyén állhat és hiányzó, vagy ismeretlen értéket jelöl. (ld. még: relációs algebra, ) Ha egy aritmetikai művelet vagy egy függvény egyik operandusa NULL akkor az eredménye is NULL lesz. Ha a NULL egy összehasonlításban szerepel akkor az összehasonlítás eredményen az „UNKNOWN” igazságérték lesz. Ez azt jelenti hogy az SQL-ben egy háromértékű logikát tudunk használni. Az alábbi táblázatokban megadjuk az egyes logikai műveletek igazságtáblázatát a háromértékű logikában.

X NOT XTRUE FALSEFALSE TRUEUNKNOWN UNKNOWN

X Y X OR Y X AND Y X IS YTRUE TRUE TRUE TRUE TRUETRUE FALSE TRUE FALSE FALSETRUE UNKNOWN TRUE UNKNOWN FALSEFALSE TRUE TRUE FALSE FALSEFALSE FALSE FALSE FALSE TRUEFALSE UNKNOWN UNKNOWN FALSE FALSEUNKNOWN TRUE TRUE UNKNOWN FALSEUNKNOWN FALSE UNKNOWN FALSE FALSEUNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN

Elérési felületek SQL parancsok kiadásárao Konzol/parancssoros interfészo APIo programnyelvbe beágyazott SQLo aktív adatbázis-elemek (tárolt eljárások, triggerek)

Lekérdezések(az SQL mint Query Language)Az SQL-ben a SELECT utasítással tudunk lekérdezéseket megfogalmazni.

Egyszerű lekérdezések:SELECT { * | mezőlista } FROM táblalista[WHERE feltétel];

Mezők listájao vesszővel elválasztva adjuk meg, hogy mely mezők értékeit akarjuk megkapnio ha ide *-ot írunk, akkor a felsorolt táblák összes mezőjét megkapjuko ha több táblának van azonos nevű mezője, akkor a mezőnevet a tábla nevével kell minősíteni (tábla.mező alakban)o ha egy értékkifejezést írunk be, azzal számított mezőket tudunk létrehoznio egy mezőnek új nevet adhatunk az AS kulcsszóval:

kifejezés AS oszlopnévezt főleg számított mezőknél érdemes használni, mert különben a kiszámító kifejezés lenne a mező neve.

Táblák listájao adattáblákat és nézettáblákat lehet itt megadni, vesszővel elválasztvao táblák átnevezése:

tábla [AS] korrelációsnévo újabb adatbáziskezelők itt elfogadnak JOIN-kifejezéseket

pl. tábla1 NATURAL INNER JOIN tábla2, stb

Page 19: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

AlkérdésekA WHERE záradékban bonyolultabb feltételeket tudunk megfogalmazni az alkérdések használatával. Ha olyan alkérdést írunk be egy feltételbe, amelyiknek egysoros az eredménye, akkor arra használhatjuk a szokásos összehasonlító operátorokat. Ha az alkérdés eredménye többsoros tábla, akkor az alábbi halmazműveleteket tudjuk használni:

o IN: az (s IN r) feltétel igaz pontosan akkor, ha az s mint sor benne van az r táblában.o EXISTS: az (EXISTS r) feltétel pontosan akkor igaz, ha az r nem üres tábla.o ANY, ALL: aritmetikai összehasonlítást tudunk ezekkel táblákra kiterjeszteni:

s > ALL r pontosan akkor igaz, ha s nagyobb az r mindegyik eleménél,s > ANY r pontosan akkor igaz, ha s nagyobb az r egyik eleménél.

Az újabb SQL szabvány megengedi alkérdések használatát a FROM záradékban is, de ezt kevés adatbáziskezelő támogatja.

N.B.: Ha lehet, kerüljük az alkérdéseket. Sok esetben alkérdés helyett összekapcsolás használatával is meg tudunk fogalmazni egy lekérdezést. Ilyenkor érdemesebb az összekapcsolást választani, mert az általában jobb teljesítményt ad. (ld. [3])

HalmazműveletekLekérdezéseknek vehetjük az unióját, metszetét, különbségét az UNION, INTERSECT, EXCEPT utasításokkal:

Lekérdezés1 halmazművelet lekérdezés2;ahol a halmazművelet = {UNION | INTERSECT | EXCEPT }.

Ilyenkor mindig halmazként értelmezzük a lekérdezéseket, vagyis a duplikátok el lesznek dobva.

Zsák vagy halmaz?A SELECT utasításnál mindig zsák az alapértelmezés, a halmazműveleteknél a halmaz. Ezen a DISTINCT, ALL kulcsszavakkal tudunk változtatni. ÖsszesítésekHa összesítést akarunk használni, akkor a SELECT utasítás végén meg kell adni a csoportosító mezőket a GROUP BY záradékban. Ilyenkor a SELECT záradékban szereplő mezők mindegyikének összesített mezőnek kell lennie, vagy szerepelnie kell a csoportosító mezők között.

Aggregáló függvényeko COUNT(*) – az eredmény sorainak számao COUNT(oszlop) – hány nem NULL van ebben az oszlopbano MIN, MAXo SUM, AVG, STDDEV

Az aggregáló függvényekre is használhatjuk a DISTINCT, ALL módosítókat.

A HAVING záradék egy olyan feltételt ad meg, amelyiket az összesítés után vizsgáljuk meg.

A lekérdezés a legvégén rendezni is lehet:ORDER BY oszlop [ ASC | DESC ]...

Figyelem! Az ORDER BY záradékot csak az egész lekérdezés plusz halmazműveletek legvégén lehet megadni!

A SELECT parancs általános alakja:SELECT [DISTINCT]{ * | { összesítés | értékkifejezés } [AS oszlopnév] }...FROM { táblanév | alkérdés } [AS név] ...[WHERE feltétel][ GROUP BY oszlopnév... [HAVING feltétel]][ ORDER BY oszlopnév [ASC|DESC]... ]

A SELECT záradékainak kiértékelési sorrendje:o FROMo WHEREo GROUP BYo HAVINGo SELECTo Halmazműveletek: UNION, EXCEPT, INTERSECTo ORDER BY

Frissítések(az SQL mint Data Manipulation Language)

Beszúrás

Page 20: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

INSERT INTO tábla [(oszlopnevek)] VALUES (értékek);

Lekérdezés eredményének beillesztése:INSERT INTO tábla [(oszlopnevek)] lekérdezés;

TörlésDELETE FROM tábla WHERE feltétel;

MódosításUPDATE táblaSET oszlopnév=kifejezés ...[WHERE feltétel];

Példa:UPDATE alkalmazottakSET beosztas=’tisztasági asszisztens’WHERE beosztas=’takarító’;

Adatbázisok létrehozása(az SQL mint Data Definition Language)

Táblák létrehozása:CREATE TABLE tábla (oszlopdefiníciók, megszorítások...);

Az oszlopdefiníciók az alábbi részekből állnak:o Oszlop neveo Oszlop típusao (opcionális) oszlop-megszorítások

NOT NULL – ebben az oszlopban a NULL érték nem megengedettUNIQUE – az oszlopba nem szerepelhet többször ugyanaz az értékPRIMARY KEY – v.ö. UNIQUE + NOT NULL, de egy táblára csak egyszer adhatjuk meg.CHECK(feltétel)REFERENCES – idegen kulcs típusú megszorítás

o (opcionális) alapértelmezett érték:DEFAULT kifejezés

Táblaszintű megszorítások:o összetett kulcsoko összetett CHECKo idegen kulcsok

FOREIGN KEY(oszlopok...) REFERENCES tábla

Módosítás, törlés:ALTER TABLE táblanév [ ADD COLUMN oszlopdefiníció | DROP COLUMN oszlopnév | ALTER COLUMN oszlopnév módosítás | ADD táblamegszorítás];

Tábla törlése:DROP TABLE táblanév;

Nézettáblák használataCREATE VIEW név [(oszlopok listája)] AS lekérdezés;

Ha egy nézettábla csak egy táblát tartalmaz akkor a frissítési műveleteket is lehet értelmezni rajta.

Vezérlő utasítások(az SQL mint Control Language)

Jogok kezeléseGRANT jog ON tábla TO felhasználó[WITH GRANT OPTION];

REVOKE [GRANT OPTION FOR ] jog ON tábla FROM felhasználó;Jogosultság továbbadhatósága: GRANT OPTION.A jogosultság lehet:

o ALL PRIVILEGESo SELECTo DELETEo INSERT [ (oszlop-lista) ]o UPDATE [ (oszlop-lista) ]

Page 21: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

Ha felhasználónak azt írjuk be hogy PUBLIC akkor az minden felhasználóra vonatkozik.

TranzakciókezelésCOMMITROLLBACKSET TRANSACTION ISOLATION LEVEL [ READ UNCOMITTED

| REPEATABLE READ | SERIALIZABLE ]SET TRANSACTION READ ONLYSET TRANSACTION READ WRITE

A COMMIT hatására a rendszer lezárja az aktuális tranzakciót és elmenti a változásokat. Ha a változásokat nem lehet elmenteni vagy egy megszorítás megsérülne, akkor a tranzakció visszavonásra kerül. A ROLLBACK megszakítja az aktuális tranzakciót és minden változtatást visszavon. A SET TRANSACTION utasítással a tranzakciók izolációs szintjét lehet beállítani, valamint azt hogy az aktuális tranzakció író-olvasó vagy csak olvasó módban fusson. Az izolációs szintekkel bővebben az első fejezetben foglalkoztunk.

Megjegyzés: parancssoros SQL felület esetén gyakran van egy autocommit-flag. Ha ez be van állítva akkor minden egyes utasítás egy külön tranzakcióban hajt végre a rendszer. Ha kikapcsoljuk az autocommit flag-et akkor tudjuk használni a tranzakciókezelési utasításokat.

Programnyelvbe ágyazott SQLMotiváció: az SQL relációsan teljes, de nem Turing-teljes. Ezért csak SQL-ben nem lehet minden programozási feladatot megoldani. Az egyik lehetséges megoldás erre a beágyazott SQL használata. A beágyazás azt jelenti, hogy egy C nyelvű programban SQL utasításokat helyezünk el. Ezeket az utasításokat egy előfordító fogja feldolgozni. Valójában az előfordító az SQL utasításokat API hívásokra fordítja, de ezeket a hívásokat nem kell ismernünk ahhoz, hogy a beágyazott SQL-t használhassuk.

A beágyazott SQL használatával egy C-SQL kevert nyelvű program jön létre. Az ilyen programoknak általában .pc a kiterjesztése. A .pc forrásból a proc nevű előfordítóval tudunk igazi C programot előállítani.

videotéka.pc proc videotéka.c

Az így kapott C programot a szokásos módon tudjuk lefordítani, de arra figyeljünk hogy hozzá kell linkelni egy SQL library-t.

(elvileg az kéne hogygcc –c videotéka.c

ez a szokásos fordítás, és utána a linkeléskor hozzá kell venni az SQL könyvtárat:gcc –o videotéka videotéka.o –lsql

de a Meduzán mintha nem lenne telepítve az SQL library.)

Az SQL utasításokat az előfeldolgozó az EXEC SQL előtagról ismeri fel, és az utasítás a következő pontosvesszőig tart:EXEC SQL utasítás;

Közös változók használata:EXEC SQL BEGIN DECLARE SECTION;

/* Itt közötte a szokásos C szintaxisszaldefiniálhatjuk a változóinkat */char SQLSTATE[6];

EXEC SQL END DECLARE SECTION;A közös változókra SQL-ből úgy tudunk hivatkozni, hogy a változó neve elé kettőspontot teszünk. Az SQL utasítások visszatérési értékét (sikeres volt-e a végrehajtás, vagy a hibakód) az SQLSTATE változóban lehet elérni.

Mielőtt SQL utasításokat hajtanánk végre, csatlakozni kell az adatbázishoz. A program végén le kell zárni a kapcsolatot.CONNECT :felhasználónév IDENTIFIED BY :jelszó;DISCONNECT;

Frissítési parancsok kiadása beágyazott SQL-ben ugyanúgy megy mint máskor:DELETE FROM tábla WHERE feltétel;UPDATE tábla SET ... WHERE feltétel;INSERT INTO tábla VALUES (változók);

Egyértékű lekérdezések:SELECT mezők INTO változók FROM ...;

Rekord típusú változók használata...(?)

Összetett lekérdezéseknél általában az eredmény sok sorból áll. Ilyenkor a sorokat úgy tudjuk kiolvasni, mintha egy szekvenciális input fájllal dolgoznánk. A lekérdezés eredményét egy CURSOR-ral tudjuk elérni, ez olyan, mint egy fájl-handle. A kurzort először deklarálni kell:

DECLARE cur1 [INSENSITIVE] CURSOR FOR SELECT...;

Page 22: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

Ha a kurzor megnyitása után a tábla megváltozik, akkor a kurzor is a megváltozott adatokat adja vissza. Ha ezt el akarjuk kerülni, használjunk INSENSITIVE CURSOR-t.

OPEN cur1;CLOSE cur1;FETCH cur1 INTO változók;

Iterálás kurzorral. (ciklusban nézegetjük az SQLSTATE változót)

Frissítés kurzorral:UPDATE tábla SET ... WHERE CURRENT OF kurzor;DELETE FROM tábla WHERE CURRENT OF kurzor;

Futásidőben összeállítható lekérdezésekPREPARE név FROM :szövegesváltozó;EXECUTE név;EXECUTE IMMEDIATE :szövegesváltozó;

Hibakezelés: mindig az SQLSTATE változóban kapjuk meg a legutóbbi utasítás visszatérési értéket. Ez egy ötjegyű, decimális számjegyeket tartalmazó változó. A hibátlan végrehajtást a ’00000’ jelöli.

Ha egy lekérdezésben arra számítunk, hogy valamelyik változóba null-érték kerülhet, akkor megadhatunk hozzá külön indikátorváltozót. Ilyenkor :változó:indikátor alakban kell írni a hivatkozást, ahol az indikátor egy short int típusú változó, és a nullérték esetén –1 íródik bele. Hasonlóan, ha null-értéket akarunk átadni egy SQL utasításnak, állítsuk az indikátor értékét –1-re.

SQL

Az SQL, a Structured Query Language angol elnevezésből alkotott mozaikszó, a relációs adatbázis-kezelő rendszerek ma legelterjedtebb, szabványosított adatbázis-kezelő nyelvének elnevezése. Az angol elnevezés szószerinti magyar fordítása strukturált lekérdező nyelv. Az SQL nyelv valójában egy komplett adatbázis-kezelő nyelv, amely tartalmaz adatdefiníciókat, adatmanipulációs és az adatfelügyelet körébe tartozó utasításokat is.

Az SQL deklaratív nyelv, tehát csak azt kell leírni az utasítással, hogy mit szeretnénk eredményként látni, azt nem, hogy kell azt a rendszernek előállítani. Ez utóbbit maga az adatbázis-kezelő rendszer határozza meg.

Az SQL nyelv utasításai záradékokból épülnek fel. A záradékok sorrendje kötött. A nyelv maga szabad írásmódú, az utasításokat pontosvessző zárja.

Adattípusok- CHAR (n): Egy rögzített hosszúságú (n) karaktersort jelöl.- VARCHAR (n): Egy legfeljebb n hosszúságú karaktersort jelöl.- BIT (n): Egy n hosszúságú bitsort jelképez.- INT, INTEGER, SHORTINT: Egész számokat jelképeznek.- REAL, FLOAT: Lebegőpontos értékek tárolására szolgál.- DECIMAL (n, d): Fixpontos valós számok tárolására szolgál, ahol n a számjegyek száma, és d a tizedes jegyek száma.- DATE: Dátumot jelképez.- TIME: Időt jelképez.

Tábla létrehozásaA legegyszerűbb módja egy tábla létrehozásának a CREATE TABLE kulcsszavakból, a relációnévből, az attribútumokból és típusaiknak zárójelek közé tett listájából áll.

Például: CREATE TABLE FilmSzínész ( név CHAR (30),

cím VARCHAR (255),nem CHAR (1),születésnap DATE

);

Tábla módosításaA megfelelő utasítások az ALTER TABLE kulcsszavakkal és a reláció nevével kezdődnek. Ezután több lehetőségünk is van, a legjelentősebbek a következők:

- ADD: új attribútum hozzáadása a relációhoz.- DROP: attribútum törlése a relációból.

Például:ALTER TABLE FilmSzínész ADD telefon CHAR (16);ALTER TABLE FilmSzínész DROP születésnap;

Page 23: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

MegszorításokA megszorításokat bármikor módosíthatjuk, törölhetjük, vagy újakat hozhatunk létre belőlük. A megszorításnak adhatunk nevet. Ezt úgy tehetjük meg, hogy a megszorítás elé beírjuk a CONSTRAINT kulcsszót és a megszorítás nevét.

Például:nem CHAR (1) CONSTRAINT FérfiVagyNőCHECK (nem IN (’F’, ’N’)),

Kulcsok megadásaAz elsődleges kulcs a reláció egy vagy több attribútumából állhat. Az elsődleges kulcsot a CREATE TABLE utasításon belül kétfajta módon adhatjuk meg.

- Az attribútumot deklarálhatjuk elsődleges kulcsként akkor, amikor az attribútumot felsoroljuk a relációsémában.- Hozzáadhatunk a sémában deklarált elemek listájához egy további deklarációt, amelyik azt adja meg, hogy egy attribútum vagy

egy attribútumhalmaz kulcsot alkot.

Az első módszer esetén a PRIMARY KEY kulcsszót kell az attribútum neve és típusa után írnunk.

Például: CREATE TABLE FilmSzínész (név CHAR (30) PRIMARY KEY,cím VARCHAR (255),nem CHAR (1),születésnap DATE

);

A második módszer esetén egy új elemet kell az attribútumok listája után írnunk, amelyik a PRIMARY KEY kulcsszóból és a kulcsot alkotó attribútum vagy attribútumok zárójelezett listájából áll. Ha a kulcs több attribútumból áll, akkor a második módszert kell használnunk.

Például: CREATE TABLE FilmSzínész ( név CHAR (30),

cím VARCHAR (255),nem CHAR (1),születésnap DATE,PRIMARY KEY (név)

);

A másik lehetőség a kulcsok deklarálására a UNIQUE kulcsszó használatával történik. Ez a kulcsszó pontosan ott fordul elő, ahol a PRIMARY KEY kulcsszó. Ennek a deklarációnak is ugyanaz az értelme mint az elsődleges kulcs deklarációnak, de amíg elsődleges kulcsból csak egyet adhatunk meg egy táblához, addig a UNIQUE deklarációból akármennyit.

Például: CREATE TABLE FilmSzínész ( név CHAR (30) UNIQUE,

cím VARCHAR (255),nem CHAR (1),születésnap DATE

);Egy reláció azon attribútumát vagy attribútumait idegen kulcsnak deklarálhatjuk, amelyek egy másik reláció bizonyos attribútumaira hivatkoznak. Ez a deklaráció két dolgot jelent egyszerre.

- A másik reláció azon attribútumát vagy attribútumait, amelyekre hivatkozunk, elsődleges kulcsként kell deklarálni abban a relációban.

- Minden értéknek, ami az első relációban az idegen kulcs egy attribútumában szerepel, szerepelnie kell a második reláció megfelelő attribútumában is. Ez azt jelenti, hogy van egyfajta hivatkozásiépség-megszorítás, ami a két attribútumot vagy attribútumhalmazt összekapcsolja.

Ha az idegen kulcs egyetlen attribútum, akkor az attribútum neve és típusa után adhatjuk meg, hogy az egy másik tábla egy attribútumára hivatkozik.

Például: CREATE TABLE Stúdió ( név CHAR (30) PRIMARY KEY,

cím VARCHAR (255),elnökazon INT REFERENCES GyártásIrányító (azonosító)

);

A másik lehetőség, hogy a CREATE TABLE utasításban az attribútumok listája után egy külön deklarációban adjuk meg, hogy bizonyos attribútumok idegen kulcsot alkotnak.

Page 24: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

Például: CREATE TABLE Stúdió ( név CHAR (30) PRIMARY KEY,

cím VARCHAR (255),elnökazon INT,FOREIGN KEY elnökazon REFERENCES

GyártásIrányító (azonosító) );

Tábla törléseNéha szükség van arra, hogy megszüntessünk egy táblát az adatbázissémában. A feltételek megváltozása miatt lehet, hogy felesleges az adatok karbantartása ebben a táblában. Az is lehetséges, hogy a reláció csak ideiglenes, valamely bonyolult közbülső lekérdezés eredményeképpen. Ilyen esetben a relációt a DROP utasítással szüntethetjük meg.

Tábla feltöltéseA tábla feltöltése, azaz sorok beszúrása egy relációba változtatásokat hoz létre, megváltoztatja az adatbázis állapotát.

Például:INSERT INTO Szerep (filmcím, év, színésznév)VALUES (’Titanic’, 1998, ’Kate Winslet’);

LekérdezésAz egyszerű lekérdezés azon sorokra vonatkoznak, melyek egy bizonyos relációban eleget tesznek egy adott feltételnek. Egy ilyen lekérdezés a relációs algebra kiválasztási műveletének felel meg.

Például:SELECT *FROM FilmWHERE stúdiónév = ’Disney’ AND év = 1990;

A FROM záradék azon relációt vagy relációkat adja meg, melyekre a lekérdezés vonatkozik. A WHERE záradék egy feltétel, melyet a lekérdezésnek megfelelő sorok, ki kell, hogy elégítsenek. A SELECT záradék megadja a feltételeknek megfelelő sorok azon attribútumait, melyeket a lekérdezésre adott válasz tartalmazni fog. A * azt jelzi, hogy a teljes sort tartalmazni fogja a válasz.

Ha azt szeretnénk, hogy a kiválasztott sorok bizonyos komponenseit kizárjuk az eredményből, akkor levetítjük (vetítés) a lekérdezéssel előállított relációt néhány attribútumára.

Például:SELECT cím, hosszFROM FilmWHERE stúdiónév = ’Disney’ AND év = 1990;

Néha a reláció sorait csoportosítanunk kell egy vagy több oszlop értékei szerint. Ekkor a WHERE záradék helyett a GROUP BY záradékot kell használni, amit a csoportosító attribútumok listája követ. A legegyszerűbb esetben a FROM záradék csak egy sorváltozót tartalmaz, és a reláció sorait csoportosítjuk a csoportosító attribútumoknak megfelelően.

Például:SELECT stúdiónév, SUM (hossz)FROM FilmGROUP BY stúdiónév;

A példában a Film relációból kérdeztük le stúdiónként a gyártott percek összegét.

Szükség lehet arra, hogy egy lekérdezés eredménye bizonyos sorrendbe legyen rendezve. Az eredmény rendezése érdekében a select – from – where utasításhoz az ORDER BY záradékot kell még adni.

Például:SELECT *FROM FilmWHERE stúdiónév = ’Disney’ AND és = 1990ORDER BY hossz, cím;

A példában a filmeket hossz szerint szeretnénk lekérdezni növekvően, és az egyenlő hosszúakat ábécérendben.

FeltételekAz SQL lehetővé teszi, hogy mintákkal összehasonlíthassunk karakterláncokat. Az összehasonlítás ilyen jellegű formája: s LIKE p, ahol s egy karakterlánc, p pedig egy minta. A minta egy karakterlánc, melyben használhatjuk a speciális % (bármilyen karakter) és _ (egy karakter) karaktereket.

Például:SELECT címFROM FilmWHERE cím LIKE ’Halálos _ _ _ _ _ _ _’;

Page 25: 15ntibi.web.elte.hu/adatbazis/adatbazis.docx · Web view(Pl: ELTE,SOTE, BME stb…). Az egyedhalmaz a matematikai értelemben vett halmaz fogalmat jelenti, a halmazban nincs ismétlődés,

ÖsszesítésekÖsszesítés alatt egy olyan műveletet értünk, amely egy oszlop értékeiből egy értéket hoz létre. A SUM, az oszlopok értékeinek összegét határozza meg.

Például:SELECT SUM (hossz)FROM Film;

A MAX, az oszlop értékeinek maximumát határozza meg.

Például:SELECT MAX (hossz)FROM Film;

A COUNT, az oszlopban található elemek számát határozza meg.

Például:SELECT COUNT (hossz)FROM Film;

Adatok törléseAz utasítás azt eredményezi, hogy a relációból kitörlődik minden olyan sor, amely megfelel a feltételnek. A törlés alakja: DELETE FROM táblanév WHERE (feltétel).

Például:DELETE FROM SzerepWHERE filmcím = ’Titanic’ AND év = 1998 AND

színésznév = ’Kate Winslet’;

Tábla adatainak módosításaA módosítás az adatbázis egy speciális változtatása, melyben egy vagy több létező sor bizonyos komponenseinek értékét megváltoztatjuk.

Például:UPDATE GyártásIrányítóSET név = ’Ig.’ | | névWHERE azonosító IN (

SELECT elnökazon FROM Stúdió);

A példában a 3. sor ellenőrzi, hogy a gyártásirányító azonosítója megegyezik-e a Stúdió reláció valamelyik sorának elnökazon komponensével. A 2. sor végrehajtja a módosítást a megfelelő sorokon. A | | operátor karaktersorok összeillesztését jelenti. Az így kapott karaktersor lesz a név komponens új értéke.