Content extract
Az adatbázis-kezelés alapjai 1 Az adatbázis fogalma adatok összessége, adatok gyűjteménye, táblázatok összehangolt csoportja. Az adatbázis-kezelő Olyan programrendszer, amelynek segítségével nagy mennyiségű adatot hatékonyan kezelhetünk. A relációs adatbázis-kezelő, illetve adatmodell Az információkat táblákban tároljuk. A tábla adott témájú adatokat tartalmaz A táblák között kapcsolatok vannak. Az adatokkal különböző művelteket végezhetünk. Az adatbázis legfontosabb egységei Tábla: Rekord: Oszlop vagy mező: Adatmező vagy cella: Az adatokat tartalmazza. Egy adatbázisban több tábla is lehet, amelyek valamilyen kapcsolatban állnak egymással. Egy adott ismeretről szóló összetartozó adatok összessége. Az adattábla egy sora Tulajdonság típus. Azonos típusú adatok összessége Az adattábla egy oszlopa. Egy adott ismerethez tartozó, adott típusú adat. Az adattábla adatainak, rekordjainak azonosítása - a kulcs
fogalma Egy adattáblában a kulcs segítségével azonosítunk egy adott rekordot. A kulcsnak minden rekordnál más - más értéket kell felvennie, tehát egyedinek kell lennie. Kulcsok típusai: kulcs, vagy elsődleges kulcs: Egy rekord azonosítására szolgál. Egy mezőből áll (pl a rekord sorszáma, személyi igazolvány szám stb.) több mezőből álló kulcs: Az azonosítót több mező egyszerre alkotja. Ezek a mezők külön - külön nem, de együttesen egyediek. (pl név + anyja neve) idegen kulcs: Olyan azonosító amely egy másik táblában az elsődleges kulcs szerepét tölti be, de az adott táblában nem. Az idegen kulcs azonos értékeket is felvehet Az adatbázis-kezelés alapjai 2 Az adatok rendezése - az indexelés Az adatbázis rekordjait valamilyen szempont szerint sorba állíthatjuk. A sorba állítás valamelyik mező szerint történik. Azoknak a mezőknek amelyek szerint az adatbázist rendezni kívánjuk indexeltnek kell lennie. Az
indexelés megkönnyíti az adatok rendezését és valamely adat megkeresését, de lassítja az adatbázis bővítését és az adattörlést, mivel ilyenkor mindig újra kell rendezni (indexelni) az adatbázist. A redundancia fogalma A redundancia ismétlődést jelent. Az ismételt adatrögzítés általában hiba, mivel így az adatok több helyet foglalnak és előfordulhat az eltérő adatrögzítés, a többször előforduló adat viszont sok esetben könnyebbé teszi az adatbázis használatát. Az adattáblák közötti kapcsolatrendszer Általában egyszerűsíti az adatbázist és csökkenti a redundanciát, ha az adatokat nem egy nagy, összefüggő táblázatban, hanem több kicsi, de egymással kapcsolatban lévő táblában rögzítjük. A kapcsolati rendszer megmutatja, hogy két adattábla között milyen kapcsolat van. A kapcsolatokat mindig definiálni kell, hogy a rendszer megfelelően működjön. Kapcsolat típusok: egy - egy (1 - 1) egy - sok (1 - ∞)
sok - egy (∞ - 1) sok - sok (∞ - ∞) Az adattípusok fajtái Szöveg (karakter): Feljegyzés (memo): Szám: Dátum/Idő Pénznem Számláló: Igen/Nem: OLE objektum: legfeljebb 255 karakter hosszú szöveg. legfeljebb 64000 karakter hosszú, nem indexelhető. 1, 2, 4 vagy 8 byte hosszú szám. nem lehet két azonos értékű, automatikusan kezeli a program. logikai típusú, nem lehet indexelt. bármilyen egyéb objektum (pl. grafika), nem indexelhető. Az adatbázis-kezelés alapjai 3 Az adatbázis-kezelést segítő eszközök Adattábla: Ebben definiáljuk az adatbázis szerkezetét, az adatok típusát és itt helyezkednek el az adatok. Lekérdezés: Az adatbázisból információkat nyerhetünk. Készíthető: adattábláról, meglévő lekérdezésről. Célja lehet az adatok: szűkítése, szűrése, összesítése stb. Fajtái: választó lekérdezés (eredmény az aktuális pillanatban), kereszttáblás lekérdezés (eredmény
az aktuális pillanatban), akció lekérdezés (a műveletek kihatnak az adattáblára). Űrlap: Az űrlap segítségével tölthetjük fel az adatbázist adatokkal, módosíthatjuk és megtekinthetjük a már bevitt adatokat. Az űrlapot tetszőleges formátumúra készíthetjük, feliratokat, címeket, magyarázatokat, nyomógombokat stb. helyezhetünk el rajta Jelentés: Az szükséges adatokat tetszőleges formátumban nyomtathatjuk ki a segítségével. Készíthető: adattábláról, lekérdezésről, űrlapról. Az adatbázis-kezelés alapjai 4 Adatbázis tervezésének főbb szempontjai Gondoljuk át, hogy: • mit várunk el az adatbázistól, • mit akarunk látni a képernyőn, • mit akarunk kinyomtatni, • milyen kérdéseket akarunk feltenni az adatokkal kapcsolatban. Tervezzük meg, hogy: • milyen adattáblák szükségesek, • az egyes táblák között milyen kapcsolatok legyenek, • a táblákban milyen mezők legyenek és ezek milyen
tulajdonságokkal rendelkezzenek. Néhány szempont a mezők, illetve mezőtulajdonságok kialakításához: • a mező neve utaljon a tartalmára, • számított mezőt lehetőleg ne tartalmazzon az adattábla, • minden olyan információt külön tároljunk, amivel később dolgozni szeretnénk, • nézzük meg milyen szempontok szerint akarunk gyorsan keresni (ezek a mezők legyenek a kulcsmezők), • határozzuk meg a kapcsolómezőket. A mezőtulajdonságok az ACCESS-ben Mezőméret: • Szöveges típus - legfeljebb 255 karakter - alapértelmezés 50 karakter Ha utólag lecsökkentjük, akkor a már beírt adatok sérülhetnek. • Szám típus - Bájt 0.255 (1 byte) - Egész -32768.32767 (2 byte) - Hosszú egész -2147483648.2147483647 (4 byte) - Dupla -1,797⋅10308.1,797⋅10308 (8 byte) - Egyszeres -3,3⋅1038.3,4⋅1038 (4 byte) Ha utólag csökkentjük a számtartományt, akkor a már beírt számok kerekítődhetnek. • az összes többi típusnak kötött mérete
van - Feljegyzés, Dátum/idő, Pénznem - 8 byte - Számláló - 4 byte - Logikai - 1 bit - OLE Az adatbázis-kezelés alapjai 5 Formátum: • Szöveges és feljegyzés típus - @ alfabetikus karakter helye (a - z, A - Z, 0 - 9) - & nem alfabetikus karakter helye - > nagybetűre alakítás - < kisbetűre alakítás Például: formátum: @@@ - @@ - @@ bevitt adat: 1234567 kiírt adat: 123 - 45 - 67 • Szám, pénznem és számláló típus - Általános szám a beírásnak megfelelő - Pénznem kiírja a pénznemet; az ezresek közé vesszőt tesz; a negatív számokat pirossal írja ki; alaphelyzetben két tizedesjegyre kerekít - Rögzített a "Tizedeshelyeknek" megfelelő jegyre kerekít - Szabványos a rögzítettnek megfelelő, valamint az ezresek közé vesszőt tesz - Százalék a számot megszorozza százzal és kiírja mögé a % jelet - Tudományos a számot normálalakban írja ki (123 1,23E+2) - Általunk definiált formátum Használható
jelek: . tizedespont , ezres-határoló jel 0 számok helye és a nullát is kiírja # számok helye és a nullát üresen hagyja % szorzás százzal + % jel kiírása E- negatív kitevőnél előjel E+ pozitív kitevőnél előjel Megadási sorrend: pozitív szám, negatív szám, nulla, nem megadott érték formátuma Példa: #.##;-###;"nulla";"nem megadott érték" Az adatbázis-kezelés alapjai 6 • Dátum/idő típus - Általános dátum (1998.1019 162234) - Hosszú dátum (1998. október 19) - Egyszerű dátum (98. okt 19) - Rövid dátum (1998.1019) - Hosszú idő (16.2234) - Közepes idő (4.22 PM) - Rövid idő (16.22) - Általunk definiált formátum • Logikai típus - Előre megadott értékei: Igaz - Hamis, Igen - Nem, Be - Ki - Általunk definiálható értékek: például: Férfi - Nő, megadás: ;"Férfi";"Nő" • az OLE objektumokhoz nem rendelhetünk formátumot Az általunk létrehozott formátumokban szöveget is el
lehet helyezni. Ilyenkor a szöveget idézőjelek közé kell írni. Tizedeshelyek: A tizedeshelyek száma Szám és Pénznem típusoknál. Értékei: • Auto minden tizedesjegyet kiír • 0 - 15 a megadott számú jegyet írja ki Cím: Az adatlap nézetben, az űrlapon és a lekérdezésekben megjelenő mezőnév. Alapértelmezett érték: Ha új rekordot veszünk fel az adatbázisba, akkor az adott mező automatikusan az itt megadott értéket veszi fel. Ebben a mezőben függvényt is megadhatunk. Például: Dátum/idő típusú mezőnél az aktuális dátum kiíratása: =DATE(), vagy NOW(). A kifejezéseket “=” jellel kell kezdeni. Érvényességi szabály, Érvényesítési szöveg: Feltételekhez köthetjük a bevitt adatok elfogadását. Az adott adatmező megadásakor a bevitt adatot összehasonlítja az Érvényességi szabály-ban foglaltakkal, ha megfelel, akkor folytatódhat az adatbevitel, ha nem, akkor megjelenik az Érvényesítési szöveg-ben megadott üzenet.
Mindkét mező legfeljebb 255 karakter hosszú lehet. Az adatbázis-kezelés alapjai Például: =”Ft” 100 Between 10 And 100 >= #1990.0101# And < #19900505# In(“Reggeli”,”Ebéd”,”Vacsora”) Like "K???" Like "T[B-R]###" >=Date() 7 Az érték csak Ft lehet. Az érték csak 100 lehet. 10 és 100 közötti érték. A dátum a megadott határok között Az érték a megadott szavak valamelyike. K betűvel kezdődő 4 betűs szó. Az első betű T, a második betű B és R között, majd 3 db szám. A beírt érték az aktuális dátumnál nagyobb. Kötelező: A mezőt kötelező-e megadni. Ha igen-re állítjuk, akkor a program nem enged addig továbblépni amíg ki nem töltjük az adott mezőt. Indexelt: Az indexelt mezőkkel gyorsabb a keresés, a lekérdezés, a listázás. A Feljegyzés, az Igen/nem és a OLE objektum típusú mezők nem indexelhetők. Értékei: • Nem Nincs indexelés, illetve a korábbi indexelés törlődik. •
Igen (lehet azonos) Indexelt, de azonos értékű mezők is lehetnek. • Igen (nem lehet azonos) Nem lehetnek azonos értékű mezők. Indexelni azokat a mezőket érdemes, amelyek szerint gyakran végzünk keresést, rendezést stb. Összetett indexek is készíthetők, amelyek több mezőhöz kapcsolódnak. Bemeneti maszk: Az adatbevitelhez készíthetünk egy sablont, amelynek segítségével egyszerűbb az adatok beírása. Bemeneti maszk csak Szöveg vagy Dátum/idő típusú mezőhöz készíthető. Alaptípusai: • Telefonszám, • Irányítószám, • Jelszó, • Közepes és rövid dátum, • Hosszú, közepes és rövid idő. Az adatbázis-kezelés alapjai 8 Lekérdezések A táblában vagy táblákban tárolt adatokra vonatkozó kérdéseket tehetünk fel. A lekérdezés adatai származhatnak egy vagy több táblából. A lekérdezés készítésekor meg kell gondolni, hogy milyen adatokat szeretnénk megkapni, illetve milyen kérdésekre szeretnénk választ
kapni. A lekérdezés lefuttatása után egy eredményhalmazt kapunk. Az eredményhalmaz látszatra olyan mint egy adattábla, de nem az. A lekérdezés egy dinamikus adathalmaz, amelynek tartalmára hatással van az adattábla változása, illetve amelynek változtatása hatással van az adatokra. A lekérdezés célja lehet: • adott mezők kiválasztása feltételek alapján, • adott rekordok kiválasztása feltételek alapján, • rekordok rendezése adott mezők alapján, • különböző táblákban lévő adatokra vonatkozó kérdések megjelenítése egy adatlapon, • számítások végrehajtása, • lekérdezés használata űrlap, jelentés vagy másik lekérdezés adatforrásaként, • adattábla adatainak módosítása, frissítése, adatok hozzáfűzése rekord illetve tábla szintjén. Lekérdezés készíthető: • adattábláról, • meglévő lekérdezésről. Meglévő lekérdezéshez készíthető: • űrlap, • jelentés, • diagram, • másik
lekérdezés. Lekérdezések fajtái: Választó lekérdezés: megnézhetjük az adatokat, elemezhetjük, módosíthatjuk. Kereszttáblás lekérdezés: az adatokat táblázatkezelőhöz hasonlóan, sor- és oszlopfejlécekkel jelenítjük meg, nagy mennyiségű információ megjeneítésére alkalmas. Módosító lekérdezés: Sok rekordot érintő módosításokat hajthatunk végre egyetlen műveletben. Az adatbázis-kezelés alapjai 9 Alkalmazható: új adattábla készítésére, meglévő táblához rekordokat fűzhetünk hozzá, tábla rekordjait módosíthatjuk. Egyesítő lekérdezés: Két vagy több tábla megfelelő mezőit egyesíti. Átadó lekérdezés: Parancsokat küld SQL adatbázishoz. Adatdefiníciós lekérdezés: SQL utasításokkal adattáblát hoz létre, módosít vagy töröl. Lekérdezés létrehozása: Varázsló segítségével: Adatbázis ablak Lekérdezés fül Új Lekérdezés varázsló •
Alaptípusok: kereszttáblás lekérdezés Tömör, összefoglaló formátum. ismétlődéseket kereső lekérdezés Megkeresi az ismétlődő rekordokat az adott táblában vagy lekérdezésben. nem egyező rekordokat kereső lekérdezés Megkeresi az egyik tábla összes olyan rekordját, amely nem kapcsolódik egy másik tábla egyetlen rekordjához sem. (pl azok a vevők akikhez nem tartozik megrendelés) archiváló lekérdezés Rekordokat másol egy meglévő táblából egy új táblába, majd - ha kérjük - törli ezeket az átmásolt rekordokat a eredeti táblából. Varázsló nélkül (manuálisan): Általában ezt a módszert használjuk lekérdezések készítésére. Adatbázis ablak Lekérdezés fül Új Új lekérdezés Tábla hozzáadása ablak • Táblák (csak a táblák látszanak), • Lekérdezések (csak a meglévő lekérdezések látszanak), • Mindkettő. Kiválasztjuk a megfelelő tételt, majd Hozzáad Az összes tétel
hozzáadása után Bezár Nézetek a lekérdezés ablakban: Tervező nézet: • Lekérdezés létrehozása, vagy létező lekérdezés módosítása. Adatlap nézet: • A lekérdezés eredményének megtekintése. Az adatbázis-kezelés alapjai 10 SQL nézet: • A lekérdezés megjelenítése SQL programozási nyelven. Nyomtatási kép: • A lekérdezés eredményének kinézete a nyomtatón. Mező átnevezése a lekérdezésben: A lekérdezésben megjelenő mezőnevet átírhatjuk a saját ízlésünknek megfelelően. Ilyenkor a lekérdezésből készített bármely új objektum is az általunk meghatározott mezőnevet fogja örökölni. pl. a Fizetés nevű mezőt összegezzük és a mezőnek az Összeg nevet akarjuk adni. ilyenkor az eredeti név: Fizetés az új név megadása: Összeg: Fizetés Ebben az esetben az új mezőnév az Összeg lesz. Mezők rendezése: A mezők rendezésének prioritása balról jobbra értendő, tehát előbb kell beírni az elsődlegesen
rendezendő adatot. Ha a rendezendő adatok között egyformákat talál, akkor ezeket a következő rendezési szempont szerint fogja sorba rakni. Feltételek megadása a lekérdezésben: A lekérdezésben megadott feltétel egy kifejezés, amelyet létrehozhatunk manuálisan, vagy használhatjuk a kifejezésszerkesztőt. A kifejezések bevitele viszonylag rugalmasan történhet: pl. ha a Budapesti dolgozókat akarjuk csak megjeleníteni a Dolgozók adatbázisból, akkor ezt az alábbi módokon adhatjuk meg: Budapest =Budapest "Budapest" ="Budapest" Jelentések A jelentés az igényeknek megfelelően szervezett és formázott információ. Lehetőséget kínál arra, hogy a számunkra fontos adatokat visszakereshessük, és nyomtatott formában használjuk, terjesszük. Jelentések például a postai címkék, a számlák, az értékesítési összefoglalók, telefonjegyzékek. A jelentésekben a szöveges részek formázásán kívül alkalmazhatunk képeket
diagramokat is. A jelentéseket általában akkor használjuk, ha hivatalos formában akarjuk az adatainkat elrendezni és kinyomtatni. A rendszeresen használt információk kinyomtatására készíthetünk jelentés terveket (sablonokat) is. Az adatbázis-kezelés alapjai 11 A jelentés segítségével: • csoportokba szervezhetjük és csoportokban jeleníthetjük meg adatainkat, • összegeket és összegek százalékát számíthatjuk ki, • összefoglalhatunk segédűrlapokat, segédjelentéseket és diagramokat, • az adatokat képekkel, vonalakkal és különleges betűtípusokkal ellátva szép formátumban jeleníthetjük meg. Nézetek a jelentés ablakban: Tervező: • Akkor használjuk, ha új jelentést akarunk létrehozni, vagy módosítani szeretnénk egy meglévő jelentés tervét, formátumát. Mintakép: • Ellenőrizhetjük egy jelentés betűtípusát, betűméretét, illetve általános kinézetét. Nyomtatási kép: • Megnézhetjük a jelentés
formátumát az adatokkal együtt. Számítógép rendszerprogramozó Adatbázis - kezelés ADATMODELLEK Az adatmodellek alapelemei Az egyed fogalma: • Egyednek hívunk minden olyan dol got ( objektumot), am i m inden m ás dol ogtól (objektumtól) megkülönböztethető és amiről adatokat tárolunk. • Az egyed konkrét dolgok absztrakciója (elvonatkoztatása, elméleti megközelítése), konkrét dolgokat fog egybe. (Például az autó mint egyed sok autót jelent) • Egy adot t eg yed ál tal k épviselt konkrét elemek halmazát egyedhalmaznak is szokás nev ezni. ( Például az autó nevű egyed egyedhalmaza az összes autóból áll.) • Egy a dott valóságos objektum különböző egyedekkel tükrözhető. (Például egy vállalat a nézőponttól függően lehet vevő, szállító, adós, hitelező stb. egyed) • Azt, hog y eg y k onkrét dol og es etén m it t ekintünk eg yednek, az eg yedhalmaz konkrét elemei határozzák meg. • Az egyed egy konkrét
értékét az egyedhalmazban az egyed egy előfordulásának nevezzük. Az előfordulást szokás egyedértéknek is nevezni A rekordtípus: • Az adat bázis-kezelő rendszerekben általában az egyedtípust rekordtípusnak hívjuk. • Ez a legkisebb címezhető egység az adatbázisban. A tulajdonság: • Az egyedeket tulajdonságokkal (attribútumokkal) írjuk le. • A tulajdonság az egyed egy jellemzője, amely meghatározza az egyed egy részletét. (Például a dolgozó nevű egyed tulajdonságai lehetnek a személyi szám, a név, a fizetés stb.) • A t ulajdonság i s eg y abs ztrakció, am ely t öbb el emet foglal egybe, tehát konkrét értékekből, előfordulásokból áll. (Például a név tulajdonság k onkrét el emei az egyes személyek nevei.) • A tulajdonságok lehetnek: - azonosítók egyértelműen meghatározzák az egyed előfordulásait, - leírók nem határozzák meg az egyed előfordulásait. A kulcs: • Amennyiben egy tulajdonság vagy
tulajdonságok egy csoportja egyértelműen meghatározza, hogy egy egyed melyik értékéről, előfordulásáról van szó (tehátaz egyedhalmaz melyik eleméről), akkor ezeket a tulajdonságokat együtt kulcsnak nevezzük. • Nyilvánvaló, hogy minden eg yedhez ér telmezhetünk k ulcsot, hi szen az eg yedet úgy határoztuk meg, hogy az megkülönböztethető egy másik egyedtől. • Ha nem találunk olyan tulajdonságokat, amelyek meghatározzák az egyedhalmaz elemeit, ak kor be k ell v ezetnünk eg y olyan tulajdonságot (sorszámot, kódot, azonosítót), amelyet kulcsként használhatunk. -1- Számítógép rendszerprogramozó Adatbázis - kezelés Többértékű és összetett tulajdonságok: • A t ulajdonságok k özött l ehetnek olyanok, amelyeknek t öbb ér téke v an, ez eket hívjuk többértékű tulajdonságoknak. (Például a végzettség egy dolgozónál, amelyből több is lehet.) • Bizonyos at tribútunok l ehetnek ös szetettek. ( Például a
lakcím állhat irányítószámból, városból stb.) • A r elációs adat modellekben ezek a többértékű, illetve összetett tulajdonságok nem kezelhetők megfelelően. A kapcsolat fogalma: • Kapcsolatnak nevezzük az egyedek közötti viszonyt. • A k apcsolat m indig v alóságos obj ektumok k özötti v iszonyt f ejez k i, hiszen az egyed i lyen obj ektumokat k épvisel. ( pl személyek mint eg y vállalat dol gozói, vevők és rendelések) • A kapcsolatot rombusszal vagy az egyedtípusokat összekötő vonallal jelöljük, a kapcsolat nevét a rombuszba, vagy a vonalra írjuk. • A kapcsolat is absztrakció, két egyed értékei közötti konkrét viszonyt fejez ki. • A konkrét kapcsolatokat a kapcsolat értékeinek (előfordulásainak) nevezzük. (pl egy konkrét vevőhöz sok rendelés tartozhat.) A kapcsolat fokai: • Kapcsolat egyidejűleg több egyed között is lehet. Ha a kapcsolat n db egyedet köt össze, akkor n-edfokúnak nevezzük. • A l eggyakoribb
a bináris (másodfokú) kapcsolat, amikor k ét eg yedet k ötünk össze. • Speciális bináris k apcsolat a rekurzív bináris kapcsolat. Ilyenről van szó akkor, ha az egyeden belül az előfordulások vannak kapcsolatban. (pl a dolgozó egyedben benne vannak a vezetők is.) • Gyakoriak a har madfokú ( ternary) k apcsolatok i s, am ikor hár om eg yed v an kapcsolatban egymással. A kapcsolatok fajtái: • A kapcsolat típusa attól függ, hogy egy adott egyed egy előfordulásához hány egyedelőfordulás tartozik a másik egyedből. Egy-egy típusú kapcsolat: • Az egyik eg yedhalmaz m indegyik el eméhez a m ásik eg yedhalmaznak pont osan egy eleme kapcsolódik. • A két egyedhalmaz egymásba kölcsönösen egyértelműen leképezhető. (pl személyi szám és személy egyedhalmazok.) -2- Számítógép rendszerprogramozó Adatbázis - kezelés Egy-több típusú kapcsolat: • Ha az eg yik eg yedhalmaz m indegyik el eméhez a másik egyedhalmazból több
elem i s t artozhat. ( pl a megye és település egyedhalmazoknál, m indegyik megyéhez több település kapcsolódhat.) Több-több típusú kapcsolat: • Az e gyik e gyedhalmaz minden eleméhez a m ásik egyedhalmazból több egyed is tartozhat, és f ordítva. ( pl a színek és a házak egyedhalmaz, m inden ház hoz tartozhat több szín és minden színhez több ház.) Példa: • Legyen a személy az eg yik eg yed. E kkor pl a név, a születési dát um, a nem, a foglalkozás tulajdonságok. Leg yen a m ásik eg yed a vállalat adott tulajdonságokkal. • A k apcsolat a személy és vállalat közötti foglalkozási v iszony. J elöljük ez t a kapcsolatot vállalat-személy néven. • Ezeknek az abs ztrakt obj ektumoknak a k onkrét ér tékei: k onkrét személyek, konkrét születési dátum értékek, konkrét nemek, konkrét foglalkozások és konkrét vállalatnevek, címek. A kardinalitás: • Az egyedek a kapcsolat szempontjából a kardinalitási számmal is
jellemezhetők. • Az eg yed maximális kardinalitási száma azt adj a m eg, hog y az eg yed eg y előfordulásához a másik egyedből legfeljebb hány előfordulás tartozhat. • Hasonló a minimális kardinalitási szám definíciója. A belső szerkezet: • Az eg yedeket eg yenként v éges s zámú t ulajdonsággal í runk l e. E zek a tulajdonságok alkotják az egyed belső szerkezetét. A settípus: • A hál ós és hi erarchikus adat bázis-kezelő rendszerekben két egyedtípust (rekordtípust), a köztük lévő kapcsolattal együtt settípusnak hívunk. • A settípusokat névvel láthatjuk el és így hivatkozhatunk rájuk. • A k apcsolatnak i lyenkort i rányt i s adunk ( rajzban eg y nyíllal jelöljük). Az egyik rekordtípust tulajdonosnak (Owner), a másikat tagnak (Member) nevezzük. A kapcsolatok ábrázolása: Vonalas összekötés: • A két egyedtípust egy egyenessel k ötjük ös sze, i lletve ha a k apcsolat i rányát i s ábrázolni akarjuk, akkor
ezt egy nyíllal jelöljük. • Ebben az ábrázolási módban a kapcsolat típusát nem ábrázoljuk. Vállalat -3- Dolgozó Számítógép rendszerprogramozó Adatbázis - kezelés Chen féle jelölés: • A kapcsolatot egy rombusz jelöli, amelybe beleírjuk a kapcsolat tartalmát, nevét. • Megadjuk a kapcsolat típusát (1:1, 1:N, N:M), és a zérus minimális kardinalitást is jelöljük egy körrel. • A kapcsolat irányát nyíllal jelölhetjük. "Varjú lábas" ábrázolás: Egyed-szupertípus, egyed-altípus: • Ha több egyedtípus ugyanazokkal a tulajdonságtípusokkal rendelkezik, akkor ezek az egyedtípusok összevonhatóak egy magasabb szintű egyedtípusba. • Ezt az abs ztrakciót g eneralizálásnak nev ezzük. ( pl a Dolgozó egyedtípus a Vezető, Mérnök, Titkárnő stb. egyedtípusokból összevonva is előáll) • Az ilyen egyedtípust, am elyet t öbb t ípusból g eneralizálunk egyedszupertípusnak, az őt alkotó
egyedtípusokat pedig egyed-altípusoknak hívjuk. • Más szempontból az egyed-altípusok az egyed-szupertípusok specializációi. • Az egyed-szupertípusok és egyed-altípusok kapcsolati rendszerét generalizációs hierarchiának nevezzük. • Az egyed-altípusok lehetnek diszjunktak, amikor nincs közös elemük, és lehetnek nem diszjunktak (átfedés van köztük). (pl az előbb említett Dolgozó - Vezető, Mérnök, Titkárnő stb. diszjunktak, m íg pl a S zemély - Dolgozó, Vevő nem feltétlenül azok.) • A tulajdonságokat az egyed-altípusok öröklik az egyed-szupertípustól. Aggregáció: • Az aggregáció egy olyan kapcsolat az eg yedtípusok k özött, am ikor a tulajdonságok nem öröklődnek, hanem mindegyik egyednek s aját t ulajdonságai vannak. (pl a Szoftvertermékek része a Program és a Felhasználói kézikönyv) Az adatmodellek és az adatbázisok Az adatmodell fogalma: • Az adatmodell eg yedek, t ulajdonságok és k apcsolatok hal maza, am
ely abs ztrakt módon t ükrözi a valós objektumoknak, azok jellemzőinek (tulajdonságainak) és viszonyainak (kapcsolatainak) elvont kategóriáit. • Az adatmodell meghatározza az adatbázis szerkezetét. • Az egyedet, a tulajdonságot és a kapcsolatot adatmodell elemeknek nevezzük. • Az adat modell e lemekből különböző módon állíthatjuk össze magát az adatmodellt, és így különböző adatbázisokat hozhatunk létre. • Az adatmodelleknek három alaptípusa terjedt el. • Az adat modell t ípusa m eghatározza az adat bázis-kezelő rendszert és a használható nyelvet. -4- Számítógép rendszerprogramozó Adatbázis - kezelés Adatmodellek fajtái (a kialakulás sorrendjében): • hierarchikus, • hálós, • relációs. A hálós adatmodell Alapjellemzők: • A hálós adatmodell a hierarchikus modell általánosítása. • Az adat modell s zerkezete l egjobban eg y gráf segítségével í rható l e, ahol a g ráf csúcsai az egyedeket,
élei pedig a köztük lévő kapcsolatokat mutatják. • Az egyes egyedeket itt is tulajdonságokkal írjuk le. Példa a modell szerkezetére: • legyenek az egyedek és tulajdonságaik az alábbiak: VEVŐ Vevő-kód Vevő-név Vevő-cím Rendelési-dátum Határidő Terméknév Termék-méret Rendelt-mennyiség Index RENDELÉS Rendelési-szám TERMÉK Termék-kód Egységár TÉTEL Tételszám • ekkor a hálós modell a következő: VEVŐ RENDELÉS xxxxxxx xxxxxxxxxx TERMÉK TÉTEL xxxxxxx xxxx • A VEVŐ egyed az összes vevő halmaza. • Tekinthetjük c súcsnak a VEVŐ egyedet eg észében. de az eg yes egyedelőfordulásokat (konkrét vevőket) is. • Minden vevőhöz tartozik egy, vagy több rendelés amelyek a VEVŐ - RENDELÉS kapcsolatot létrehozzák. A kapcsolatot felfoghatjuk úgy is, hogy egy konkrét vevő konkrét rendelései egy csokorba vannak fűzve, és ilyenkor ez az egyedelőfordulások közötti kapcsolat az adott
kapcsolat (jelen esetben a VEVŐ RENDELÉS) értékeit, előfordulásait jelenti. -5- Számítógép rendszerprogramozó Adatbázis - kezelés • A gráfban könnyen megkereshető egy konkrét egyed, konkrét rendelésének, konkrét tétele, ha az egyes előfordulásokat összekötő éleken végigmegyünk. • Ezt az utat navigációs útnak nevezzük. • A hálós adatmodellben az egyedek közötti kapcsolatot listaszerkezettel (mutatók segítségével) adhatjuk meg. A hierarchikus adatmodell • A hálós adatmodell speciális változata. • A leíró gráf egy fa. 1. egyed 1.1 egyed 1.11 egyed 1.2 egyed 1.12 egyed 1.x egyed 1.1x egyed A relációs adatmodell • Az előző kettőtől eltérő meggondoláson alapul. • A kapcsolat mint adat modell-elem nem épül be az adat modellbe, c sak a lehetősége. • A fő hangsúlyt a tulajdonságok kapják, ezek írják le a szerkezetet. (Az előző két modellt leíró gráfban a
tulajdonságok nem is szerepeltek.) • Az egyedet egy táblázattal adjuk meg, ahol a táblázat oszlopai a tulajdonságok. • A táblázat sorai (rekordjai) az egyed értékei. • A táblázat tehát maga az egyedhalmaz illetve egyed. • A különböző egyedeket több táblázatban tároljuk, és köztük lévő kapcsolat általában úgy látszik, hogy a t ábláknak van közös oszlopuk (azaz az egyedeknek közös tulajdonságuk). -6- Számítógép rendszerprogramozó Adatbázis - kezelés A RELÁCIÓS ADATMODELL A relációs adatmodell definíciója, főbb jellemzői • A relációs adatmodell tulajdonképpen táblázatokkal, táblákkal dolgozik. • A táblázat oszlopai a tulajdonságok, vagy attribútumok. A reláció definíciója az adatbázis szempontjából: Legyenek adottak az alábbi halmazok: Vezetéknév = { Aba, Kovács, Nagy, Varga,. } Keresztnév = { Abigél, Károly, Péter, Tamás,. } Dátum = { 75.0101, 270301, 87.1222, 88.0118, } Település = {
Battonya, Budapest, Pécs, Sarkad,. } • a v ezetéknév hal maz az ös szes v ezetéknevet, a k eresztnév halmaz az összes keresztnevet, a dátum halmaz a dát umokat, a t elepülés halmaz a m agyarországi településeket tartalmazza, Minden hal mazból v együnk eg y el emet, és írjuk ezeket egy meghatározott sorrendben egymás mellé: Aba Tamás 70.0101 Sarkad Varga Péter 27.0103 Pécs Varga Károly 88.0118 Battonya Nagy Ferenc 76.1012 Budapest • ha a négy halmazból az adatokat valamilyen előre meghatározott szempont szerint v álogatjuk ös sze ( pl. egy i skola t anulói), ak kor í gy eg y relációt hoztunk létre, • a relációnak adhatjuk pl. a Nyilvántartás nevet, az adatokhoz pedig oszlopnévnek írhatjuk a halmazok neveit; ezek lesznek a tulajdonságok, • a t ulajdonságokat eg y adot t r eláció es etén el k ell l átni konkrét tartalommal (pl. a dátum oszlop a születési dátumokat jelentheti, de jelenthet mást is), A reláció halmazelméleti
definíciója: Legyenek D1, D2, ., Dn halmazok: • A hal mazok Descartes - szorzatán (direkt - szorzatán) az t a D halmazt ér tjük, amelynek elemei az összes (v1, v 2, ., v n) " érték n-esek", ahol: v1∈D1, v 2∈D2, , vn∈Dn. • Ekkor a szorzathalmaz minden eleme maga is egy halmaz, azaz a szorzathalmaz egy halmazrendszer. • Az adott halmazok elemeit m inden l ehetséges m ódon k ombinálni k ell, ek kor kapjuk a direkt - szorzatot. • A Descartes - szorzat egy R részhalmazát relációnak nevezzük. • A D1, D 2, ., D n halmazokat a r eláció tartományainak (domain), a r eláció eg y elemét "n-esnek" (tuple) nevezzük. • Szokás a reláció elemeit rekordnak is hívni. -1- Számítógép rendszerprogramozó Adatbázis - kezelés A tartományokból képezzük egy adatbázis konkrét attribútumait, tulajdonságait. A megfelelő tartomány egy attribútum értékkészlete. A továbbiakban az attribútumokat a következőképpen
jelölhetjük: A = {A1, ., An} Az attribútumok (oszlopok) s zámát az R r eláció fokának, a rekordok (sorok) számát a reláció számosságának hívjuk. • Az adatbázis rövidített jelölése: R(A1, ., An), tehát pl. Nyilvántartás(Vezetéknév, Keresztnév, Születési dátum, Lakóhely) • A f enti j elölési f ormát a reláció sémájának, a k itöltött adat táblát az adot t séma egy értékének nevezzük. • • • • Reláció, tábla, adatbázis: • A relációs adatbázisok általában nem egyetlen relációból (táblából) állnak, hanem több tábla alkot egy adatbázist. • Azt, hogy egy adatbázist hány t áblára bont unk s zét m ár t ervezéskor el k ell dönteni. • A t áblák k ialakításánál az at tribútumok közötti kapcsolat jelentősen befolyásolja, hogy m ilyen os zlopok k erülnek eg y-egy t áblába, hi szen ha egy adatbázis egymástól független táblákból áll, akkor nem tudunk vele műveleteket végezni. Például
legyen az alábbi két tábla: DOLGOZÓ PRÉMIUM Azonosító Név Fizetés Összeg Dátum 001 Kovács Péter 38 000 Ft 17 200 Ft 98.0205 002 Nagy József 52 000 Ft 22 000 Ft 98.0502 007 Kiss Antal 45 600 Ft 9 600 Ft 98.0830 35 500 Ft 99.0102 • ekkor a második tábla semmilyen konkrét információval nem szolgál. • Ha a m ásodik t áblát k iegészítjük a dol gozó az onosítójával, ak kor m ár megtudhatjuk, hogy egy adott dolgozó mennyi prémiumot kapott. Ekkor a táblák a következő mezőket tartalmazzák: DOLGOZÓ Azonosító PRÉMIUM Azonosító Név Összeg Fizetés Dátum • a két tábla tehát a dolgozó azonosítóján keresztül kapcsolódik egymáshoz. • A két reláció a következő: DOLGOZÓ(Azonosító, Név, Fizetés), PRÉMIUM(Azonosító, Összeg, Dátum). • A különböző táblákat tehát az azonos attribútumokkal kötjük össze; az ilyen attribútumokat kulcsmezőnek vagy kapcsolómezőnek hívjuk. -2-
Számítógép rendszerprogramozó Adatbázis - kezelés Egyedtípus, reláció: • A korábbiak alapján tudjuk, hogy egy egyedet a tulajdonságaival adunk meg. • Ha adott szempontok szerint létrehozunk eg y r elációt ak kor ez éppen eg y egyedtípust ad meg, illetve az egyedtípus egy relációt jelent. • A hálós és hierarchikus modellben s ettípusnak hí vtunk k ét eg yedtípust a k öztük lévő kapcsolattal együtt, azaz pontosan rögzítettük az egyes egyedelőfordulások közötti kapcsolatot. • A relációs modellben is kapcsolatot definiálunk két tábla között, de a táblák egyes soraihoz nem rendeljük hozzá konkrétan egy másik tábla sorait. • Más m egfogalmazásban a hál ós adat modellben ún. statikus, m íg a r elációs modellben dinamikus kapcsolat van. A relációs adatbázis belső szerkezete • A reláció tulajdonképpen egy adatok közötti struktúra. • Az attribútumok vizsgálatakor m egállapíthatjuk, hog y l esznek ol
yanok, am elyek kitüntetett szerepet kapnak. • Az attribútumok között lehet valamilyen kapcsolat is. A reláció kulcsai: • Az A attribútumhalmaz egy K részhalmazát kulcsnak nevezzük, ha: – a K értékei az R reláció minden egyes sorát egyértelműen meghatározzák, – és ha egyetlen attribútumot is elhagyunk K-ból, akkor ez már nem teljesül. • A kulcs t ehát eg y ol yan at tribútum c soport, am elyen az at tribútumok eg yütt tekintett értékei egymástól különböznek, azaz nincs olyan két sor, amelyekben a kulcsban szereplő attribútumok értékei azonosak volnának. • Szokás ezt a K halmazt minimális kulcsnak, i lletve eg y ol yan K halmazt amelynek a K részhalmaza és K is kulcs szuperkulcsnak nevezni. • Ha a kulcs egyetlen attribútumból áll, akkor egyszerűnek nevezzük, ha nem akkor összetettnek. • Nyilvánvaló, hogy egy relációban mindig van kulcs; szélsőséges esetben ez lehet a teljes attribútumhalmaz is. • Egy
relációnak több kulcsa is lehet. • Azokat az attribútumokat, amelyek l egalább eg y k ulcsban s zerepelnek, elsődlegesnek, a többieket másodlagosnak hívjuk. A külső kulcs: • Külső kulcsnak, v agy idegen kulcsnak nev ezzük az okat az at tribútumokat, amelyek egy másik relációban kulcsot alkotnak, de a vizsgáltban nem. Külső kulcs ugyanabban a táblában: • A relációs adatmodellben megengedjük, hogy egy külső kulcs ugyanabban a táblában szerepeljen amelyben ő a kulcs. • Például, ha eg y Dolgozók nevű táblában a dolgozókat egy azonosító jelöli é s a dolgozó főnökét is feltüntetjük, ugyanazzal az azonosítóval hivatkozva rá. Ekkor az Azonosító mező kulcsként és külső kulcsként is szerepel. -3- Számítógép rendszerprogramozó Adatbázis - kezelés Külső kulcs párhuzamos kapcsolatban: • A külső kulcs egy táblázatban többféle értelmezésben is jelen lehet. • Például egy Gépjárműveket tartalmazó
táblában egy személy Azonosító jelentheti a tulajdonost, valamint az üzemben tartót is. Külső kulcs több táblából: • Egy t ábla külső kulcsai több táblából is származhatnak, ha az adatbázis kettőnél több táblából áll. • Ekkor minden egyes külső kulcs egy-egy másik t áblával l étesített k apcsolatot jelenti. Funkcionális függőség: Legyen R(A1, ., A n) reláció és l egyenek P és Q az A attribútumhalmaz részhalmazai: • P funkcionálisan meghatározza Q-t (P Q), vagy másképp Q funkcionálisan függ P-től ha abból, hog y a r eláció valamely k ét s ora m egegyezik P hal mazon következik, hogy a két sor értéke megegyezik Q halmazon is. • Ez a függőség nem feltétlenül létezik minden relációban, viszont ha l étezik akkor nincs két olyan sor a r elációban, amelyek értékei P-n megegyeznek, de Q-n akár csak egy értékben is különböznének. A definíció értelmezhető a következőképpen is: • A P attribútum
részhalmaz f unkcionálisan m eghatározza a Q attribútumhalmazt, ha m inden P-hez t artozó ér tékhez pont osan eg y Q-hoz tartozó ér téket t udunk hozzárendelni. • Ebben az értelmezésben bel átható, hog y a r eláció k ulcsa és a r eláció t öbbi attribútuma között funkcionális függőség áll fenn. Tekintsük az alábbi adatbázist: • Légijárat(Repülőtársaság, Járatszám, Dátum, Géptípus, Indulási időpont, Érkezési időpont, Indulási hely, Érkezési hely, Étkezés típusa, Ülőhely sorszáma, Osztály). • Ekkor fennállnak az alábbi függőségek: – (Repülőtárs., Járatsz, Dátum) (Géptípus, Indulási ip, Érkezési ip), – (Repülőtárs., Járatsz) (Indulási h, Érkezési h, Étkezés típusa), – (Géptípus, Ülőhely) (Osztály). • Ugyanis a repülőtársaság neve, a járatszám és a dátum meghatározza a géptípust, valamint az indulási és érkezési időpontokat. • Ha a repülőtársaság és a járatszám
megegyezik, akkor az indulási és érkezési hely, továbbá az étkezés típusa is meghatározott. • Ha megmondjuk a géptípust és az ülőhelyet, akkor az osztály is adott. Megjegyzések: • A kulcs fogalmát definiálhatjuk a funkcionális függőség fogalmával: – Az A attribútumhalmaz K részhalmaza kulcsa az R(A) relációnak, ha K A és nincs olyan Y részhalmaza K-nak, hogy Y A teljesül. • A funkcionális függőség tehát a valóságos világban meglévő függőségeket fejez ki. -4- Számítógép rendszerprogramozó Adatbázis – kezelés Relációs adatbázis-kezelő nyelvek A relációs adatbázis – kezelő rendszer 1970 80-as évek - a relációs adatmodell születése (Codd) - programozási nyelv - ALPHA - az SQL nyelv kifejlesztése - pontosan követi a relációs adatmodell algebráját A reláció (tábla) mint file létrehozása A reláció - logikai tábla, - fizikai tárolás file formájában a memóriában illetve háttértárolón.
Az első feladat a reláció szerkezetének definiálása, ez a r eláció nev ének és attribútumainak megadásából áll. Az attribútumok megadásakor azt is megmondjuk, hogy milyen legyen a típusa és a mérete, tehát egy típusdeklarációt végzünk. (A programnyelvekben a v áltozók definiálásakor is ezt tesszük.) Az adatbázis – kezelő rendszerek alap attribútum típusai: − numerikus egész (integer), − numerikus decimális (decimal), − karakteres (character), − logikai (logical), − dátum (date). A tábla létrehozása a legtöbb nyelven a következő formátumban történik: CREATE táblanév az attribútumok típusának megadása A létrehozással a t ábla m ég nem töltődik fel adat okkal. E zt az er re s zolgáló utasításokkal lehet megtenni. Lekérdezés az adatbázisból A l ekérdezések r ekordokra v onatkoznak. A k ritériumokat, feltételeket mindig az attribútumokra mondjuk k i, i lletve az at tribútumokat beépítjük egy logikai
kifejezésbe. Néhány más parancs A fent említett két művelet típus talán a leglényegesebb. Ezeken kívül szükség van az adat bázis feltöltését, módosítását, törlését és a k ikeresett rekordok kiíratását végző utasításokra is. -1- Számítógép rendszerprogramozó Adatbázis – kezelés Host – nyelv, valódi programnyelv Kétféle adatbázis – kezelő nyelv létezik. Az egyik a hos t (befogadó) típusú nyelv, amely csak egy másik programnyelvvel együtt működik, a másik önálló, az adatbázis – kezelő parancsokat magában foglalja. A relációs algebra A relációs adatbáziskezelők lekérdező utasításai – különösen az SQL nyelvben – a relációs algebra műveleteit használják. Relációk uniója (egyesítése): Műveleti jel: ∪ R és S két n-edfokú r eláció. E zek uni óján az t az R ∪ S szintén n-edfokú relációt értjük, amelynek r ekordjai vagy R-nek, vagy S-nek vagy mindkettőnek elemei. R A B C D
E F a b c b d e a b c d d e a d b b d e f c b f c b a d b ∪ S = R∪S Relációk különbsége: Műveleti jel: – R és S két n-edfokú reláció. Különbségükön azt R – S n-edfokú relációt értjük, amelynek elemei R-nek elemei, de S-nek nem. R A B C a b f d D E F c f a d a b c a d b c d d b c b c – S = R–S Descartes – szorzat: Műveleti jel: × R n1-edfokú, S n2-edfokú r eláció. D escartes – szorzatukon az t az (n1 + n2)edfokú R × S relációt értjük, amelyben minden elem első részét az R relációból, második részét az S relációból vesszük. -2- Számítógép rendszerprogramozó Adatbázis – kezelés R minden sora mellé minden lehetséges módon leírjuk S sorait. R D E F a a g a b f a b c A B C c b f d × S A B C D E F b c b a a g b d c b a f a d f a b a g b f a b f a d d b c a g b d b c f a d R×S =
Projekció: Műveleti jel: π Projekciót végzünk egy reláción, ha kiemelünk belőle néhány megadott attribútumot és a maradékot adott szempont szerint átrendezzük. Az így kapott reláció az eredeti projekciója. Jelölése: πi1,,im(R), ahol i1,,im a m eghagyott és át rendezett at tribútumok nevei. R A B C A C a b c a f a d d b c πA,C(R) B A c b a f d a f d c b d πB,A(R) Szelekció: Műveleti jel: σF Az R reláción végzett s zelekció eg y σF(R) relációt er edményez, am elynek elemei az R reláció el emei k özül k erülnek k i az F formula ál tal m eghatározott módon. Az F formula állhat operandusokból, a r ajtuk értelmezett aritmetikai relációkból (<, >, =, ≤, ≥, ≠) és logikai műveletekből (és, vagy, nem). R A B C σ(R) A B C a b c A=a vagy B=g a b c d e b a d f f g a f g a a d f -3- Számítógép rendszerprogramozó Adatbázis – kezelés Relációk hányadosa:
Műveleti jel: ÷ R n-ed, S m-ed fokú reláció, ahol n > m. A két reláció hányadosa az az R ÷ S reláció, am ely n - m oszlopból áll és am elynek D escartes - szorzata az S relációval benne van az R relációban. Tehát: (R ÷ S) × S ⊆ R. A hányados tulajdonképpen a Descartes - szorzat speciális inverze. R A B C D E F a b c d c d a b a b e f e f e d b c e f e d c d e d e f a b d e ÷ S = R÷S Relációk metszete: Műveleti jel: ∩ Két n-edfokú r eláció, R és S R ∩ S-sel jelölt m etszetén az t a r elációt ér tjük, amelyik R és S közös sorait tartalmazza. R A B C D E F a a b a a b a a b a c b b c d b c d b c d e f g a a d ∩ S = R∩S Összekapcsolás: Műveleti jel: >< R n-ed, S m-ed fokú reláció. Ö sszekapcsolásukon eg y ol yan (n + m)-ed f okú R >< S -sel jelölt relációt értünk, amelynek elemei az R × S elemei közül azok, amelyekre az R
reláció i és az S reláció j attribútuma k özött t eljesül a Θ -val jelölt aritmetikai reláció (<, >, =, ≤, ≥, ≠). A szelekció műveletével jelölve: R A B C >< 1 2 3 B<D 4 5 6 7 8 9 S R >< S iΘj D E 3 6 = σ iΘ ( n + j) (R × S) A B C D E 1 1 2 3 3 1 3 1 2 3 6 3 4 5 6 6 3 -4- = R >< S Számítógép rendszerprogramozó Adatbázis – kezelés Természetes összekapcsolás: Műveleti jel: R n-ed, S m-edfokú reláció. A természetes összekapcsolás műveletével képzett R S relációt a következőképpen kapjuk: − Képezzük R × S-t. − Vegyük az azonos nevű attribútumokat R-ből és S-ből és emeljük ki azokat a rekordokat R × S-ből, amelyekben R és S azonos nevű oszlopaiban lévő értékek megegyeznek. − Szüntessük meg a kétszer szereplő oszlopokat. R A B C A × S B C D = R×S A R.B RC SB SC D a b c b c d a b c b c d d b c b c e a
b c b c e b b f a d b a b c a d b c a d d b c b c d d b c b c e d b c a d b b b f b c d b b f b c e b b f a d b c a d b c d c a d b c e c a d a d b R.B RC SB SC D RS A B C D a b c b c d a b c d a b c b c e a b c e d b c b c d d b c d d b c b c e d b c e c a d a d b c a d b -5-