Advertisement
csaki

adatbázis elmélet

Jan 13th, 2014
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 57.67 KB | None | 0 0
  1. 1.Adat,információ,adatbázis,ABKR
  2.  
  3. Miért van szükség adatbázisokra?
  4. - A külvilágból a nap 24 órájában információ árad felénk (tv-n, ismerõsök elmondása alapján). Ezek közül a számunkra legfontosabbakat próbáljuk meg kiszûrni. Ezeket azonban lehetetlen fejben tartani, így valahol tárolnunk kellene. Ha tároljuk fontos lenne, hogy gyorsan, hatékonyan hozzáférjünk, és a tárolás is biztonságos legyen.
  5. - Ma már egyre több ember, egyre több számítógépen, egyre nagyobb mennyiségû tárolt adatot használ föl. (alkalmazott információs rendszerek: raktárkészlet nyilvántartás, betegnyilvántartás, menetrendek, tervezõi rendszerek, tanulói nyilvántartás)
  6. Mindezekben az a közös jellemzõ, hogy nagy adathalmazt kezelnek, az adatok közt bonyolult kapcsolatok is fennállhatnak, és ezeket az adatokat hosszabb ideig is meg kell õrizni. Ezeken kívül
  7. Követelmények, amiknek az ilyen rendszereknek feltétlenül meg kell felelni:
  8. - Nagymennyiségû adat hatékony kezelése
  9. - Egyszerre több felhasználó általi elérés támogatása
  10. - Integritásõrzés
  11. - Védelem
  12. - Hatékony programfejlesztés
  13.  
  14. - Az elsõ adatbázis-kezelõ rendszerek a fájlkezelõ rendszerekbõl kezdtek kialakulni a 60-as évek végén.
  15. - Ezek terjedelmes és drága programrendszerek voltak, melyek nagyméretû gépeken futottak.
  16. - Azok a rendszerek voltak az elsõ jelentõségteljes alkalmazási területei, melyekben sok adatelemet tároltak és a rendszerben sok lekérdezést és módosítást hajtottak végre.
  17. - Néhány példa: Vállalati nyilvántartások, banki rendszerek, repülõgép-helyfoglalási rendszerek.
  18. - 1970-ben Ted Codd cikkének közzététele után – amiben azt javasolta, hogy az adatbáziskezelõ-rendszerek az adatokat táblázatok formájában jelenítsék meg a felhasználó felé – jelentõsen megváltoztak az adatbáziskezelõ rendszerek.
  19. - A különbség a korábbi rendszerekkel szemben, hogy a felhasználónak nem kell az adatok tárolási struktúrájával foglalkoznia a relációs rendszerben, ugyan is a lekérdezések egy olyan magas szintû nyelv közvetítésével fejezhetõk ki, melyek alkalmazása igen csak megnöveli az adatbázis programozók hatékonyságát.
  20. - Ebben a modellben nincsenek kitüntetett adatok, azaz a halmaz elemeirõl nyilvántartott tulajdonságok egyenrangúak.
  21. - A rendszer ez által sokkal rugalmasabban használható, mivel a keresési feltételek szinte tetszõlegesen megfogalmazhatók.
  22. - Az IBM volt az elsõ olyan cég, mely relációs modell elõtti, és a relációs modelleket támogató adatbáziskezelõ-rendszert is árusított.
  23. - Napjainkra a relációs modellen alapuló adatbázisrendszerek ugyanolyan elterjedt számítógépes eszköznek számítanak, mint korábban a szövegszerkesztõ, táblázatkezelõ programok.
  24.  
  25. Adat és információ
  26. Az információ észlelt, érzékelt, felfogott és a fogadó számára szükséges, újdonságot jelentõ adat, amit megszerzett ismereteinktõl függõen értelmezünk.
  27. Az adat fogalmán valamilyen tény megjelenését értjük, amit rögzíteni, tárolni, átalakítani és továbbítani tudunk. Az adat fogalma igencsak tág.
  28. Az adatbázis-kezelés szempontjából az adat a számítógépen tárolt információ nélküli jelsorozat, amelybõl a feldolgozás során nyerhetünk információt.
  29. Adatbázis:
  30. Ha adatokat gyûjtünk össze, és azokat a közöttük fennálló összefüggésekkel együtt egy helyen tároljuk, akkor az így létrehozott együttest adatbázisnak nevezzük: Például: betegek kartonjai a kórházban, autók adatai a rendõrségen, egy telefonkönyv bejegyzései.
  31. Adatbázis az integrált, logikailag összetartozó információk összessége; az adatok és a köztük lévõ összefüggések rendszere, melyet egymás mellett tárolunk.
  32. Az adatbázis egy olyan adatgyûjtemény, amely szervezett módon tárolja az adott feladathoz kapcsolódó adatokat, gondoskodik az adatokhoz való hozzáférésrõl, mindemellett az adatok integritásának megõrzését, és az adatok védelmét biztosítja. Az adatbázis-kezelõ rendszerek
  33. Ahhoz, hogy a késõbbiekben hatékonyan tudjunk dolgozni az adatbázissal, fontos, hogy jól megtervezzük a szerkezetét.
  34. Az adatbázis rendszer magába foglalja az adatbázisokat, a számítógépes erõforrásokat, sõt tágabb értelemben ide vehetjük az adatbázis-adminisztrátorokat, akik azok a személyek, akik az adatbázisok kezelését, tervezését végzik.
  35.  
  36. Az adatbázis kezelõ rendszerek (ABKR / DBMS)
  37. - Az adatbázis-kezelõ rendszerek megkönnyítik az adatbázisok kezelését. Feladatuk az adatbázisban lévõ adatok rögzítése, tárolása, kezelése.
  38.  
  39. Az ANSI/SPARC modell a felhasználó és a számítógépes háttértárolón fizikailag tárolt adatok közötti kapcsolatot szemlélteti. Ez alapján három szintet különböztetünk meg:
  40. • Külsõ szint, más néven felhasználói nézet, mely a felhasználó szemszögébõl vizsgálja az adatokat.
  41. • Koncepcionális szint, mely magába foglalja az összes felhasználói nézetet. Az adatbázist ezen a szinten a logikai sémával adják meg.
  42. • Belsõ szint, más néven fizikai szint, ez az adatoknak az adott számítógépes rendszerben való aktuális bemutatását jelenti.
  43. Fizikai adatfüggetlenség:
  44. A fizikai adatfüggetlenség azt jelenti, ha a belsõ szinten változtatást hajtunk végre, az nincs hatással a logikai sémára, így azon nem kell változtatásokat végrehajtanunk. Tehát, ha az adatok tárolásában változás történik, az nincs hatással a felette lévõ szintekre.
  45. Logikai adatfüggetlenség:
  46. A külsõ és a koncepcionális szint közötti adatfüggetlenség a logikai adatfüggetlenség.
  47.  
  48. Adatbázis-kezelõ rendszernek nevezik az olyan programrendszereket, melynek feladata az adatbázishoz történõ hozzáférések biztosítása és az adatbázis belsõ karbantartási feladatainak ellátása, azaz:
  49. • Adatbázisok létrehozása
  50. • Adatbázisok tartalmának definiálása
  51. • Adatok tárolása
  52. • Adatok lekérdezése
  53. • Adatok védelme
  54. • Adatok titkosítása
  55. • Hozzáférési jogok kezelése
  56. • Fizikai adatszerkezet szervezése
  57.  
  58. Fontos az adatbázis-architektúrák ismerete, mert nem igaz az, hogy bármely adatbázis-kezelõ ugyanúgy ki tudja szolgálni az igényeinket bármely környezetben!
  59. 1.) lokális adatbázisok
  60. - az elsõ ilyen architekturális szint volt
  61. - 1 gép, 1 adatbázis, 1 felhasználó
  62. - 1980 körül (DBASE világ, DOS alapokon)
  63. - A DOS eleve nem adott lehetõséget a több felhasználós üzemmódra, és a több szálon futtatásra - márcsak ezért sem volt hálózati ütközés, agy konkurens hozzáférés jellegû probléma.
  64. - Ilyen adatbázisok voltak a dBase 3, 4, 5; ennek a továbbfejlesztett változata a Paradox 4, 5, 7; aminek stabilabb volt az adattábla–kezelése, de cserébe kaptunk egy sérülékeny indextáblát.
  65. - egy adattábla – egy fájl; egy index – egy fájl; egy leíró tábla – egy fájl, check-feltételek egy táblához – egy fájl. Ha volt egy adatbázisom 100 táblával, akkor egy könyvtárban néhány 100 darab fájl jött létre és ezeket kezelte egy adatbázis–kezelõ motor.
  66. - Fájl szinten dolgozott, bájtokat mozgatott és blokkokat kezelt. Mivel fájl szinten nyúlt hozzá, sérülékeny volt.
  67. - sok fájl, sok sérülési, törlési lehetõség
  68. - pl. MS Access (u.a. mint a paradox, vagy DBASE, csak mindent 1 file-ban tárol)
  69. - sérülékeny ha nagy terheléssel akarjuk használni, de tanításra, ismerkedésre kiváló
  70. - a forgalmi táblának, amiben folyamatosan növekszik a rekordok száma, vannak korlátaik - százezres nagyságrendig mûködik jól, onnantól belassul, és egyre gyakrabban jönnek a hibák
  71. - a lokális-fájl alapú rendszereknek a teljesítõképessége kb. 100 000-es nagyságrendû.
  72. - kicsiben jó, pl. mariska néni virágboltjába! (oda fölösleges oracle...)
  73.  
  74. 2.) file-server architektúra
  75. - kb. az 1990-es évek-ben
  76. - Novell fénykora, megosztott könyvtár, abban a lokális adatbázis fájlok, mindenki számára írási-olvasási joggal
  77. - ha ezeket többen akarták egyszerre használni, akkor konkurens hozzáférés probléma (a userek egyszerre akarták ugyanannak a táblának ugyanazt a rekordját módosítani)
  78. - próbálkozás: DBASE-ben zárolták az adatbázist, vagy a táblát, - ez csak az enyém, csak én használom, ha végeztem, felszabadítom és te is használhatod.
  79. - a zárolás nem a rendszer része volt, ezt a programozó vezérelte (sok probléma forrása, ha pl. elfelejtették felszabadítani a táblát...)
  80. - karakteres felületen programozható, aránylag gyors a megfelelõ környezetben, csak nem túl megbízható
  81. - nem volt eszköz a konkurens hozzáférés problémájának orvoslására
  82. - Voltak próbálkozások, hogy amikor az egyik felhasználó dolgozik vele, akkor lemásolja, a teljes adatbázist magának, abban dolgozott, kinaplózta a különbségeket, amiket õ csinált, és amikor visszatöltötte, csak különbségeket vitte a napló alapján föl. De ezt csak este lehetett, amikor más nem nyúlt az adatbázishoz.
  83.  
  84. 3.) Kliens-szerver architektúra
  85. - van egy szerver, ez nyújt szolgáltatásokat, és vannak a kliensek, amik ezt használják
  86. - adatbázis-kezelésnél a szerver nem feltétlenül egy "nagy böhöm gép" és a kliensek laptopok, hanem az a server, ami az adatbázis szolgáltatást nyújtja, ez akár egy kis laptop is lehet, és ugyanúgy csatlakozhatunk rá egy laptoppal, mint kliens.
  87. - a serveren alapból nincs meg az adatbázis szolgáltatás, ezt telepítenünk kell! (SQL server)
  88. - itt a kliens csak egy kérést küld a szervernek, ott az sql szerver szedi össze, és küldi vissza az eredményt
  89. pl. oracle, IBM db2, MS SQL server , interbase - fizetõsök
  90. firebird (ez is interbase), postgre, mysql - ingyenesek
  91.  
  92. 3.) Multi-tier (többrétegû architektúra)
  93. - itt már nem feltétlen hardverekre, hanem logikai rétegekre gondolunk
  94. - van a kliens-szerver architektúra, e közé, a SQL szerver és kliens p rogramok közé építünk be 1-2 köztes réteget
  95. - ezt a réteget kereshetik meg a kliensek a kéréseikkel, és csak ez a réteg tud az adatbázishoz nyúlni, és választ adni a klienseknek
  96. - a kliensek nem tudnak közvetlen az adatbázishoz kérdéssel fordulni, sem hozzányúlni!
  97. - itt nem az SQL szerver által menedzselt adatbázisban tárolt eljárásokat hívogatja a kliens, hanem a köztes rétegben tároltakat (üzleti logika - BL - Business Logic Layer, ami egy eljárás-függvény-metódus gyûjtemény gyakorlatilag)
  98. - tehát ezek a kliensek a BL-el kommunikálnak, ezt nem lehet megkerülni!
  99. (pl. nem kell kliensprogit a gépre tenni, hanem böngészõbõl egy adott webcímen keresztül kommunikálok)
  100.  
  101. 5.) Vastag kliens
  102. - képes arra, hogy önmaga hajtson végre nagyobb adatmennyiségekkel feldolgozásokat, amikor a szerver inkább elsõdleges tárolóként viselkedik.
  103. - Ennek ellenére, a kifejezés inkább a számítógép szoftverére vonatkozik
  104. - egyre inkább alkalmazzák hálózati számítógépek esetén, ahol a számítógép jelentõs hálózati alkalmazásokat (is) futtat.
  105.  
  106. 6.) Vékony kliens
  107. - egy minimális eszközökkel rendelkezõ kliens
  108. - a szükséges erõforrásokat is a távoli (host) gépen veszi igénybe.
  109. - feladata többnyire kimerül az alkalmazás szerver által küldött adatok grafikus megjelenítésében
  110. - a tényleges, nagy mennyiségû adat mozgatását, kezelését igénylõ feladatot az alkalmazás szerver végzi el.
  111.  
  112. Alapvetõ szerkezetek
  113. - Séma: minden adatbázisnak van egy belsõ struktúrája, ami tartalmazza az összes adatelem és a közöttük lévõ kapcsolatok leírását. Ezt a struktúrát az adatbázis sémájának nevezzük.
  114. - a legjelentõsebb metaadatok az adatok típusának definícióját, az egyes adatok azonosítására szolgáló neveket tartalmazzák, utalásokat arra, hogy milyen kapcsolatok, összefüggések vannak az adatok között, valamint az adatbázis adminisztrációjával kapcsolatos információkat. Azaz segítségükkel tudjuk tárolni a tényleges adatok melletti strukturális információt. Az adatbázis felépítése az
  115. van néhány általános elv amelyet minden adatbázison alapuló alkalmazás használ:
  116. - tábla, vagy adattábla: egy kétdimenziós tábla, mely a logikailag szorosan összetartozó adatokat szemlélteti. A tábla oszlopokból és sorokból áll.
  117. - rekord: az adatbázis egy sora. Egy rekordban tároljuk az egymással összefüggõ adatokat.
  118. - A tábla sorai tartalmazzák az egyes tulajdonságok konkrét értékeit.
  119. - A mezõ, a tábla egy oszlopa. Minden egyes oszlop az adott dolog egy jellemzõjét jelenti, mely névvel és típussal van ellátva.
  120. - Az elemi adatok, a tábla celláiban szereplõ értékek, melyek az egyed konkrét tulajdonságai.
  121. - Az egyed az, amit le akarunk írni, amelynek az adatait tároljuk és gyûjtjük az adatbázisban. Az egyedet idegen szóval entitásnak nevezzük.
  122. - Egyednek tekintünk például egy személyt. Egyednek nevezzük azokat a dolgokat, objektumokat, amelyek egymástól jól elkülöníthetõk, melyekrõl adatokat tárolunk és tulajdonságokkal jellemzünk. Egyedek lehetnek például a dolgozó, kifizetés, anyag, személy, stb.
  123. - Ebben a formában az egyed mint absztrakt fogalom szerepel. Mondhatjuk azt is, hogy az egyed konkrét dolgok absztrakciója. Az absztrakt egyedekre szokás használni az egyedtípus kifejezést is.
  124. - Az attribútum, a tulajdonság, az egyed valamely jellemzõje. Az egyed az attribútumok összességével jellemezhetõ.
  125. - Egy személy egy jellemzõje lehet például a neve.
  126. - Az egyed típus az egyedre vonatkozóan megadott tulajdonságok összessége.
  127. - Például egy személy leírható a nevével, a születési dátumával, testmagasságával, haja és szeme színével együttesen.
  128. - Az egyed elõfordulás az egyedre megadott konkrét tulajdonságok.
  129. - Például Koltai Lea Kiara 5 éves, barna hajú, barna szemû, 110 cm magas, óvodás.
  130. - Az egyed elõfordulások a rekordoknak felelnek meg.
  131. - A gyakorlatban az egyedtípust szokás rekordtípusnak is nevezni. (rekord-vagy struktúratípus).
  132. - Adatredundancia, amikor egy adatot egynél több helyen tárolunk egy számítógépes rendszerben, adatredundanciáról beszélünk.
  133. - Mivel szinte lehetetlen elkerülni a redundanciát, arra kell törekednünk, hogy a többszörös elõfordulásokat minimálisra redukáljuk. Ennek módszere, hogy az ismétlõdõ adatokat az adatbázis tervezése során kiemeljük, és külön tároljuk, a megfelelõ helyen hivatkozva rá.
  134.  
  135.  
  136.  
  137. 2.Adatmodellek fejlõdése , a relációs adatmodell jellemzése
  138.  
  139. Adatmodellek fejlõdése
  140. - Az informatikában azokat a modelleket nevezzük adatmodelleknek, amelyek az adatok szerkezetének leírására szolgálnak.
  141. - 3 modell terjedt el
  142. - kialakulóban van a 4., az objektum orientált modell
  143.  
  144. 1.) hierarchikus
  145. - ez a legõsibb adatmodeel
  146. - az adatokat hierarchikus szerkezetben tárolja, ez leginkább egy fához hasonlítható
  147. - A fa mindegyik csomópontja egy rekordtípusnak felel meg.
  148. - Az adatok között un. szülõ-gyermek kapcsolat van.
  149. - Minden adatnak tetszõleges számú leszármazottja lehet, de csak egy õse.
  150. - Ez a modell leginkább egy-egy és egy több jellegû kapcsolatok megvalósítására alkalmazható.
  151. - Napjainkra ezt a modellt teljesen kiszorította a relációs adatmodell.
  152. - Az adatbázis több egymástól független fából állhat.
  153. - A fa csomópontjaiban és leveleiben helyezkednek el az adatok.
  154. - A közöttük levõ kapcsolat, szülõ gyermek kapcsolatnak felel meg. Így csak 1:n típusú kapcsolatok képezhetõk le segítségével.
  155. - Az 1:n kapcsolat azt jelenti, hogy az adatszerkezet egyik típusú adata a hierarchiában alatta elhelyezkedõ egy vagy több más adattal áll kapcsolatban.
  156. - A hierarchikus modell természetébõl adódóan nem ábrázolhatunk benne n:m típus÷ kapcsolatokat (lásd a háló modellt).
  157. - Emellett további hátránya, hogy az adatok elérése csak egyféle sorrendben lehetséges, a tárolt hierarchiának megfelelõ sorrendben.
  158. - alkalmazására példa: családfa, fõnök-beosztott viszony, iskola szerkezete
  159.  
  160. 2.) hálós
  161. - ez a modell a hierarchikus modell továbbfejlesztése
  162. - egy egyedtípusnak több õse is lehet, az adatok között tetszõleges kapcsolatrendszer alakítható ki.
  163. - tehát nem csak fa, hanem tetszõleges gráf is kialakítható segítségével
  164. - ebben az adatmodellben kezelhetõek a több-több kapcsolatok is.
  165. - hátránya, hogy nagy a tárigénye
  166. - nagy gépes környezetben fordul elõ
  167. - mára elavult
  168. - A hálós adatmodell esetén az egyes azonos vagy különbözõ összetételû adategységek (rekordok) között a kapcsolat egy gráffal írható le.
  169. - A gráf csomópontok és ezeket összekötõ élek rendszere, melyben tetszõleges két csomópont között akkor van adatkapcsolat, ha õket él köti össze egymással.
  170. - Egy csomópontból tetszõleges számú él indulhat ki, de egy él csak két csomópontot köthet össze.
  171. - Azaz minden adategység tetszõleges más adategységekkel lehet kapcsolatban.
  172. - ebben a modellben n:m típusú adatkapcsolatok is leírhatók az 1:n típusúak mellett.
  173. - A hierarchikus és a hálós modell esetén az adatbázisba fixen beépített kapcsolatok következtében csak a tárolt kapcsolatok segítségével bejárható adat-visszakeresések oldhatók meg hatékonyan (sok esetben hatékonyabban, mint más modellekben).
  174. - További hátrányuk, hogy szerkezetük merev, módosításuk nehézkes.
  175.  
  176. 3.)Relációs
  177. - kidolgozása Codd nevéhez fûzõdik (1971)
  178. - A relációs adatszerkezet egyszerûen értelmezhetõ a felhasználók és az alkalmazás készítõk számára is, így ez lehet közöttük a kommunikáció eszköze.
  179. - A logikai adatmodell relációi egy relációs adatbázis kezelõ rendszerbe módosítások nélkül átvihetõk.
  180. - A relációs modellben az adatbázis tervezés a normál formák bevezetésével egzakt módon elvégezhetõ
  181. - A relációs adatmodell jellemzõje, hogy az adatokat több, egymással összekapcsolt rendszerben ábrázolja.
  182. - Manapság ez a legelterjedtebb adatmodell.
  183. - Alapját a matematikában is használatos reláció jelenti.
  184. - Egy új módszert alkalmaz az adatbázis lekérdezések megvalósítására a relációkon értelmezett mûveletek segítségével.
  185. - Az SQL (Structured Query Language) Strukturált lekérdezõ nyelv egy komplex adatbázis-lekérdezõ nyelv, mellyel megvalósíthatjuk a lekérdezéseket és különbözõ adatbázis-kezelõ mûveleteket.
  186. - Ebben a modellben az adatokat egy kétdimenziós táblában elrendezve ábrázoljuk, melyben az adatok egymással logikai kapcsolatban állnak.
  187. - A reláció nem más mint egy táblázat, a táblázat soraiban tárolt adatokkal együtt.
  188. - A relációs adatbázis pedig relációk és csak relációk összessége.
  189. - Az egyes relációkat egyedi névvel látjuk el.
  190. - A relációk oszlopaiban azonos mennyiségre vonatkozó adatok jelennek meg.
  191. - Az oszlopok névvel rendelkeznek, melyeknek a reláción belül egyedieknek kell lenniük, de más relációk tartalmazhatnak azonos nevû oszlopokat.
  192. - A reláció soraiban tároljuk a logikailag összetartozó adatokat.
  193. - A reláció sorainak sorrendje közömbös, de nem tartalmazhat két azonos adatokkal kitöltött sort.
  194. - Egy sor és oszlop metszésében található táblázat elemet mezõnek nevezzük, a mezõk tartalmazzák az adatokat.
  195. - A mezõkben oszloponként különbözõ típusú (numerikus, szöveges stb.) mennyiségek tárolhatók.
  196. - A reláció helyett sokszor a tábla vagy táblázat, a sor helyett a rekord, az oszlop helyett pedig az attribútum elnevezés is használatos.
  197. - Az oszlopok elnevezésére célszerû a tartalomra utaló elnevezést használni
  198. - A relációktól általában megköveteljük, hogy ne tartalmazzanak más adatokból levezethetõ vagy kiszámítható információkat.
  199. A táblázattal kapcsolatos alapkövetelmények:
  200. - Minden táblázat egyértelmû azonosítóval bír.
  201. - A sorok és oszlopok metszéspontjában található adatok egyértékûek, ezeket nevezi elemi adatmezõknek.
  202. - Az oszlopokban lévõ adatok azonos jellegûek.
  203. - Minden oszlopnak egyedi neve van.
  204. - Ugyan annyi adat található a táblázat minden sorában.
  205. - Nem lehet két azonos sor a táblázatban.
  206. - A sorok és oszlopok sorrendje tetszõleges.
  207. KULCS
  208. - Fontos szerepe van azoknak a tulajdonságoknak, amelynek értékei a többi tulajdonság értékeit egyértelmûen meghatározzák.
  209. - Ez azt jelenti, hogy ha az ilyen tulajdonságok értékeit megadjuk, akkor az egyértelmûen definiál egy elõfordulást.
  210. - Azokat a tulajdonságokat, amelyek egyértelmûen meghatározzák az egyedtípus egy elemét, kulcsnak nevezzük.
  211. - szerepük fontos, a tervezés során meg szokták adni, hogy mely tulajdonságok legyenek kulcsok, 1 egyednek több kulcsa is lehet, de 1-et szoktak megadni!
  212. - ha ebbõl egy tábla esetében 1 darab van (tehát 1 tulajdonság ami alkalmas az egyértelmû azonosításra), akkor elsõdleges kulcs!
  213. - Kulcsjellegû tulajdonság mindig található. Ha a tényleges adatok között nem lenne ilyen, akkor bevezethetünk egy olyan tulajdonságot, amelynek értékei sorszámok, kódszámok, speciális azonosítók.
  214. KAPCSOLAT
  215. - Kapcsolatnak nevezzük az egyedek közötti összefüggést, viszonyt.
  216. - kapcsolatok az egyedhalmazok elemei között alakíthatók ki.
  217. - osztályozhatjuk a kapcsolatokat aszerint, hogy egy-egy elemhez hány másik elem tartozik. (1:1, 1:n, n:m)
  218. - az egy egyed elõforduláshoz szintén 1 egyed elõfordulás tartozik (1:1)-et egyszerûbb megvalósítani, mint ha többhöz több tartozna! az elõbbihez elég lehet egy mutató, míg az utóbbihoz összetett adatstruktúra, halmaz, esetleg lista szükséges.
  219. - 1:1, az egyik egyed minden egyes elõfordulásának a másik egyed pontosan egy elõfordulása tartozik. pl. a férfi és nõ között a házassági viszony
  220. - 1:n, 1 egyed minden elõfordulásához, a másik egyed több elõfordulása tartozik. pl. bérszámfejtõ rendszerben a dolgozók- kifizetések. (1 dolgozóhoz több kifizetés, de 1 kifizetés csak 1 dolgozóhoz!)
  221. - n:m, mindkét egyed elõfordulásaihoz a másik egyed több elõfordulása tartozhat. pl. Egy dolgozó több témában is tevékenykedhet és egy témán több dolgozó dolgozhat.
  222. - minden sok-sok kapcsolat felbontható két 1-sok kapcsolatra. (mert ha 1 egyed szempontjából nézzük, akkor az 1-sok kapcsolat)
  223. - ezek (1:1, 1:n, n:m) két egyed között létesíthetõ kapcsolatok, tehát bináris kapcsolatok!
  224.  
  225.  
  226.  
  227. 3.Normalizálás,normál formák,funkcionális és tranzitív függések,kulcsok,elsõdleges és idegen kulcs
  228.  
  229. Normalizálás:
  230. - A relációs adatbázis felépítésének alapja
  231. - az adatok optimális elhelyezési módját megadó módszert jelenti.
  232. - lehetõvé teszi az adatok megfelelõ strukturálását, valamint elõsegíti az anomáliák (ellentmondások az adatszerkezetben) kiküszöbölését és a redundancia csökkentését.
  233. Anomáliák:
  234. - Beszúrási anomália: egy rekord felvétele egy másik, hozzá logikailag nem kapcsolódó adat beszúrását kívánja meg.
  235. - Törlési anomália: az elem törlésekor a nem hozzá tartozó adatcsoportot is elveszítjük.
  236. - Módosítási anomália: egy adat megváltoztatása miatt, az adat összes elõfordulási helyén el kell végezni a módosításokat az adatbázisban.
  237. Függõségek:
  238. - Funkcionális függõség: ha egy rendszerben szereplõ egyik tulajdonságtípus bármely értékéhez egy másik tulajdonságtípusnak csakis egy értéke rendelhetõ hozzá.
  239. - Például: egy személyi számhoz csak egy név tartozhat, de ugyanahhoz a névhez több személyi adatazonosító szám is kapcsolódhat. Egy a többhöz kapcsolat. A funkcionális függoség jobb oldalán több attribútum is állhat.
  240. - Például az AUTÓ_RENDSZÁM -> TIPUS, TULAJDONOS funkcionális függoség azt fejezi ki, hogy az autó rendszámából következik a tipusa és a tulajdonos neve, mivel minden autónak különbözo a rendszáma, minden autónak egy tulajdonosa és tipusa van. Ezt diagrammal is ábrázolhatjuk.
  241. - Kölcsönös funkcionális függõség: ha az elõbbi feltétel mindkét irányba igaz.
  242. - Például: rendszám – motorszám. Egy az egyhez kapcsolat.
  243. - Az is elõfordulhat, hogy két attribútum kölcsönösen függ egymástól. Ez a helyzet például a házastársak esetén FÉRJ_SZEM_SZÁMA -> FELESÉG_SZEM_SZÁMA FELESÉG_SZEM_SZÁMA <-FÉRJ_SZEM_SZÁMA. Mindkét funkcionális kapcsolat igaz és ezt a FÉRJ_SZEM_SZÁMA <-> FELESÉG_SZEM_SZÁMA jelöléssel fejezzük ki.
  244. - A funkcionális függõség bal oldalán több attribútum is megjelenhet, melyek együttesen határozzák meg a jobb oldalon szereplõ attribútum értékét. Például hõmérsékletet mérünk különbözõ helyeken és idõben úgy, hogy a helyszínek között azonosak is lehetnek. Ebben az esetben a következõ funkcionális függõség áll fenn az attribútumok között: HELY, IDÕPONT -> HÕMÉRSÉKLET.
  245. - Funkcionálisan függetlenek: ha ez elõbbi viszony a két tulajdonságtípus között nem áll fenn. Például: tanuló szemének a színe és az iskola helye.
  246. - Tranzitív funkcionális függõség: ha az egyedtípuson belül egy leíró tulajdonságtípus konkrét értékei meghatároznak más leíró tulajdonság értékeit.
  247.  
  248. Reláció kulcs
  249. - a reláció egy sorát azonosítja egyértelmûen.
  250. - minden relációnak létezik kulcsa, mivel a definíció szerint sem tartalmazhat 2 azonos sort!
  251. a reláció kulcsnak a következõ feltételeket kell teljesítenie:
  252. - az attribútumok egy olyan csoportja, melyek csak egy sort azonosítanak (egyértelmûség)
  253. - a kulcsban szereplõ attribútumok egyetlen részhalmaza sem alkot kulcsot
  254. - a kulcsban szereplõ attribútumok értéke nem lehet definiálatlan (NULL)
  255. (numerikus értékek esetén a null, és 0 nem azonos!)
  256.  
  257. - ha csak egy atribútum a kulcs, akkor az elsõdleges kulcs
  258. - ha több atribútumból áll a kulcs, akkor az az összetett kulcs
  259. - egy táblában több darab kulcs is lehet! (A KONZULTÁCIÓ relációban a tanár illetve a diák oszlopban olyan azonosítót képzelünk, mely a személyt egyértelmûen azonosítja (például személyi szám). Minden egyes diák több konzultáción vehet rész, minden tanár több konzultációt tarthat, sõt ugyanaz a diák ugyanannak a tanárnak más-más idõpontokban tartott konzultációin is részt vehet. Ezekbõl következik, hogy sem a TANÁR, sem a DIÁK, sem pedig ez a két azonosító együtt nem kulcsa a relációnak. De egy személy egy idõben csak egy helyen tartózkodhat. Ebbõl következik, hogy a TANÁR, IDÕPONT attribútumok kulcsot alkotnak, de ugyanilyen okból kifolyólag a DIÁK, IDÕPONT attribútumok is kulcsot alkotnak)
  260. - a kulcsok nem önkényes döntések következtében alakulnak ki, hanem az adatok természetébõl következnek, mint a funkcionális vagy a többértékû függõség.
  261. - idegen/külsõ kulcs: Ezek az attribútumok nem az adott relációban, hanem az adatbázis másik relációjában alkotnak kulcsot. Például ha a KONZULTÁCIÓ relációban a DIÁK azonosítására a személyi számot alkalmazzuk, akkor ez egy külsõ kulcs a személyi adatokat nyilvántartó relációhoz.
  262.  
  263. Adatmodell hibák:
  264. - hibák(anomáliák) pl: (mert nem csak egy egyedre jellemzõ tulajdonságokat tárolunk egy táblában, vagy bizonyos tulajdonságokat többszörösen tárolunk).
  265. - bõvítési anomália: nem tudunk a táblába új rekordot felvinni
  266. - módosítási anomália: valamely attribútum értéket több táblában is tárolunk, de nem tudjuk egységesen módosítani
  267. - törlési anomália: valamely táblában törlünk 1 adatot, és ezzel fontos információk is elvesznek
  268. Redundancia:
  269. - átfedést jelent
  270. - gyakorlatban legtöbbször a fizikai átfedést értjük alatta - többször tárolunk 1 adatot az adatbázisban... logikai átfedésre is figyelni kell a tervezéskor!
  271. - Logikai átfedés: Nyílt logikai átfedés: ugyanaz a tulajdonságtípus azonos elnevezéssel több egyednél is szerepel. Többszörös tárolást eredményez. Szükséges lehet biztonsági, vagy hatékonysági okból, vagy pl.: kapcsolatok megvalósításához (idegen kulcsként) Itt a logikai átfedés hiánya szintén hibának számít.
  272. Rejtett logikai átfedés (szinonima jelenség): ugyanazt a tulajdonságot jelöljük különbözõ elnevezéssel.
  273. Látszólagos logikai átfedés (homonima jelenség): különbözõ tulajdonságokra használjuk ugyanazon elnevezést.
  274. -Fizikai átfedés: ugyanazon tulajdonságoknak vagy -szinonim névvel -egyednek többszörös tárolása az adatbázisban.
  275. A redundancia hátrányai:
  276. - mivel többször szerepel az adat, ha módosítani kell, akkor ezt többször kell megtennünk
  277. ... van még
  278.  
  279. - redundancia fordul elõ akkor is, ha levezetett vagy levezethetõ mennyiségeket tárolunk a relációkban. Levezetett adatokat tartalmazhat egyetlen reláció is abban az esetben, ha egyes attribútumok értéke egyértelmûen meghatározható a többi attribútum alapján, például, ha a kerületet is nyilvántartjuk az irányítószám mellett. A redundáns adatok
  280. eltüntetésére 2 mód:
  281. - A levezetett adatokat tartalmazó relációkat vagy attribútumokat el kell hagyni.
  282. A relációkban tárolt redundáns tényeket a táblázatok szétbontásával, de kompozíciójával szüntethetjük meg !
  283.  
  284. A redundancia eltüntetése:
  285. - ez a logikai tervezés célja (redundancia mentes relációs adatbázis)
  286. - a módszer a normál formák alkalmazása
  287. - A normál formák képzése során leegyszerûsítve, olyan relációk felírása a cél, melyekben csak a reláció kulcsra vonatkozó tényeket tárolunk.
  288. Öt normál formát különböztetünk meg. A különbözõ normál formák egymásra épülnek, a második normál formában levõ reláció elsõ normál formában is van.
  289. - A tervezés során alegmagasabb normál forma elérése a cél!
  290. - Az elsõ három normál forma a funkcionális függõségekben található redundanciák, míg a negyedik és ötödik a többértékû függõségekbõl adódó redundanciák megszüntetésére koncentrál.
  291.  
  292. - Elsõ normál forma: a relációban minden érték elemi, a reláció nem tartalmaz adatcsoportot. A reláció minden sorában oszloponként egy és csak egy érték áll, az értékek sorrendje minden sorban azonos, minden sor különbözõ. Van legalább egy vagy több tulajdonság, amelyekkel a sorok egyértelmûen megkülönböztethetõk egymástól.
  293. - Második normál forma: a reláció elsõ normálformában van, valamint egyetlen másodlagos attribútuma sem függ egyetlen kulcsának valódi részhalmazától sem. (Elsõdleges attribútumok, azok az attribútumok, melyek valamely kulcshoz tartoznak, másodlagos attribútumok, amelyekre ez nem teljesül.)
  294. - Harmadik normál forma: a reláció második normálformában van és a másodlagos attribútumok között nincs funkcionális függés. Ha „B” attribútum értéke függ „A” attribútum értékétõl, valamint „C” attribútum étéke tranzitíven függ „A” értékétõl. A harmadik normál forma elengedhetetlen követelménye az ilyen tranzitív függések kiküszöbölése. Ha az adatbázis táblája nem harmadik normálformájú, akkor két táblára kell bontani úgy, hogy az egyes táblák külön-külön már harmadik normálformájúak legyenek.
  295. Boyce/Codd normál forma (BCNF) : többkulcsos relációkra vonatkozik!
  296. - Ebben az esetben minden attribútum, mely valamely kulcsnak a része, elsõdleges attribútum, de ez az attribútum függhet egy másik, ezt nem tartalmazó kulcs részétõl. Ha ez a helyzet fennáll, redundanciát tartalmaz a reláció. Ennek a felismerése vezetett a harmadik normál forma egy szigorúbb definíciójához, a Boyce/Codd normál formához.
  297. - Minden elsõdleges attribútum teljes funkcionális függõségben van azokkal a kulcsokkal, melyeknek nem része
  298. Negyedik normál forma (4NF)
  299. Sajnos még a Boyce/Codd normál forma is tartalmazhat redundanciát. Mindeddig csak a funkcionális függõségeket vizsgáltuk, a többértékû függõségeket nem. A további két normál forma a többértékû függõségekbõl adódó redundancia kiszûrését szolgálja. Egy reláció negyedik normál formában van, ha egy XY többértékû függõséget tartalmazó relációban csak az X és Y-ban megtalálható attribútumokat tartalmazza.
  300. Ötödik normál forma (5NF)
  301. Hosszú ideig a negyedik normál formát tartották a normalizálás utolsó lépésének. A többértékû függõségek külön relációkban tárolásával azonban információt veszthetünk.
  302.  
  303.  
  304.  
  305. 4.DDL alapja
  306.  
  307. A DDL elemei
  308.  
  309. create
  310. - create table <táblanév> parancsal hozunk létre táblákat
  311. - 1 táblában max 1000 oszlop lehet
  312. - Csak az a felhasználó hozhat létre táblákat, aki CREATE TABLE vagy CREATE ANY TABLE privilégiummal rendelkezik.
  313. STORAGE ????
  314.  
  315. alter:
  316. - módosításra szolgál
  317. - Az oszlop hosszát lehet növelni még akkor is, ha a tábla adatokat tartalmaz. Az oszlop hosszát pedig csak akkor lehet csökkenteni, ha a tábla üres.
  318. ALTER TABLE testtab ADD col2 VARCHAR2(100);
  319. ALTER TABLE testtab MODIFY col2 VARCHAR2(150);
  320. ALTER TABLE testtab DROP col1;
  321.  
  322. RENAME testtab TO testtab1;
  323.  
  324. DROP TABLE testtab;
  325.  
  326. - Amikor egy olyan táblára (vagy más Oracle-objektumra) hivatkozunk, melynek nem mi vagyunk a tulajdonosa, akkor a tábla nevén kívül meg kell adni a tulajdonos nevét is
  327. tulajdonos.tábla_név
  328.  
  329.  
  330. Megszorítások:
  331.  
  332. Hivatkozási integritás: biztosítja, hogy egy adott oszlop csak olyan értékeket vehessen fel, amelyek megjelennek egy másik oszlopban.
  333. Integritási megszorításként lehet elõírni.
  334. Megszorítás: egy szabály vagy korlátozás az adatok egy részén kerül ellenõrzésre.
  335. Integritási megszorítás: olyan szabály, amely egy vagy több oszlop lehetséges értékeinek körét határolják be.
  336. Táblamegszorítás – olyan integritási megszorítás, amelyet egy tábla több oszlopára alkalmazunk. Oszlopmegszorítás pedig egy olyan integritási megszorítás, amelyet egy tábla oszlopához rendelünk.
  337.  
  338. - A megszorítást a tábla létrehozásánál az oszlopokhoz lehet hozzárendelni.
  339. - A CONSTRAINT záradékot a CREATE TABLE vagy ALTER TABLE parancsokban használhatjuk.
  340. - A legtöbb megszorítás a CONSTRAINT záradék nélkül is megadható.
  341.  
  342. táblamegszorítások:
  343. UNIQUE
  344. PRIMARY KEY
  345. FOREIGN KEY
  346. REFERENCES ON DELETE CASCADE
  347. CHECK
  348. ENABLE
  349. VALIDATE
  350. DISABLE
  351.  
  352. oszlopmegszorítások:
  353. NULL
  354. NOT NULL
  355. + a tábláknál lévõk
  356.  
  357. ALTER TABLE tabla DISABLE UNIQUE oszlop, oszlop,..
  358. ALTER TABLE tabla DISABLE PRIMARY KEY
  359. ALTER TABLE tabla DISABLE CONSTRAINT megszorítás_név
  360. DISABLE ALL TRIGGERS
  361.  
  362.  
  363.  
  364. 5.A DML alapjai
  365.  
  366. DML - data manipulating language
  367.  
  368. - INSERT – új sor beszúrása
  369. - UPDATE – adatok módosítása a már létezõ sorokban
  370. - DELETE – sorok törlése
  371. - TRUNCATE – az összes sorok gyors törlése
  372.  
  373. 1.) INSERT
  374.  
  375. describe testtab - ezzel ellenõrizhetjük a táblát (megjeleníti)
  376. INSERT INTO testtab(col1, col2) VALUES(’szöveg’, 123); - beszúrjuk ezt a 2 sort
  377. *INSERT INTO testtab VALUES (’szöveg’, 123); - ugyanaz (gondolom mivel 1-1 ilyen mezõ van csak, így egyértelmû neki hogy melyik hova való az oszlopok megadása nélkül is?)
  378. NULL-t is beszúrhatunk. ezt ugyan úgy nem kell idézõjelek közé tenni mint a számokat.
  379.  
  380. *INSERT INTO testtab (col1, col2) SELECT e_name, emp_no FROM emp - több sor beszúrása
  381. CREATE TABLE table_copy AS SELECT * FROM table - tábla létrehozása egy másik tábla alapján
  382. CREATE TABLE emp_copy2 AS SELECT emp_no, e_name FROM emp WHERE e_name LIKE ’%a%’; - ez is...
  383.  
  384. 2.) Update
  385. - Az UPDATE parancs módosítja az összes olyan sorokat, amelyekre teljesül a WHERE-feltétel.
  386. - ha nincs benne where, akkor minden sorra végrehajtódik! (nagyon ritkán fordul elõ...)
  387.  
  388. update <táblanév> where ...
  389.  
  390. 3.) delete
  391. delete from <táblanév> where ...
  392.  
  393. truncate:
  394. - Adatok gyors törlése. A tábla összes sorait gyorsan lehet törölni a TRUNCATE paranccsal:
  395. - A parancs végrehajtása után a tábla struktúrája megmarad, de az egyetlen sort sem fog tartalmazni.
  396.  
  397. TRUNCATE TABLE <táblanév>;
  398.  
  399.  
  400.  
  401. 6.Egy táblára vonatkozó lekérdezések oszlopok,rekordok,szûrés
  402.  
  403. Lekérdezések (SELECT):
  404.  
  405. - általánosan:
  406. SELECT <oszlopnévlista> from <táblanév>;
  407. SELECT * from table; - ez mindent megjelenít
  408.  
  409. - aliasnevet is adhatunk, ez csak a lekérdezés idejére jön létre:
  410. SELECT nev as NÉV from table; - így az eredetileg nev mezõ NÉV nevûen fog megjelenni a lekérdezésben
  411.  
  412. ALL - ha egy rekord többször is elõfordul az eredménytáblában, akkor ez megjeleníti (alapértelmezésben is ígyvan)
  413. DISTINCT - minden azonos elõfordulás csak egyszer jelenik meg az eredménytáblában
  414.  
  415.  
  416. Aggregáló függvények:
  417. - az adott oszlop függvény szerint aggregáltját adja vissza
  418. Az <oszlopkifejezés> a következõ aggregáló függvényeket tartalmazhatja:
  419. - COUNT: Megadja a tábla sorainak számát. A pontos eredmény elérése céljából használjuk a *-ot vagy az elsõdleges kulcs mezõt paraméternek.
  420. - SUM: Megadja a paraméterében szereplõ oszlop adatainak az összegét az összes rekordra. Csak numerikus attribútumra alkalmazható.
  421. - AVG: Megadja a paraméterében szereplõ oszlop adatainak az átlagát az összes rekordra. Csak numerikus attribútumra alkalmazható.
  422. - MIN: Megadja a paraméterében szereplõ oszlop adatainak a minimumát az összes rekordra. Csak numerikus attribútumra alkalmazható.
  423. - MAX: Megadja a paraméterében szereplõ oszlop adatainak a maximumát az összes rekordra. Csak numerikus attribútumra alkalmazható.
  424.  
  425. Példák:
  426. dolgozó tábla használata esetén
  427.  
  428. - teljes tábla lekérdezése
  429. SELECT * FROM dolgozo;
  430. - lekérdezzük a dolgozók nevét a fizetésükkel együtt:
  431. SELECT neve, fizetese FROM dolgozo;
  432. - lekérdezzük a dolgozók nevét, fizetését, és egy új mezõben a 20%-al megemelt fizetést a "dolgozó megemelt fizetése" néven:
  433. SELECT neve, fizetese, 1.2*fizetese AS emelt fizetés FROM dolgozo;
  434. - jelenítsük meg a dolgozók városát úgy, hogy minden város csak egyszer fordul elõ:
  435. SELECT DISTINCT varos FROM dolgozo;
  436. - lekérdezés amely megadja az összes dolgozók számát, az összes, átlagos, legnagyobb és legkisebb fizetéseket:
  437. SELECT COUNT(id) AS 'dolgozók száma', SUM(fizetes) AS 'összes fizetés', AVG(fizetes) AS 'átlagos fizetés', MIN(fizetes) AS 'legkisebb fizetés', MAX(fizetes) AS 'legnagyobb fizetés' FROM dolgozo;
  438. - lekérdezés amely a dolgozó nevét és születési évét adja meg (az évet az oracle beépített függvényével) :
  439. SELECT neve, TO_CHAR(szdatum, 'yyyy') AS 'év' FROM dolgozo;
  440. A TO_CHAR függvény a szdatum mezõben tárolt dátum típusú értéket a megadott formátumúra alakítja, esetünkben 4 jegyû évvé.
  441.  
  442.  
  443. WHERE(szûrés):
  444. - a FROM után adhatjuk meg az alparancsot (WHERE <feltétel>)
  445. - a feltételben operanduszok és operátorok szerepelhetnek
  446. - operátorok lehetnek: összehasonlító (<,>,<=,>=,<>), aritmetikai (+,-,*,/) és logikai mûveletek (AND, OR, NOT,
  447. - operanduszok lehetnek: konstansok, reláció attribútumok, (oszlopnevek), illetve függvényhivatkozások.
  448. - a kifejezésnek mindig logikai értéket kell szolgáltatni
  449. - az eredménytáblába csak a true értéket szolgáltató elõfordulások kerülnek bele.
  450.  
  451.  
  452. Predikátumok:
  453.  
  454. BETWEEN
  455. <oszlopkifejezés> BETWEEN <alsóérték> AND <felsõérték>
  456. - a két érték szám vagy dátum, és az eredmény az egyenlõket is beleveszi, tehát zárt intervallumot fed le.
  457. - csak akkor van értelme, ha a felsõérték nagyobb mint az alsó (értelem szerûen...)
  458. - ez a predikátum helyettesíthetõ logikai operátorokból összerakott kifejezéssel is!
  459. pl.: fizetes between 100000 and 200000 ugyan azt jelenti, mint (fizetes >= 100000) and (fizetes <= 200000)
  460.  
  461. IN
  462. <oszlopkifejezés> IN <értéklista>
  463. - megvizsgálja, hogy az <oszlopkifejezés> értéke szerepel-e az értéklistában
  464. - ha igen, true-t ad vissza
  465. - a NOT IN esetében akkor true, ha nem szerepel
  466. - az <értéklista> paraméterben a kifejezés típusának megfelelõ értékeket kell vesszõvel elválasztva felsorolni
  467. - kiemelt szerepe van a beágyazott lekérdezéseknél!
  468.  
  469. LIKE
  470. <oszlopkifejezés> LIKE <karakterlánc>
  471. - A <karakterlánc> konstansban idézõjelek között adhatunk meg karaktersorozatot.
  472. - Ha a konstansban a % jelet használjuk, akkor a két karakterláncnak csak eddig a jelig kell egyezni ahhoz, hogy a feltétel igaz legye. (a % tetszõleges számú karaktert helyettesít)
  473. - Az _ jel pontosan egy karaktert helyettesít.
  474.  
  475. Példák:
  476. továbbra is a dolgozók tábla
  477. - lekérdezés, amely megadja a dolgozók nevét és fizetését, akik 150 ezer forint felett keresnek:
  478. SELECT neve, fizetese FROM dolgozo WHERE fizetese>=150000;
  479. - lekérdezés amely megadja a dolgozók nevét, fizetését, azoknak akik egerben laknak és 150000 forint felett keresnek:
  480. SELECT neve, fizetese FROM dolgozo WHERE (varos LIKE 'Eger') AND (fizetese>=150000);
  481. - lekérdezés amely azon dolgozók nevét és fizetését adja meg, akik 150 és 200 ezer forint között keresnek:
  482. SELECT neve, fizetese FROM dolgozo WHERE fizetese BETWEEN 150000 AND 200000;
  483. SELECT neve, fizetese FROM dolgozo WHERE (fizetese>=150000) AND (fizetese<=200000);
  484. - lekérdezés,ami megjeleníti azon dolgozók nevét, és városát akik egerben, debrecenben vagy szegeden laknak:
  485. SELECT neve, varos FROM dolgozo WHERE varos IN 'eger','szeged','debrecen';
  486. - lekérdezés, amely megadja a kovács nevû dolgozók adatait:
  487. SELECT * FROM dolgozo WHERE neve LIKE 'Kovács%';
  488.  
  489.  
  490.  
  491. 7.Csoportosító lekérdezések ,tovább-szûrés,rendezés
  492.  
  493. GROUP BY, HAVING (csoportosító lekérdezések), rendezés:
  494.  
  495. GROUP BY:
  496. - A csoportosítás azt jelenti, hogy a rekordokat egy vagy néhány adott mezõ értékei szerint csoportokra bontjuk.
  497. - Ezután a csoportokhoz tartozó rekordokra különbözõ mûveleteket hajthatunk végre, például alkalmazhatjuk a már ismert aggregációs függvényeket, esetleg a csoportokra vonatkozóan kiválasztó mûveletet alkalmazhatunk.
  498. csoportosítani így lehet:
  499. GROUP BY <oszlopnév>,[<oszlopnév>]…
  500. - A csoportosítás a megadott oszlopnevek azonos értékei alapján fog történni.
  501. - Amennyiben több oszlopot adunk meg, akkor az elsõ oszlop azonos értékein belül a második oszlop azonos értékei szerint csoportosít, majd a harmadik szerint, stb.
  502. - Az egyes mezõkhöz tartozó értékeket a megadás sorrendjében egymás mellé rakja a rendszer, és az így kapott minta alapján csoportosít. A mûvelet végrehajtása után minden egyes csoportra egy sor keletkezik az eredménytáblában.
  503. - Mivel speciális utasításról van szó, használata során a SELECT parancs egyéb részeire vonatkozóan is megkötéseket kell tennünk.
  504. Így a lekérdezendõ oszlopok adataira vonatkozóan mindenképpen alkalmaznunk kell valamilyen aggregáló operátort, vagy ha ezt nem tesszük, akkor az oszlopnak szerepelnie kell a csoportosításban részt vevõ oszlopok között, azaz a GROUP BY után.
  505.  
  506. HAVING:
  507. - Az SQL nyelv lehetõséget biztosít arra is, hogy az aggregálással keletkezett adatokra vonatkozóan feltételeket adhassunk meg.
  508. - Ebben az esetben a HAVING szót kell használnunk. Az alparancs formája az alábbi:
  509. HAVING <csoportfeltétel>
  510. - A <csoportfeltétel> paraméterben a hagyományos módon adhatunk meg feltételeket, azzal a különbséggel, hogy a feltételben szereplõ oszlopneveknek tartalmazniuk kell valamilyen aggregáló operátort, és ennek ugyancsak szerepelnie kell a SELECT után.
  511.  
  512. ORDER BY:
  513. - Az SQL lehetõséget biztosít arra, hogy lekérdezéseink eredményét rendezetten jelenítsük meg.
  514. - ORDER BY alparancs. Formája a következõ:
  515. ORDER BY <oszlopnév|oszlopsorszám> [ASC|DESC], <oszlopnév| oszlopsorszám> [ASC|DESC]]…
  516. - A rendezés a megadott oszlopok szerint történik. Elsõ szempontként az elsõ oszlopot, további szempontként az utána megadott oszlopokat veszi figyelembe.
  517. - Az oszlopok kétféleképpen adhatók meg. Egyrészt hagyományosan a nevükkel, másrészt egy számmal, ami a táblázatban az oszlop sorszáma. A számozás 1-tõl kezdõdik a táblázat fejrészében megadott sorrend szerint.
  518. - A rendezési szempontként megadott oszlopnak szerepelni kell a SELECT parancs után is.
  519. - ASC (alapértelmezés) - a rendezés növekvõ sorrendben történik
  520. - DESC - a rendezés csökkenõ lesz a megadott szempontnál
  521.  
  522. Példák:
  523. - lekérdezés amely megadja városonként, hogy az adottt városban hány dolgozó lakik
  524. SELECT Varos, COUNT(id) as „DB” FROM dolgozo GROUP BY Varos
  525. - lekérdezés, amely megadja városonként, hogy az ott lakó dolgozóknak mennyi az összes illetve az átlagfizetése:
  526. SELECT SUM(fizetes) AS 'összes', AVG(fizetes) AS 'átlagos' FROM dolgozo GROUP BY varos;
  527. - lekérdezés amely megadja azokat a városokat, amelyekre igaz, hogy az adott városban élõ dolgozóknak az átlagfizetése legfeljebb 150000 Ft:
  528. SELECT varos, AVG(fizetes) AS 'átlag' FROM dolgozo GROUP BY varos HAVING(fizetes)<=150000;
  529. - lekérdezés amely a dolgozók nevét és fizetését a fizetés szerint csökkenõ, illetve azonos fizetés esetén név szerint ábécé sorrendben adja meg:
  530. SELECT neve, fizetes FROM dolgozo ORDER BY fizetes DESC neve;
  531.  
  532.  
  533.  
  534. 8.Táblák összekapcsolása ,beágyazott lekérdezések
  535.  
  536. Táblák összekapcsolása:
  537.  
  538. feltételen alapuló összekapcsolás:
  539. <táblanév> INNER JOIN <táblanév> ON <feltétel>
  540. - Feltételként tetszõleges, a WHERE parancs után használható feltételt adhatunk meg.
  541. - Esetek legnagyobb részében a két kapcsolt táblából az egyik tábla (Nevezzük master-nek) elsõdleges kulcs mezõjének értéke egyenlõ a másik tábla (nevezzük detail-nek) idegen kulcs mezõjének értékével.
  542.  
  543. Példa:
  544. korábbi dolgozó tábla + kifizetés tábla, a kapcsolat a dolgozók id-je, és a kifizetés tábla dolgozó mezõje.etes.dolgozo
  545. - lekérdezés amely a dolgozók nevét és a számukra kifizetett összeget, és a kifizetés dátumát név szerint ábécé sorrendben adja meg:
  546. SELECT dolgozo.neve as „Név”, kifizetes.osszeg as „Összeg”, kifizetes.datum as „Dátum”
  547. FROM dolgozo INNER JOIN kifizetes ON dolgozo.id = kifizetes.dolgozo ORDER BY 1;
  548.  
  549. Külsõ összekapcsolás:
  550. - Amennyiben szeretnénk azokat a rekordokat is megjeleníteni, melyekhez nincs kapcsolt rekord a kapcsolt táblában külsõ összekapcsolást kell alkalmazni.
  551. - Egy külsõ összekapcsolás abban különbözik a hagyományostól, hogy az eredménybe minden olyan sor is bekerül, amely a másik tábla egyetlen sorához sem kapcsolódik.
  552. - Egy külsõ összekapcsolás háromféle módon valósulhat meg:
  553. <táblanév> FULL OUTER JOIN <táblanév> ON <feltétel>
  554. Ebben az esetben mindkét tábla "lógó" sorai bekerülnek az eredmény táblába.
  555. <táblanév> LEFT OUTER JOIN <táblanév> ON <feltétel>
  556. Ebben az esetben csak az elsõ <táblanév> paraméterben megadott tábla "lógó" sorai kerülnek be az eredmény táblába.
  557. <táblanév> RIGHT OUTER JOIN <táblanév> ON <feltétel>
  558. Ebben az esetben pedig a második <táblanév> paraméterben megadott tábla "lógó" sorai kerülnek be az eredmény táblába.
  559.  
  560. Példa:
  561. - lekérdezés amely az elõzõ példában szereplõ feladatot úgy oldja meg, hogy a listába azok a dolgozók is belekerülnek, akiknek nem történt kifizetés:
  562. SELECT dolgozo.neve AS 'név', kifizetes.dolgozo AS 'kifizetés, kifizetés.datum AS 'dátum' FROM dolgozo LEFT OUTERkifizetes ON dolgozo.nev=kifiz ORDER BY 1 ;
  563.  
  564. - Ha több táblát kell összekapcsolni, akkor minden összekapcsolás 1 JOIN lesz. (5 tábla esetén 4 JOIN lesz pl.)
  565. - Szabály, hogy ha egy tábla nevét rövidítjük, akkor a teljes lekérdezésben a rövidített nevet kell használni.
  566.  
  567.  
  568. Beágyazott lekérdezések:
  569. - lehetõség van a kiválasztó lekérdezések feltételében is lekérdezõ parancsot használni
  570. - ilyenkor megkülönböztetünk külsõ és belsõ select parancsot
  571.  
  572. attól függõen hogy a belsõ lekérdezés milyen eredményt szolgáltat, van többféle eset:
  573. - A belsõ lekérdezés egyetlen értéket szolgáltat. Ez a legegyszerûbb eset, ugyanis ilyenkor minden a hagyományos módon történik, azzal a különbséggel, hogy a feltételként megadott kifejezésben a belsõ lekérdezés által szolgáltatott értéket használja fel a rendszer.
  574.  
  575. - A belsõ lekérdezés egyoszlopos relációt szolgáltat. Ekkor olyan feltételeket adhatunk meg, amelyek a belsõ lekérdezés által szolgáltatott oszlop adatait használja fel. Ebben az esetben különbözõ predikátumokat használhatunk.
  576.  
  577. Az alábbi három predikátum létezik:
  578. <oszlopkifejezés> [NOT] IN <belsõ lekérdezés>
  579. Ennél a típusnál az <oszlopkifejezés> paraméterben megadott kifejezés értékérõl fogja eldönteni a rendszer, hogy szerepel-e a belsõ lekérdezés által elõállított oszlop adatai között. Ha igen a feltétel értéke igaz, ha nem, akkor hamis lesz. A NOT kulcsszó hatására pontosan fordítva kell értelmezni a feltételt. A következõ predikátumok formája az alábbi:
  580.  
  581. [NOT] <oszlopkifejezés> <reláció> ALL|ANY <belsõ lekérdezés>
  582. Ennél a típusnál az <oszlopkifejezés> paraméterben megadott kifejezés értékére vonatkozóan azt fogja vizsgálni a rendszer, hogy a megadott reláció teljesül-e a belsõ lekérdezés által elõállított oszlop adataira. Ha az ALL kulcsszót használjuk, a feltétel akkor lesz igaz, ha a reláció az oszlop minden elemére teljesül, míg az ANY használatakor elegendõ egyetlen elemre teljesülnie. A NOT kulcsszó itt is a feltétel ellentettjét jelenti.
  583.  
  584.  
  585. A legáltalánosabb eset az, amikor a belsõ lekérdezés általános relációt szolgáltat. Ekkor csak kétféle feltételt vizsgálhatunk.
  586. Az egyik az, hogy a keletkezett reláció üres vagy sem. Ehhez a vizsgálathoz az EXISTS kulcsszót kell használnunk, amit természetesen a NOT módosíthat. A parancs formája az alábbi:
  587.  
  588. [NOT] EXISTS <belsõ lekérdezés>
  589. A másik eset hasonló az 2. pont elsõ részében leírtakhoz, azzal a különbséggel, hogy a feltételben több oszlopkifejezést adhatunk meg, amelyek egyezését külön külön fogja vizsgálni a rendszer a belsõ lekérdezés által adott tábla sorainak elemeivel. Természetesen a megadott lista és a lekérdezés eredménytáblája sorainak száma azonos kell hogy legyen. A pontos szintaxis a következõ:
  590. (<oszlopkifejezés> [,<oszlopkifejezés>]…) [NOT] IN <belsõ lekérdezés>
  591.  
  592. példa
  593. - Készítsünk olyan listát, amely a Dolgozó táblából kilistázza azon dolgozók nevét és fizetését, akik az átlag alatt keresnek!
  594. SELECT Neve, Fizetes FROM Dolgozo WHERE Fizetes < (SELECT AVG(Fizetes) FROM Dolgozo)
  595. - Készítsünk olyan listát, amely a Dolgozó táblából kilistázza azon dolgozók nevét és fizetését, akik a fizetése a legnagyobb fizetéstõl legfeljebb csak 50 000 Ft-tal tér el! Az alábbi parancsot használhatjuk:
  596. SELECT Neve, Fizetes FROM Dolgozo WHERE Fizetes+50000 > (SELECT MAX(Fizetes) FROM Dolgozo)
  597. - Az elõzõekben látott Kifizetés tábla felhasználásával készítsünk olyan listát, amely a Dolgozó táblából kilistázza azon dolgozók nevét és törzsszámát, akik számára még nem történt kifizetés! Az alábbi parancsot használhatjuk:
  598. SELECT Neve, ID FROM Dolgozo WHERE ID NOT IN (SELECT ID FROM Kifizetes)
  599. Egy másik lehetséges megoldás:
  600. SELECT Neve, ID FROM Dolgozo WHERE NOT EXISTS (SELECT ID FROM Kifizetes WHERE Kifizetes.dolgozo = Dolgozo.ID)
  601. Figyeljük meg, hogy ez a második megoldás egy olyan speciális esetet foglal magába, amikor a belsõ lekérdezésben felhasználjuk a külsõ lekérdezés táblájának egy mezõjét is.
  602. példa Készítsünk olyan listát, amely a Dolgozó táblából kilistázza azon dolgozók adatait, akik minden Egerben vagy Szegeden lakó dolgozónál többet keresnek! Az alábbi parancsot használhatjuk:
  603. SELECT * FROM Dolgozo WHERE Fizetes > ALL (SELECT Fizetes FROM Dolgozo WHERE Varos = "Eger" OR Varos = "Szeged")
  604.  
  605.  
  606.  
  607. 9.Indexek,integrálási feltételek
  608.  
  609. 10.Tervezés eszközei,kapcsolat típusok,adattípusok
  610.  
  611. Tervezés eszközei
  612. - elsõsorban tudnunk kell, hogy milyen adatbázis-kezelõ programot akarunk használni
  613. - az adatokat csoportosítjuk, és az egymással szoros összefüggésben lévõ adatokat ugyanabban a táblában tároljuk, majd meghatározzuk, hogy az így kapott táblák milyen kapcsolatban vannak egymással.
  614. - úgy kell megtervezni az adatbázisokat, hogy eleget tegyenek bizonyos kritériumnak, például, hogy minimális legyen bennük az adatredundancia, teljesüljenek a különbözõ adatfüggetlenségek, stb.
  615. - nincs általános tervezési technika, de van a tervezésnek menete, amit érdemes követni
  616. 1. meg kell határoznunk a célokat, melyek szoros kapcsolatban vannak a felhasználó igényeivel.
  617. 2. logikai tervezés - eredménye az adatbázis logikai modellje
  618. Ebben a szakaszban fõként az adatok és a közöttük lévõ kapcsolatokra helyezõdik a hangsúly. Itt történik az egyedek meghatározása, megadásra kerülnek az egyedeket leíró tulajdonságok, valamint feltérképezésre kerülnek az egyedek közötti kapcsolatok, mindemellett ügyelve az adatredundancia minimalizálására.
  619. 3. fizikai tervezés - fizikai szinten képezzük le a logikai modellt, a felhasználandó szoftver és hardver függvényében
  620. az adatbázisok számítógépen történõ létrehozása valósul meg a korábbi tervek alapján. Elkészül a prototípus, arendszer elsõ verziója, ami még nem teljes, változtatásra, tökéletesítésre szorul.
  621.  
  622. a tervezés lépései:
  623. 1. követelményelemzés - meghatározzuk az adatbázis célját, hogy milyen adatokat tároljunk az egyedrõl, és hogy milyen információt szeretnénk kinyerni az adatbázisból
  624. 2. egyedek, táblák meghatározása - az összegyüjtött adatokat információrendszerbe szervezzük (egyedek a táblában, rekordpéldányok a sorokban, attribútumok az oszlopokban), 1 táblában csak egy témájú adatok legyenek, és csak egyszer tároljunk mindent!
  625. 3. mezõk, attribútumok meghatározása - a konkrét tervezés, ahol meghatározzuk a táblákat, és attribútumokat.
  626. attribútum lehet:
  627. - egyszerû, azaz tovább nem bontható, valamint összetett. Az összetett attribútum több egyszerû értékbõl áll.
  628. -egyértékû: minden elõfordulásnál csak egy értéket vehet fel. A többértékû minden elõfordulásnál több értéket is felvehet.
  629. -a tárolt attribútum értékeit az adatbázis tárolja. A származtatott értéke más attribútumok alapján határozható meg.
  630. 4. azonosítók meghatározása - elsõdleges kulcsok
  631. kulcs lehet:
  632. - számláló típusú - ilyenkor létrehozunk egy számláló típusú mezõt
  633. - egy mezõbõl álló - ilyenkor egy mezõbõl áll a kulcs. (attribútum, ami alkalmas erre)
  634. - több mezõbõl álló - több attribútumból képezzük egyszerre (összetett kulcs)
  635. 5. kapcsolatok meghatározása - összekapcsoljuk az egyedeket (1:1, 1:n, n:m)
  636. 6. ellenõrzés - ellenõrizzük a tervet, mielõtt élesben megcsinálnánk!
  637. 7. adatbevitel - ellenõrzés (és esetleges javítás) után bevihetjük az adatokat a már létezõ táblákba, aztán lekérdezések, jelentések készítése
  638.  
  639. Kapcsolat típusok
  640.  
  641. KAPCSOLAT
  642. - Kapcsolatnak nevezzük az egyedek közötti összefüggést, viszonyt.
  643. - kapcsolatok az egyedhalmazok elemei között alakíthatók ki.
  644. - osztályozhatjuk a kapcsolatokat aszerint, hogy egy-egy elemhez hány másik elem tartozik. (1:1, 1:n, n:m)
  645. - az egy egyed elõforduláshoz szintén 1 egyed elõfordulás tartozik (1:1)-et egyszerûbb megvalósítani, mint ha többhöz több tartozna! az elõbbihez elég lehet egy mutató, míg az utóbbihoz összetett adatstruktúra, halmaz, esetleg lista szükséges.
  646. - 1:1, az egyik egyed minden egyes elõfordulásának a másik egyed pontosan egy elõfordulása tartozik. pl. a férfi és nõ között a házassági viszony
  647. - 1:n, 1 egyed minden elõfordulásához, a másik egyed több elõfordulása tartozik. pl. bérszámfejtõ rendszerben a dolgozók- kifizetések. (1 dolgozóhoz több kifizetés, de 1 kifizetés csak 1 dolgozóhoz!)
  648. - n:m, mindkét egyed elõfordulásaihoz a másik egyed több elõfordulása tartozhat. pl. Egy dolgozó több témában is tevékenykedhet és egy témán több dolgozó dolgozhat.
  649. - minden sok-sok kapcsolat felbontható két 1-sok kapcsolatra. (mert ha 1 egyed szempontjából nézzük, akkor az 1-sok kapcsolat)
  650. - ezek (1:1, 1:n, n:m) két egyed között létesíthetõ kapcsolatok, tehát bináris kapcsolatok!
  651.  
  652. Adat típusok
  653. - number (h, t) - szám, hossz (max 38), tizedesjegyek
  654. - date - dátum és idõ típus
  655. - varchar2(hossz) - szöveges, max 4000 karakter hosszú, változó hosszússágú
  656. - char (méret) - max 2000 hosszú, fix hosszúságú
  657. - nchar(méret) - olyan mint a varchar, csak a max hossz függ a karakterkésszlettõl
  658. - lob - (large objects) - bináris vagy szöveges formátum - lehet kép, hang, vagy nagyméretû szöveges állomány
  659. A LOB típuson belül lehetnek:
  660. - LONG – szöveges adatok, max hossza<=2 Gbyte;
  661. LONG RAW – bináris adatok, max hossza<=2 Gbyte;
  662. - A LONG és LONG RAW típusokat csak egyszerû adatfeldolgozásban alkalmazzák.
  663. CLOB, NCLOB, BLOB – belsõ LOB típusok, mivel az AB-ban tárolódnak, max hossza<=4 Gbyte;
  664. CLOB – az adatokat tárolja az AB karakter-készlete alapján;
  665. NCLOB – az adatokat tárolja a nemzeti karakter-készletben.
  666. Az Oracle mindegyik táblába automatikusan helyez egy ROWID nevû pszeudooszlopot, amely a programozók ritkán szokták használni. ROWID – pszeudooszlop, amely tartalmazza a sor logikai egyedi címét. A ROWID nem változható meg, de a SELECT parancsban lekérdezhetõ:
  667. SELECT rowid FROM tabla_1;
  668. A Sor sorszáma – olyan szám, amely akkor rendelõdik a sorhoz, amikor az bekerül a táblába. Ez a szám része a ROWID-nek.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement