2012. április 13. TARTALOM

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "2012. április 13. TARTALOM"

Átírás

1 KENDE MÁRIA - NAGY ISTVÁN SQL BEVEZETŐ FELADATGYŰJTEMÉNY TARTALOM Előszó... 2 Megjegyzés Foglalkozás Adatbázis tervezés Foglalkozás Az SQL használatának alapjai, Egyszerű lekérdezések Foglalkozás Egytáblás csoportosító lekérdezések Foglalkozás Többtáblás lekérdezések, allekérdezések Foglalkozás Interaktív környezet Foglalkozás Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Foglalkozás Nézettáblák, felső-n analízis, ROWNUM Foglalkozás SQL összefoglaló feladatsorok Foglalkozás Adatbázis-adminisztrátori ismeretek, jogosultság-kezelés Mellékletek Árnyék-objektumok Hierarchikus szerkezetű adattáblák feldolgozása Irodalom április 13.

2 ELŐSZÓ E feladatgyűjtemény a tankönyvek (lásd az Irodalomban) kiegészítését, az "Adatbázis-kezelés" gyakorlatokra való önálló felkészülés további támogatását szolgálja. Az egyes Foglalkozások anyagában természetesen ismertnek tételezzük fel, és ezért fel is használjuk a tankönyvekben részletesen tárgyalt, valamint a korábbi Foglalkozásokban bemutatott anyagot. A megoldásoknál célszerű betartani a "02_Mire ügyeljünk.doc" file-ban írottakat. A feladatok az alábbi emp és dept táblákra vonatkoznak: >> Az emp tábla (14 soros): EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO KING PRESIDENT BLAKE MANAGER CLARK MANAGER JONES MANAGER MARTIN SALESMAN ALLEN SALESMAN TURNER SALESMAN JAMES CLERK WARD SALESMAN FORD ANALYST SMITH CLERK SCOTT ANALYST ADAMS CLERK MILLER CLERK >> A dept tábla (4 soros): DEPTNO DNAME LOC ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON A táblák értelmezése: Az emp tábla a feladatokban szereplő vállalat dolgozóinak adatait tartalmazza. E tábla oszlopneveire a következő magyar nevekkel fogunk hivatkozni: empno a dolgozó azonosítója, ename a neve, job a munkaköre, mgr a főnöke azonosítója, hiredate a belépésének dátuma, sal a fizetése, comm a jutaléka, deptno a részlegének azonosítója. A dept tábla a vállalat részlegeinek adatait tartalmazza. E tábla oszlopneveire a következő módon fogunk hivatkozni: deptno a részleg azonosítója, dname a neve, loc a telephelye. MEGJEGYZÉS E feladatgyűjtemény pdf formátumban a honlapon található az "Adatbáziskezelés" témakör kiválasztása után az "AKT (Adatbázis-Kezelés Technológiája)" menüpont kijelölésével a Labor almenüpontban letölthető 413_Labor alkönyvtárban, ahol egyéb (részben ebben az anyagban is hivatkozott) kiegészítő oktatási anyagok is találhatók. (E file az Acrobat cég honlapjáról ingyenesen letölthető, és a saját gépen telepíthető AcrobatReader programja segítségével olvasható.) Jelen dokumentum szerzői jogi védelem alatt áll, kizárólag az egyéni felkészülés céljára használható. Csak számítógépen olvasható, sem a teljes dokumentum, sem annak bármely része nem nyomtatható ki, nem másolható le, illetve nem adható ki a szerzők írásos engedélye nélkül. #11_SQL Feladatgyűjtemény (30) - 2 -

3 0. Foglalkozás Adatbázis Tervezés Részletesebben lásd [1]: II. rész, 7. fejezet RELÁCIÓ-ALGEBRAI ÁTTEKINTÉS (Jelölések, definíciók) Elemek: a, b, c,... Halmazok: A, B, C,... Halmaz megadása (elemei felsorolásával): pl. A = {a, b, c}, ekkor pl. a A, azaz a eleme A-nak Halmaz megadása (az elemek tulajdonságának megadásával): pl. B = { x x >= 50, x < 200 } A halmazokat rendezetleneknek tekintjük (esetenként a rendezetlen halmaz kifejezést is használjuk), vagyis bennük az elemek sorrendje tetszőleges, például {a, b, c} = {c, b, a}. A gyakorlatban a legtöbb csoportosítás ilyen, például Péter barátai: { Laci, Zoli, Attila }. Részhalmaz: Egy B halmaz részhalmaza egy A halmaznak, ha B minden eleme az A-nak is eleme. Jelölése: B A. Például {c, a} {a, b, c}. Rendezett halmaz (más néven vektor): pl. q = a, b, c A rendezett halmazokban az elemek sorrendje kötött, a sorrendjük megváltoztatásával már egy másik rendezett halmazhoz jutunk, így nyílván a, b, c c, b, a. Ilyen például egy pont helyvektora valamely koordinátarendszerben, vagy a vezeték név kereszt név páros. (Nyilván nem mindegy, hogy valakinek Gábor Miklós, vagy Miklós Gábor a neve.) Halmazok Descartes szorzata: Például A = {a, b, c} és B = {0, 1} esetén A B = { a, 0, a, 1, b, 0, b, 1, c, 0, c, 1 }. A Descartes szorzat tehát egy rendezett elempárosokat tartalmazó halmaz. A halmazok Descartes szorzatát értelemszerűen kiterjeszthetjük kettőnél több tényezőre is, ekkor persze már nem párosokról, hanem hármasokról, négyesekről, vagy általánosabban n-esekről beszélünk. Ezeket az n-eseket az adatbázis-kezelésben rekordoknak nevezzük. Attribútumok (tulajdonság-halmazok): A, B, C,... Tehát az attribútumok maguk is halmazok. Attribútum halmaz: pl. Q = { A, B, C, D, E, F, G } Funkcionális függőség: pl. f = { A, B } { C, D, E } Gyakorlati példa f dolgozó = {NÉV, OSZTÁLY} {MUNKAKÖR, MUNKAKÖRI_FIZETÉS, JUTALÉK} A funkcionális függőségeket (melyek tulajdonképpen többváltozós, többértékű függvények) a gyakorlatban röviden csak függőségeknek szoktuk nevezni. Kulcs (elsődleges kulcs, primary key) néven nevezzük a függőség baloldalán álló (úgynevezett elsődleges) attribútumok összességét. Ha a kulcs csak egyetlen attribútumból áll, akkor egyszerű kulcsról, egyébként összetett kulcsról beszélünk. A függőség jobboldalán álló attribútumokat másodlagos attribútumoknak nevezzük. A fenti példában tehát a K fdolgozó = {NÉV, OSZTÁLY} attribútumhalmaz kulcs, míg a Q fdolgozó = {MUNKAKÖR, MUNKAKÖRI_FIZETÉS, JUTALÉK} a másodlagos attribútumok halmaza, és az f dolgozó, mint többváltozós, többértékű függvény azt jelenti, hogy a NÉV, és az OSZTÁLY #11_SQL Feladatgyűjtemény (30) - 3 -

4 attribútumok együttesen meghatározzák a MUNKAKÖR, a MUNKAKÖRI_FIZETÉS, és a JUTALÉK attribútumok mindegyikét külön-külön. Tehát a fenti függőség helyett ekvivalens módon megadhatjuk az alábbi függőségek együttesét: f dolgozó1 = {NÉV, OSZTÁLY} {MUNKAKÖR} f dolgozó2 = {NÉV, OSZTÁLY} {MUNKAKÖRI_FIZETÉS} f dolgozó3 = {NÉV, OSZTÁLY} {JUTALÉK} Ennek alapján fogjuk az alábbiakban értelmezni a függőségek ekvivalens felbontását és egyesítését. Függőségek ekvivalens egyesítése és felbontása: Két függőség ekvivalens módon egyesíthető, ha baloldaluk azonos. Ekkor az egyesített függőség jobboldala mindkét függőség jobboldalának attribútumait tartalmazza. Az egyesítés jele: Például f = { A, B } { C, D, E } és g = { A, B } { F, G } esetén: f g = { A, B } { C, D, E, F, G } Minden függőség ekvivalens módon bontható fel olyan függőségek halmazára, melyekben a baloldalak megegyeznek az eredeti függőség baloldalával, a jobboldalak pedig az eredeti függőség jobboldalának egy-egy attribútumát tartalmazzák. Az egyesíthetőség és felbonthatóság fenti ekvivalenciái a gyakorlatban azt jelentik, hogy mivel elvben mindegy, hogy például az f g függőséget, vagy az f, g függőségpárost használjuk, ezért gyakorlati szempontok alapján választhatunk. Relációséma az f függőség fölött: R f A, B, C, D, E = A B C D E A relációséma a pontos algebrai jelentése szerint tehát a benne szereplő attribútumoknak a megadásuk sorrendjében vett Descartes-szorzata, vagyis halmaz, melynek elemei attribútum-érték n-esek, vagyis rekordok. A relációsémát a továbbiakban azonosítani fogjuk egy olyan adattáblával, melynek oszlopnevei a relációséma attribútumai, a sorai pedig a relációséma rekordjai. Mivel az egyes attribútumok (tulajdonság-halmazok) a megengedett értékek mindegyikét tartalmazzák, ezért a relációséma ebben az algebrai értelemben az összes lehetséges tulajdonság érték összes lehetséges csoportosítását tartalmazza, ami nyilván sokkal több nemcsak annál, ami egy adott pillanatban egyáltalán lehetséges, hanem annál is, ami valaha előfordulhat. Például egy ember lehet 1 m magas és 18 kg testsúlyú (kb. 6 éves korában), és lehet 2 m-es, 150 kg-os felnőttként, de egész biztos nem lehet 1 m-es és 150 kg-os. A fentiek miatt a relációsémát a gyakorlatban inkább egy adattábla szerkezetének (más néven sémájának) megadására használjuk, és az őt reprezentáló adattábla helyett a gyakorlatban ténylegesen tárolt rekordokat tartalmazó adattáblával fogunk dolgozni. Ennek algebrai modelljét fogjuk a továbbiakban relációnak nevezni, mely tehát algebrailag nem más, mint a relációséma részhalmaza, gyakorlatilag pedig a ténylegesen feltöltött adattábla. Reláció az f függőség fölött: r f A, B, C, D, E R f A, B, C, D, E Gyakorlati példa: Jelölje dolgozó az f dolgozó függőség fölötti relációt. E reláció egy lehetséges értéke ekkor: dolgozó NÉV, OSZTÁLY, MUNKAKÖR, MUNKAKÖRI_FIZETÉS, JUTALÉK = { Tóth Pál, TMK, asztalos, 60000, 30000, Kis Jolán, Bérosztály, könyvelő, 80000, 0, Kis Elemér, Áruforgalmi osztály, eladó, 50000, } A relációk elemeit rekordoknak is nevezzük, és a relációkat a gyakorlatban olyan adattáblának nevezett táblázatokban ábrázoljuk, ahol a rekordok alkotják a sorokat, az attribútumok rekordbeli értékei pedig az oszlopokat. Egy relációsémában, illetve relációban #11_SQL Feladatgyűjtemény (30) - 4 -

5 a rajta értelmezett függőség elsődleges, azaz kulcs- és másodlagos attribútumait a függőségnél mondottakkal azonos módon használjuk. Valamely r reláció rekordjainak attribútumkészletét (azaz tulajdonsághalmazát) ki tudjuk terjeszteni egy s reláció attribútumaira, ha az s valamely K s kulcsának minden attribútuma az r-nek is attribútuma. Ekkor a K s kulcsot az r reláció idegen kulcsának is nevezzük (lásd az alábbi mintapéldát), ha teljesül, hogy 1. a K s -beli attribútumok minden értékegyüttese az s-ben legfeljebb egyszer fordul elő, és 2. a K s -beli attribútumok minden r-beli értékegyüttese az s-ben is előfordul. Ezt nevezik idegen kulcs megszorításnak, az s és r relációk közötti kapcsolatot pedig 1:N kapcsolatnak, mivel minden s-beli kulcs az r relációban N-szeresen fordul elő, ahol N 0. Adatbázis: Általános értelemben adatbázisnak nevezzük valamely nyilvántartási feladatban fontosnak tekintett tulajdonságú tárolt objektumok (adat- és nézettáblák, jogosultságok, tárolt alprogramok, triggerek, stb.) összességét, szűkebb értelemben egy adott alkalmazáshoz tartozó adattáblák összességét. A nem megfelelő szerkezetű adattárolás több veszélyt is rejt magában (ezeket adatbázisanomáliáknak nevezzük, lásd e foglalkozási anyag végén), mely veszélyek elhárítása érdekében egy normalizálásnak nevezett adatbázis-tervezési eljárást használunk (lásd az alábbi mintapéldát). ADATBÁZIS TERVEZÉS (Vázlatos áttekintés) Az adatbázis tervezés, vagyis a normalizálás során a tárolni kívánt tulajdonságok (attribútumok) összességét kijelölő kezdeti adatbázis sémából (az úgynevezett ősmodellből), valamint az e tulajdonságok között felismert összefüggésekből (a függőségekből) indulunk ki. A függőségeken elvégzett transzformáció-sorozat (vagyis a tényleges normalizálás) eredményeként kapott, úgynevezett eredmény függőségek mindegyikéhez egyértelműen hozzárendelt eredmény relációsémák összessége alkotja az eredmény adatbázis sémát. Végül az eredmény relációsémákat reprezentáló adattáblák együttesen alkotják az eredetileg kijelölt nyilvántartási feladat adatbázisát. A normalizálás egyes lépései során a normalizálás adott szintjén létező függőségekre vonatkozóan bizonyos követelményeket fogalmazunk meg. Ezeket a követelményeket normálformáknak nevezzük. Mi a normalizálás folyamatát négy; az első, a második, a harmadik, és a Boyce- Codd normálforma fázisain keresztül valósítjuk meg. Ezek jelölése; 1NF, 2NF, 3NF és BCNF. Az alábbiakban az ezekben megfogalmazott követelményeket foglaljuk össze: 1.) Minden attribútum egyszerű (vagyis csak egyetlen adatot tartalmaz) [1NF]. 2.) A másodlagos attribútumok mindegyikét a kulcsattribútumok csak együttesen határozzák meg (vagyis nincs részleges függés) [2NF]. 3.) A másodlagos attribútumok egymástól (funkcionálisan) függetlenek (vagyis nincs belső függés) [3NF]. 4.) A kulcsattribútumoknak nincs olyan részhalmaza, mely más kulcs- vagy másodlagos attribútumoktól (funkcionálisan) függne (vagyis nincs kulcstörés) [BCNF]. A magasabb normálformákban értelemszerűen teljesülniük kell az alacsonyabb normálformákban megfogalmazott követelményeknek. Az alábbi mintapéldában a feladat egy olyan adatbázis séma megtervezése lesz, melyben egy ősmodellből (kiindulási adatbázis sémából) el kell jutni a BCNF normálformában megfogalmazott követelményeket is teljesítő (BCNF alakú) adatbázis sémához. #11_SQL Feladatgyűjtemény (30) - 5 -

6 Az adatbázis-tervezés első lépése tehát a tárolni kívánt tulajdonságok (attribútumok) összességének (az ősmodell) kijelölése. Ez egy kreatív, intellektuális tevékenység, mely alapos körültekintést igényel, ám a tervezés eljárásának szempontjából önkényes. Az ősmodellben már minden attribútum rögzített (bár esetleg összetett) adattípussal rendelkezik, vagyis az ősmodellel kijelöltük a tárolni kívánt objektum típusát, az ősobjektumtípust. Felmerülhet ezek után a kérdés, miért nem ezt implementáljuk, miért van szükség további lépésekre. A válasz lényege, hogy el akarjuk kerülni az úgynevezett adatbázis-anomáliákat (lásd alább!), vagyis az adatvesztést és az inkonzisztenciát (tartalom-ellentmondást). A tervezési folyamat, a normalizálás első, és egyben legfontosabb lépése, az attribútumok közötti összefüggések, az úgynevezett függőségek felismerése. Ez is intellektuális, nem automatizálható lépés, ám már semmiképpen nem önkényes. Az adattárolás céljának, valamint a tárolni kívánt attribútumoknak (tulajdonságoknak) az ismeretében, a függőségek felírása tulajdonképpen az általunk létrehozni kívánt zárt világ belső kapcsolatainak, összefüggéseinek feltérképezését jelenti. Maga a normalizálás a felírt függőségeknek a normálformák követelményei szerinti (lényegében mechanikus) transzformációját jelenti, melynek során (és ez nagyon lényeges!) automatikusan (!) elkülönülnek az ősmodell ősobjektumtípusából az adatmodell célszerű építőkövei, az elemi objektumtípusok, melyeket relációsémáknak is nevezünk, és amelyeknek implementációi maguk az adattáblák. Egyszerűbb feladatok esetén ezek az elemi objektumtípusok (relációsémák, adattáblák), szinte ránézésre elkülöníthetők (Raktár, Beszállítók, Vevők, Rendelések, stb. táblák), ám egy összetett feladat esetén csak a normalizálási folyamat automatizmusa adhat garanciát az üzembiztosan használható adatmodell létrehozására. Végül egy fontos gyakorlati javaslat. Mind a függőségek feltérképezésénél, mind a normalizáció transzformációs lépéseinél célszerű az összes lehetséges ekvivalens függőség-egyesítést elvégezni (lásd feljebb!). Ez a gyakorlatban azt jelenti, hogy kevesebb adattáblát kell használnunk, elvileg pedig azt, hogy ugyanannak az objektumtípusnak egyetlen relációsémában tartjuk az attribútumait. EGY ADATBÁZIS-TERVEZÉSI MINTAPÉLDA Legyen egy adatbázis sémája: dolgozó NÉV, OSZTÁLY, MUNKAKÖR, MUNKAKÖRI_FIZETÉS, JUTALÉK, FŐNÖK, TELEPHELY_CÍME, ahol feltételezzük, hogy a.) a NÉV és az OSZTÁLY adatok csupán együtt azonosítják egyértelműen a dolgozót, b.) egy OSZTÁLY egy telephelyen található. Alakítsa át ezt az adatbázis sémát BCNF alakra. (Mutassa be a tervezés folyamatát, és adja meg az elsődleges és az idegen kulcsokat is.) MEGOLDÁS 1. lépés (A tárolandó attribútumok kijelölése az ősmodell relációsémája) dolgozó NÉV, OSZTÁLY, MUNKAKÖR, MUNKAKÖRI_FIZETÉS, JUTALÉK, FŐNÖK, TELEPHELY_CÍME 2. lépés (A függőségek felismerése) A függőségeket részben az attribútumok szövegesen megadott kapcsolatai, részben a józan ész megfontolása alapján ismerjük fel. #11_SQL Feladatgyűjtemény (30) - 6 -

7 a.) Az a NÉV és az OSZTÁLY adatok csupán együtt azonosítják egyértelműen a dolgozót kapcsolatból az alábbi függőség következik: f dolgozó = { NÉV, OSZTÁLY } { MUNKAKÖR, MUNKAKÖRI_FIZETÉS, JUTALÉK, FŐNÖK, TELEPHELY_CÍME } b.) Az egy OSZTÁLY egy telephelyen található kapcsolatból következik: f osztályok = { OSZTÁLY } { TELEPHELY_CÍME } Mivel a NÉV és az OSZTÁLY egyértelműen azonosítják a dolgozót, így a józan ész alapján nyilván felírható f főnök = { OSZTÁLY } { FŐNÖK }, a fenti két függőség pedig egyesíthető, hiszen a baloldaluk azonos. Így kapjuk: f osztályok1 = { OSZTÁLY } { FŐNÖK, TELEPHELY_CÍME } c.) A józan ész alapján felírható az alábbi függőség: f munkakörök = { MUNKAKÖR } { MUNKAKÖRI_FIZETÉS } Megjegyezzük, hogy a tervezés tehát az összes függőség felismerésével kezdődik, vagyis a további lépésekben új függőség nem "keletkezhet" (csak a már meglévők transzformálódhatnak a normalizálás lépéseinek megfelelően). A felismert függőségek közül azonban nem feltétlenül szükséges mindegyiket felhasználnunk a tervezés további részében, hiszen lehetnek közöttük olyanok, melyek egymás alternatíváinak tekinthetők (és az alkalmazás egyéb szempontjai alapján döntünk az egyik, vagy a másik mellett), és lehetnek olyanok is, amelyek az adott alkalmazás szempontjából érdektelenek. Ezt a redukciót azonban kellő körültekintéssel kell végeznünk, mert információvesztéssel járhat. 3. lépés (A függőségek normalizálása) A normalizálás folyamatában tulajdonképpen egymásután vizsgáljuk a függőségeket, egy adott függőség megítélése során azonban figyelembe kell venni az attribútumaira vonatkozó többi függőséget is (például az éppen vizsgált függőségnek egy másik nem belső függősége-e, stb.) 3.1. lépés (az f dolgozó függőség vizsgálata) 1NF: az f dolgozó 1NF-ben van, mivel nincs benne összetett attribútum, 2NF: az f dolgozó nincs 2NF-ben, mivel az f osztályok1 függőség értelmében az f dolgozó függőség másodlagos (a függőség jobboldalán álló) attribútumainak némelyike nem függ az elsődleges attribútumok (a baloldal) mindegyikétől. Az f osztályok1 függőséget kiemelve az f dolgozó függőségből, kapjuk az f dolgozó1 = { NÉV, OSZTÁLY } { MUNKAKÖR, MUNKAKÖRI_FIZETÉS, JUTALÉK } függőséget, mely már nyilvánvalóan 2NF alakban van. 3NF: az f dolgozó1 nincs 3NF-ben, mivel jobboldalán az f munkakör függőség, mint belső függés található. Ezt kiemelve, kapjuk az f dolgozó2 = { NÉV, OSZTÁLY } { MUNKAKÖR, JUTALÉK } függőséget, mely már 3NF alakban van. BCNF: a BCNF feltétele, hogy a függőség 3NF-ben legyen, továbbá a baloldalának egyetlen valódi részhalmaza se függjön egyetlen elsődleges, vagy másodlagos attribútumtól. Ez utóbbi az f dolgozó2 függőség esetén azért teljesül, mert az attribútumok megadott (vagy feltételezhető) tulajdonságaiból ilyen függések nem következnek. #11_SQL Feladatgyűjtemény (30) - 7 -

8 3.2. lépés (az f osztályok1 függőség vizsgálata) 1NF: az f osztályok1 1NF-ben van, mivel nincs benne összetett attribútum, 2NF: az f osztályok1 2NF-ben is van, mivel a másodlagos attribútumok mindegyike az elsődleges attribútumok mindegyikétől függ (hiszen a baloldalon csak egyetlen attribútum áll). 3NF: az f osztályok1 3NF-ben is van, mivel a másodlagos attribútumok között sem megadott, sem feltételezhető kapcsolat (azaz függőség) nincs. BCNF: mivel az f osztályok1 3NF-ben van, és a baloldalán csak egyetlen attribútum áll, így egyúttal BCNF-ben is van lépés (az f munkakörök függőség vizsgálata) Az f munkakörök függőség már BCNF-ben is van (tehát 1NF-ben, 2NF-ben és 3NF-ben is), mivel a bal- és a jobboldalon is csak egyetlen attribútum áll. 4. lépés (Az eredmény függőségek összefoglalása) Alábbiakban összefoglaljuk a fenti normalizálási folyamat során kapott eredmény függőségeket: f dolgozó2 = { NÉV, OSZTÁLY } { MUNKAKÖR, JUTALÉK } f osztályok1 = { OSZTÁLY } { FŐNÖK, TELEPHELY_CÍME } f munkakörök = { MUNKAKÖR } { MUNKAKÖRI_FIZETÉS } 5. lépés (Az eredmény adatmodell felírása) Az eredmény függőségek alapján az eredmény adatmodell (tehát az eredmény relációsémák, vagyis az adattáblák halmaza), valamint az elsődleges kulcsok és az idegen kulcsok az alábbi módon írhatók fel: dolgozók NÉV, OSZTÁLY, MUNKAKÖR, JUTALÉK, ahol a K dolgozók = { NÉV, OSZTÁLY } attribútum halmaz a dolgozók relációra vonatkozó elsődleges kulcsa, az F osztályok = { OSZTÁLY }, illetve az F munkakörök = { MUNKAKÖR } attribútum halmazok pedig a dolgozók relációnak az osztályok, illetve a munkakörök relációra vonatkozó idegenkulcsai (az elsődleges kulcsattribútumokat aláhúztuk, az idegen kulcsattribútumokat pedig dőlt betüvel jelenítettük meg), osztályok OSZTÁLY, FŐNÖK, TELEPHELY_CÍME, ahol a K osztályok = { OSZTÁLY } attribútum halmaz az osztályok relációra vonatkozó elsődleges kulcsa munkakörök MUNKAKÖR, MUNKAKÖRI_FIZETÉS, ahol a K munkakörök = { MUNKAKÖR } attribútum halmaz a munkakörök relációra vonatkozó elsődleges kulcsa. Ilymódon tehát minden eredmény függőséghez egyértelműen hozzárendeltünk egy relációsémát a függőség attribútumainak összességével. A relációsémákban a szokásoknak megfelően aláhúztuk az elsődleges kulcsok attribútumait. #11_SQL Feladatgyűjtemény (30) - 8 -

9 ADATBÁZIS-ANOMÁLIÁK A fentiekben áttekintettük az adatbázis-tervezés alapvető lépéseit, fogalmait. Az adatbázismodell 2NF, 3NF és BCNF alakra hozása érzékelhető redundancia-csökkenéssel járt (az 1NF még nem!), és ez összhangban volt eredeti célkitűzésünkkel. A Normalizálás alfejezet bevezetőjében azonban utaltunk arra is, hogy a normalizálással bizonyos rendellenes adatbázisműködéseket is ki szeretnénk zárni. Eljött az ideje annak, hogy mintegy a fejezet lezárásaként áttekintsük e rendellenességeket (más szóval anomáliákat), továbbá egyben azt is megvizsgáljuk, hogy az általunk bevezetett eszközök segítségével e rendellenességek kiküszöbölhetőkké váltak-e. Induljunk ki az 1NF alakból, hiszen az olyan relációsémák, melyek nincsenek 1NF alakban (tehát összetett attribútumokat, azaz ismétlődő csoportokat tartalmaznak) eleve alkalmatlanok arra, hogy adattáblákkal reprezentáljuk. Az alábbiak során tekintsük a korábban már bevezetett KATALÓGUS ISBN, KÖNYV_CÍME, TÉMA, KIADÁSI_ÉV, ÁR, KIADÓ, KIADÓ_CÍME, relációsémát, melyről tudjuk, hogy 2NF alakú (tehát 1NF alakú is), de nem 3NF alakú, és így nem BCNF alakú. Módosítási anomália Módosítási anomáliának nevezzük azt a jelenséget, amikor az adatbázis valamely adatának a megváltoztatása során történő hiba az adatbázis konzisztenciáját (azaz ellentmondásmentességét) veszélyezteti. Tegyük fel, hogy valamelyik kiadó elköltözik, tehát módosítani szeretnénk e kiadó címét. Ha az adatbázisunk modellje a fenti katalógus relációséma, akkor már önmagában kellemetlen, hogy ezt mindazon rekordon el kell végezni, amelyben az adott kiadó szerepelt (ezt a redundancia okozza). Az viszont már az adatbázis konzisztenciáját veszélyezteti, ha ez a módosítási folyamat bármilyen okból (például egy áramkimaradás, vagy rendszerösszeomlás miatt) megszakad, ugyanis így egyszerre szerepelhet az adatbázisban a régi és az új cím. Abban az esetben pedig, ha ez a módosítás nem egy megfelelő SQL utasítással, hanem kézzel (tehát közvetlen adatátírással) történik, akkor még az is előfordulhat, hogy tévesztés miatt különböző címadatok kerülnek az adatbázisba. Könnyen belátható, hogy a redundancia, vagyis a részleges függések, illetve a tranzitív függések megszüntetésével, tehát az adatbázis BCNF alakjában a módosítási anomália veszélye elhárul. Feltehető ezekután a kérdés, hogy egy BCNF alakú adatbázisban a módosítás nem okozhat-e hibát? Természetesen okozhat! Hibás adatot bármikor be lehet vinni egy adatbázisba, ez ellen nincs védelem. Ám egy irredundáns adatbázisban ez nem okoz inkonzisztenciát, ilymódon ha észrevesszük a hibát, könnyen ki tudjuk javítani. Nem az a végzetes baj tehát, ha például egy kiadó címét rosszul írjuk (csak észrevesszük előbb-utóbb), hanem az, ha ez a cím különbözőképpen szerepel. Ezt kijavítani egy nagy adatbázisban (mely erre az adatra nézve nem irredundáns) szinte lehetetlen. Az [1] könyv II. részének 7. fejezetéből átvéve #11_SQL Feladatgyűjtemény (30) - 9 -

10 Törlési anomália Törlési anomália fordul elő olyankor, amikor valamely fölöslegesnek, vagy hibásnak minősült adat törlése során információvesztés történik. Gondoljunk ismét a fenti katalógus relációsémára. Tegyük fel, hogy a könyvesboltból (melynek ez a katalógusa) kifogy egy olyan könyv, melynek kiadója csak ezzel a könyvvel szerepelt a kínálatban. Nagy baj ez, mivel az által, hogy kitöröltük a könyvet a katalógusból, kitöröltük a kiadójának adatait is, úgyhogy most már rendelni sem tudunk belőle. Mi is okozta ezt a rendellenességet? Láthatóan az, hogy a kiadó adatait együtt tároltuk a könyv adataival. A könyv és a kiadója két különböző objektum, melyek mindegyike fontos az adatbázisban, tehát különböző relációban (külön adattáblában) kell tárolni őket. A külön történő tárolás egy belső függést számolt fel, tehát ennek az anomáliának az elhárításához az adatbázis 3NF alakja szükséges. Bővítési anomália Bővítési anomália következik be olyankor, amikor valamely adat bevitele azért bizonyul lehetetlennek, mert rá vonatkozóan nincs kulcs. Tegyük fel, hogy fenti katalógus relációsémát alkalmazó könyvesbolt vezetője együttműködési szerződést ír alá valamelyik kiadóval. Ezt követően szeretné beírni az adatbázisba ennek a kiadónak az adatait, hogy majd rendelni tudjanak tőlük (tegyük fel, hogy ehhez az adatbázishoz kapcsolódik egy rendeléskezelő program is). Az előbbihez hasonló problémával kell szembenéznie, csak most nem elveszik a cím, hanem már be se tudja írni. Ennek az az oka, hogy a katalógus relációsémájú adatbázis objektumai könyvek, melyeknek az ISBN számuk a kulcsadatuk, így enélkül nem lehet adatot bevinni. Márpedig az új kiadó adataihoz nem rendelhető ISBN szám. A problémát ezúttal is az okozza, hogy egy rekordban két különböző objektum adatait tároljuk, de a rekord kulcsa csak az egyik objektumnak kulcsa. Miután a kiadó független e kulcstól, így az adataival önmagában nem lehet elvégezni a bővítést. A belsőfüggések felszámolása, külön relációséma megalkotása, vagyis az adatbázis 3NF alakra hozása nyilvánvalóan ezt a problémát is megoldja. IRODALOM [1] Kende M. Kotsis D. Nagy I.: Adatbázis-kezelés az Oracle-rendszerben, Panem, További ajánlott irodalom az adatbázis-tervezéshez Halassy Béla: Az adatbázis-tervezés alapjai és titkai, IDG, Ullman, J. D., Widom J.: Adatbázis-rendszerek - Alapvetés, Panem, Ensor, D., Stevenson I.: Oracle-tervezés, Kossuth, Halassy Béla: Adatmodellezés, Nemzeti tankönyvkiadó, Békéssy András, Demetrovics János: Adatbázis-szerkezetek, Akadémiai Kiadó, #11_SQL Feladatgyűjtemény (30)

11 1. Foglalkozás Az SQL használatának alapjai, Egyszerű lekérdezések Részletesebben lásd [2]: 3. melléklet, 1. fejezet, "00-2_Bevezetés az SQL-Plus-ba (Példatár).pdf" file FELADATGYŰJTEMÉNY 1.1. Feladat Írassa ki azon dolgozók munkakörét és fizetését, akiknek fizetése nincs az USD tartományban. A lista fejléce legyen Név, Munkakör, Fizetés, rendezzen a dolgozók neve szerint Feladat Írassa ki a salesman és a clerk munkakörű azon dolgozók nevét, munkakörét és jövedelmét, akiknek jövedelme nincs az USD tartományban. A lista fejléce legyen Név, Munkakör, Jövedelem. TOVÁBBI FELADATOK T1.3. Feladat Írassa ki azon dolgozók nevét, munkakörét, fizetését, jutalékát, részleg-azonosítóját, akik 1000 USD-nél többet keresnek, továbbá március 1. és szeptember 30. között léptek be a vállalathoz. T1.4. Feladat Írja ki azon dolgozók nevét, foglalkozását, fizetését és belépési dátumát, akik 1981-ben léptek be a vállalathoz. A lista legyen belépési dátum szerint rendezve. T1.5. Feladat Írassa ki azon alkalmazottak azonosítóját, nevét, foglalkozását, fizetését és jutalékát, akiknek jutaléka meghaladja a fizetésük 70 %-át. T1.6. Feladat Készítsen listát az összes alkalmazottról úgy, hogy a lista fejléce: Azonosító, Belépési dátum, Név, Foglalkozás, Jutalék, továbbá a Jutalék oszlopban azoknál, akik nem kapnak jutalékot, az a szöveg jelenjen meg, hogy nincs jutalék. T1.7. Feladat Belépési dátum szerint (év.hónap.nap.) listázza a salesman foglalkozású dolgozók azonosítóját, nevét, foglalkozását, hathavi fizetését és hathavi jövedelmét. T1.8. Feladat Listázza azon dolgozók nevét jövedelmét és részlegét, akiknek nevében az "R", vagy az "A" betű szerepel, és jövedelmük (fizetés+jutalék) 1000 és 2500 USD között van. A lista legyen rendezett a részleg szerint, azon belül pedig a foglalkozás szerint. T1.9. Feladat Listázza 1981-től dolgozók nevét, munkakörét, jövedelmét és belépési évszámát elsődlegesen a belépési évszám szerint, másodlagosan a dolgozók neve szerint rendezve. #11_SQL Feladatgyűjtemény (30)

12 T1.10. Feladat A részlegazonosító szerint csoportosítva listázza azokat a dolgozókat, akiknek fizetése 2000 és 5500 USD közötti érték. A keletkezett lista elsődlegesen a részlegazonosító szerint növekvően, másodlagosan pedig a fizetés szerint csökkenően legyen rendezve. T1.11. Feladat Írassa ki minden jutalékkal rendelkező alkalmazott nevét, jutalékát, főnökének azonosítóját. A lista legyen a főnök azonosítója és az alkalmazottak neve szerint rendezett. #11_SQL Feladatgyűjtemény (30)

13 MEGOLDÁSGYŰJTEMÉNY 1.1. Feladat Írassa ki azon dolgozók munkakörét és fizetését, akiknek fizetése nincs az USD tartományban. A lista fejléce legyen Név, Munkakör, Fizetés, rendezzen a dolgozók neve szerint. Megoldás SELECT ename AS "Név", job AS "Munkakör", sal AS "Fizetés" WHERE NOT sal BETWEEN 1500 AND 2500 ORDER BY "Név"; Eredmény Név Munkakör Fizetés ADAMS CLERK 1100 BLAKE MANAGER 2850 FORD ANALYST 3000 JAMES CLERK 950 JONES MANAGER 2975 KING PRESIDENT 5000 MARTIN SALESMAN 1250 MILLER CLERK 1300 SCOTT ANALYST 3000 SMITH CLERK 800 WARD SALESMAN sor kijelölve Feladat Írassa ki a salesman és a clerk munkakörű azon dolgozók nevét, munkakörét és jövedelmét, akiknek jövedelme nincs az USD tartományban. A lista fejléce legyen Név, Munkakör, Jövedelem. Megoldás SELECT ename AS "Név", job AS "Munkakör", sal + NVL(comm,0) AS "Jövedelem" WHERE UPPER(job) IN ( SALESMAN, CLERK ) AND NOT sal + NVL(comm,0) BETWEEN 1500 AND 2500 ORDER BY "Név"; Eredmény Név Munkakör Jövedelem ADAMS CLERK 1100 JAMES CLERK 950 MARTIN SALESMAN 2650 MILLER CLERK 1300 SMITH CLERK sor kijelölve. #11_SQL Feladatgyűjtemény (30)

14 2. Foglalkozás Egytáblás csoportosító lekérdezések Részletesebben lásd [2]: 2. fejezet FELADATGYŰJTEMÉNY 2.1. Feladat Listázza 1981-től éves csoportosításban a dolgozók nevét, munkakörét és jövedelmét a dolgozók neve szerint rendezve Feladat Listázza ki a dolgozók nevét, a belépésük dátumát, valamint azt, hogy a hónap. illetve a hét hányadik napján léptek be (például péntek a hét 5. napja) Feladat Listázza 1981-től belépési évenként a legkisebb jövedelmeket Feladat Listázza részlegenként és munkakörönként a legalább 1000 USD-os átlagjövedelmeket Feladat Listázza főnökönként a beosztottak összjövedelmét Feladat Írassa ki az első hat 1000 USD-os fizetésosztályban (0-999, , stb.) dolgozók számát valamilyen célszerű rendezésben Feladat Írassa ki évenként a belépett dolgozók számát. TOVÁBBI FELADATOK T2.8. Feladat Írassa ki munkakörönként a legkisebb és a legnagyobb fizetéseket valamilyen célszerű rendezésben. T2.9. Feladat Írassa ki a hét páros és páratlan sorszámú napjain belépett dolgozók átlagfizetését és átlagjövedelmét, a paritási csoportokban csökkenő átlagjövedelem szerint rendezve. T2.10. Feladat Írassa ki a hónap páros és páratlan sorszámú napjain belépett dolgozók átlagfizetését és átlagjövedelmét, a paritási csoportokban csökkenő átlagjövedelem szerint rendezve. T2.11. Feladat Írassa ki alfabetikus sorrendben az azonos betűvel kezdődő nevű dolgozók számát. #11_SQL Feladatgyűjtemény (30)

15 MEGOLDÁSGYŰJTEMÉNY 2.1. Feladat Listázza 1981-től éves csoportosításban a dolgozók nevét, munkakörét és jövedelmét a dolgozók neve szerint rendezve. 1. Megoldás SELECT TO_NUMBER(TO_CHAR(hiredate,'YYYY')) AS "Belépési év", ename AS "Dolgozó Neve", job AS "Munkaköre", sal + NVL(comm,0) AS "Jövedelem" WHERE TO_NUMBER(TO_CHAR(hiredate,'YYYY')) >= 1981 ORDER BY "Belépési év", "Dolgozó Neve"; Eredmény Belépési év Dolgozó Ne Munkaköre Jövedelem ALLEN SALESMAN BLAKE MANAGER CLARK MANAGER FORD ANALYST JAMES CLERK JONES MANAGER KING PRESIDENT MARTIN SALESMAN TURNER SALESMAN WARD SALESMAN MILLER CLERK ADAMS CLERK SCOTT ANALYST sor kijelölve. Megjegyzés 1. A Smith maradt ki, ő 1980-ban lépett be. 2. Miben fog különbözni a fenti utasítás listája, ha nem alkalmazzuk a TO_NUMBER függvényt? 2. Megoldás (EXTRACT függvénnyel) SELECT EXTRACT(YEAR FROM hiredate) AS "Belépési év", ename AS "Dolgozó Neve", job AS "Munkaköre", sal + NVL(comm,0) AS "Jövedelem" WHERE TO_NUMBER(TO_CHAR(hiredate,'YYYY')) >= 1981 ORDER BY "Belépési év", "Dolgozó Neve"; Eredmény Belépési év Dolgozó Ne Munkaköre Jövedelem ALLEN SALESMAN BLAKE MANAGER CLARK MANAGER FORD ANALYST JAMES CLERK JONES MANAGER KING PRESIDENT 5000 #11_SQL Feladatgyűjtemény (30)

16 1981 MARTIN SALESMAN TURNER SALESMAN WARD SALESMAN MILLER CLERK ADAMS CLERK SCOTT ANALYST sor kijelölve. Megjegyzés Az EXTRACT függvény használata Az EXTRACT SQL függvény visszaadja a paraméterében a FROM után megadott dátumkifejezés YEAR, MONTH, DAY, HOUR, MINUTE, illetve SECOND numerikus típusú értékét. Példa SELECT ename AS "Név", hiredate AS "Dátum", EXTRACT(YEAR FROM hiredate) AS "BeÉv", EXTRACT(MONTH FROM hiredate) AS "BeHónap", EXTRACT(DAY FROM hiredate) AS "BeNap" ; Eredmény Név Dátum BeÉv BeHónap BeNap SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER sor kijelölve Feladat Listázza ki a dolgozók nevét, a belépésük dátumát, valamint azt, hogy a hónap. illetve a hét hányadik napján léptek be (például péntek a hét 5. napja). Megoldás SELECT ename AS "DolgozóNév", hiredate AS "Dátum", EXTRACT(DAY FROM hiredate) AS "Nap a hónapban", TO_CHAR(hiredate, DAY ) AS "Nap neve", TO_NUMBER(TO_CHAR(hiredate, D )) AS "Nap a héten" ORDER BY "DolgozóNév"; Eredmény DolgozóNév Dátum Nap a hónapban Nap neve Nap a héten ADAMS SZOMBAT 6 ALLEN PÉNTEK 5 BLAKE PÉNTEK 5 CLARK KEDD 2 #11_SQL Feladatgyűjtemény (30)

17 FORD CSÜTÖRTÖK 4 JAMES CSÜTÖRTÖK 4 JONES CSÜTÖRTÖK 4 KING KEDD 2 MARTIN HÉTFŐ 1 MILLER SZOMBAT 6 SCOTT VASÁRNAP 7 SMITH SZERDA 3 TURNER KEDD 2 WARD VASÁRNAP 7 14 sor kijelölve Feladat Listázza 1981-től belépési évenként a legkisebb jövedelmeket. 1. Megoldás (Előszűréssel) SELECT TO_CHAR(hiredate,'YYYY') AS "Belépés", MIN(sal+NVL(comm,0)) AS "MinJöv" WHERE TO_NUMBER(TO_CHAR(hiredate,'YYYY')) >= 1981 GROUP BY TO_CHAR(hiredate,'YYYY') ORDER BY "Belépés"; Eredmény Belé MinJöv sor kijelölve. Megjegyzés Mi történik, ha a TO_CHAR függvény elé egyik, vagy mindkét helyre betesszük a TO_NUMBER függvényt? 2. Megoldás (Csoportszűréssel) SELECT TO_CHAR(hiredate,'YYYY') AS "Belépés", MIN(sal+NVL(comm,0)) AS "MinJöv" GROUP BY TO_CHAR(hiredate,'YYYY') HAVING TO_NUMBER(TO_CHAR(hiredate,'YYYY')) >= 1981 ORDER BY "Belépés"; Eredmény Belé MinJöv sor kijelölve. Megjegyzés Láthatjuk a két megoldás azonos eredményt adott, de vajon melyik a hatékonyabb? 3. Megoldás (Csoportszűréssel és formázott kiíratással) COLUMN "Belépés" FORMAT A7 SELECT TO_CHAR(hiredate,'YYYY') AS "Belépés", MIN(sal+NVL(comm,0)) AS "MinJöv" #11_SQL Feladatgyűjtemény (30)

18 GROUP BY TO_CHAR(hiredate,'YYYY') HAVING TO_NUMBER(TO_CHAR(hiredate,'YYYY')) >= 1981 ORDER BY "Belépés"; CLEAR COLUMNS Eredmény Belépés MinJöv sor kijelölve. columns törölve Megjegyzés A formázott kiíratásokkal a későbbiekben fogunk részletesebben foglalkozni Feladat Listázza részlegenként és munkakörönként a legalább 1000 USD-os átlagjövedelmeket. Megoldás SELECT deptno AS "Részleg", job AS "Munkakör", AVG(sal + NVL(comm,0)) AS "ÁtlagJövedelem" GROUP BY deptno, job HAVING AVG(sal + NVL(comm,0)) >= 1000 ORDER BY deptno ASC, job ASC, "ÁtlagJövedelem" DESC; Eredmény Részleg Munkakör ÁtlagJövedelem CLERK MANAGER PRESIDENT ANALYST MANAGER MANAGER SALESMAN sor kijelölve Feladat Listázza főnökönként a beosztottak összjövedelmét. 1. Megoldás SELECT mgr AS "Főnök", SUM(sal + NVL(comm,0)) AS "ÖsszJövedelem" GROUP BY mgr ORDER BY mgr ASC, "ÖsszJövedelem" DESC; Eredmény Főnök ÖsszJövedelem #11_SQL Feladatgyűjtemény (30)

19 sor kijelölve. 2. Megoldás (CASE szerkezettel és formázott kiíratással) COLUMN "Főnök" FORMAT A12 SELECT CASE WHEN mgr IS NULL THEN 'Nincs Főnök' ELSE TO_CHAR(mgr) END AS "Főnök", SUM(sal + NVL(comm,0)) AS "ÖsszJövedelem" GROUP BY mgr ORDER BY mgr ASC, "ÖsszJövedelem" DESC; CLEAR COLUMNS Eredmény Főnök ÖsszJövedelem Nincs Főnök sor kijelölve. columns törölve 3. Megoldás (Az NVL2 függvénnyel és formázott kiíratással) COLUMN "FőnökKód" FORMAT A12 SELECT NVL2(TO_CHAR(mgr),TO_CHAR(mgr),'Nincs Főnök') AS "FőnökKód", SUM(sal + NVL(comm,0)) AS "ÖsszJövedelem" GROUP BY mgr ORDER BY mgr ASC, "ÖsszJövedelem" DESC; CLEAR COLUMNS Eredmény FőnökKód ÖsszJövedelem Nincs Főnök sor kijelölve. columns törölve 2.6. Feladat Írassa ki az első hat 1000 USD-os fizetésosztályban (0-999, , stb.) dolgozók számát valamilyen célszerű rendezésben. Megoldás COLUMN "Fizetés Kategória" FORMAT A17 SELECT CASE WHEN TRUNC(sal/1000) = 0 THEN ' 0-999' WHEN TRUNC(sal/1000) = 1 THEN ' ' WHEN TRUNC(sal/1000) = 2 THEN ' ' #11_SQL Feladatgyűjtemény (30)

20 WHEN TRUNC(sal/1000) = 3 THEN ' ' WHEN TRUNC(sal/1000) = 4 THEN ' ' WHEN TRUNC(sal/1000) = 5 THEN ' ' ELSE 'nincs tovább!' END AS "Fizetés Kategória", COUNT(*) AS "Létszám" GROUP BY TRUNC(sal / 1000) ORDER BY "Fizetés Kategória" DESC; CLEAR COLUMNS Eredmény Fizetés Kategória Létszám sor kijelölve. columns törölve Megjegyzés A TRUNC függvény használata szám esetén szintaktika: TRUNC(n [, m]) ahol n, illetve m egész számok megadják az eredményben engedélyezett egész, illetve tizedesjegyek számát. A függvény által visszadott érték egész szám, illetve adott számú tizedesjegyet tartalmazó törtszám típusú. m1. Példa SQL> SELECT TRUNC(600/1000) 2 FROM dual; TRUNC(600/1000) m2. Példa SQL> SELECT TRUNC(3600/1000) 2 FROM dual; TRUNC(3600/1000) m3. Példa SQL> SELECT TRUNC(3600/1000, 1) 2 FROM dual; TRUNC(3600/1000,1) ,6 #11_SQL Feladatgyűjtemény (30)

21 2.7. Feladat Írassa ki évenként a belépett dolgozók számát. 1. Megoldás COLUMN "Belépési év" FORMAT A11 SELECT SUBSTR(TRUNC(hiredate,'YYYY'),1,4) AS "Belépési év", COUNT(*) AS "Létszám" GROUP BY TRUNC(hiredate, 'YYYY') ORDER BY "Belépési év"; CLEAR COLUMNS 2. Megoldás COLUMN "Belépési év" FORMAT A11 SELECT TO_CHAR(hiredate,'YYYY') AS "Belépési év", COUNT(*) AS "Létszám" GROUP BY TO_CHAR(hiredate,'YYYY') ORDER BY "Belépési év"; CLEAR COLUMNS Eredmény Belépési év Létszám sor kijelölve. columns törölve Megjegyzés A TRUNC függvény használata dátum esetén szintaktika: TRUNC(n, mask) ahol mask a TO_CHAR függvényben használható formátummaszk, és a visszadott érték dátum típusú. m1. Példa SQL> SELECT sysdate, 2 TRUNC(sysdate,'YYYY') 3 FROM dual; SYSDATE TRUNC(SYSD m2. Példa SQL> SELECT sysdate, 2 TRUNC(sysdate,'MM') 3 FROM dual; SYSDATE TRUNC(SYSD m3. Példa SQL> SELECT emp.*, 2 TRUNC(hiredate,'YYYY') AS "Belépés" 3 #11_SQL Feladatgyűjtemény (30)

22 4 WHERE TRUNC(hiredate,'YYYY') >= 5 TO_DATE(' ','YYYY-MM-DD'); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO Belépés KING PRESIDENT BLAKE MANAGER CLARK MANAGER JONES MANAGER MARTIN SALESMAN ALLEN SALESMAN TURNER SALESMAN JAMES CLERK WARD SALESMAN FORD ANALYST SCOTT ANALYST ADAMS CLERK MILLER CLERK sor kijelölve. Megjegyzés az m3.példához A Smith maradt ki, ő 1980-ban lépett be (lásd 2.1. Feladat). #11_SQL Feladatgyűjtemény (30)

23 3. Foglalkozás Többtáblás lekérdezések, allekérdezések Részletesebben lásd [2]: 3. fejezet FELADATGYŰJTEMÉNY 3.1. Feladat Listázza dolgozónként a fizetés és a legnagyobb fizetés közötti különbséget Feladat Listázza 1981-től éves csoportosításban a dolgozók nevét, munkakörét, főnökének nevét és a dolgozó belépési évszámát a dolgozók neve szerint rendezve. (Lásd a 2.1. feladat) 3.3. Feladat Listázza 1981-től belépési évenként a legkisebb fizetésű dolgozók nevét, munkakörét és fizetését a belépés éve szerint csökkenően rendezve. (Lásd a 2.3. feladat) 3.4. Feladat Listázza 1981-től belépési évenként a legnagyobb fizetésű nem-főnök dolgozók adatait, az évek szerint növekvően rendezve. TOVÁBBI FELADATOK T3.5. Feladat Listázza ki munkakörönként a legkisebb fizetésű dolgozók nevét, fizetését, főnökének nevét és főnökének fizetését. T3.6. Feladat Listázza ki a páros és a páratlan sorszámú napokon belépett dolgozók nevét, munkakörét, valamint azt, hogy páros, vagy páratlan napon lépett-e be. T3.7. Feladat Listázza ki növekvő módon rendezve az azonos betűvel kezdődő nevű dolgozók nevét, valamint a nevük mellett megadva azt, hogy csoportjukban hányan vannak. #11_SQL Feladatgyűjtemény (30)

24 MEGOLDÁSGYŰJTEMÉNY 3.1. Feladat Listázza dolgozónként a fizetést, valamint a fizetés és a legnagyobb fizetés közötti különbséget. 1. Megoldás (Allekérdezés a szelekciós listában) SELECT ename AS "Név", sal AS "Fizetés", sal (SELECT MAX(sal) ) AS "Defektus" ORDER BY "Név"; 2. Megoldás (Allekérdezés a FROM utasításrészben In-Line nézet) SELECT ename AS "Név", sal AS "Fizetés", sal x.maxfiz AS "Defektus", (SELECT MAX(sal) AS MaxFiz ) x ORDER BY "Név"; 3. Megoldás (Allekérdezés a WHERE utasításrészben megoldás a MAX függvény nélkül) SELECT a.ename AS "Név", a.sal AS "Fizetés", a.sal b.sal AS "Defektus" a, emp b WHERE b.sal >= ALL (SELECT sal ) ORDER BY "Név"; Eredmény (Mindhárom megoldás esetén) Név Fizetés Defektus ADAMS ALLEN BLAKE CLARK FORD JAMES JONES KING MARTIN MILLER SCOTT SMITH TURNER WARD sor kijelölve. #11_SQL Feladatgyűjtemény (30)

25 3.2. Feladat Listázza 1981-től éves csoportosításban a dolgozók nevét, munkakörét, főnökének nevét és a dolgozó belépési évszámát a dolgozók neve szerint rendezve. (Lásd a 2.1. feladat) 1. Megoldás SELECT RPAD(d.ename,12) AS "Dolgozó Neve", d.job AS "Munkaköre", RPAD(TO_CHAR(d.hiredate,'YYYY'),12) AS "Belépési éve", RPAD(f.ename,8) AS "Főnöke" d, emp f WHERE d.mgr = f.empno(+) AND TO_NUMBER(TO_CHAR(d.hiredate,'YYYY')) >= 1981 ORDER BY "Belépési éve", "Dolgozó Neve"; Eredmény Dolgozó Neve Munkaköre Belépési éve Főnöke ALLEN SALESMAN 1981 BLAKE BLAKE MANAGER 1981 KING CLARK MANAGER 1981 KING FORD ANALYST 1981 JONES JAMES CLERK 1981 BLAKE JONES MANAGER 1981 KING KING PRESIDENT 1981 MARTIN SALESMAN 1981 BLAKE TURNER SALESMAN 1981 BLAKE WARD SALESMAN 1981 BLAKE MILLER CLERK 1982 CLARK ADAMS CLERK 1987 SCOTT SCOTT ANALYST 1987 JONES 13 sor kijelölve. 2. Megoldás (CASE szerkezettel) SELECT RPAD(d.ename,12) AS "Dolgozó Neve", d.job AS "Munkaköre", RPAD(TO_CHAR(d.hiredate,'YYYY'),12) AS "Belépési éve", CASE WHEN f.ename IS NULL THEN 'Nincs Főnöke' ELSE RPAD(f.ename,8) END AS "Főnöke" d, emp f WHERE d.mgr = f.empno(+) AND TO_NUMBER(TO_CHAR(d.hiredate,'YYYY')) >= 1981 ORDER BY "Belépési éve", "Dolgozó Neve"; 3. Megoldás (EXTRACT és NVL2 függvényekkel) SELECT RPAD(d.ename,12) AS "Dolgozó Neve", d.job AS "Munkaköre", RPAD(EXTRACT(YEAR FROM d.hiredate),12) AS "Belépési éve", NVL2(f.ename,f.ename,'Nincs Főnöke') AS "Főnöke" d, emp f WHERE d.mgr = f.empno(+) AND EXTRACT(YEAR FROM d.hiredate) >= 1981 ORDER BY "Belépési éve", "Dolgozó Neve"; Eredmény (2. és 3. megoldás esetén) Dolgozó Neve Munkaköre Belépési éve Főnöke ALLEN SALESMAN 1981 BLAKE BLAKE MANAGER 1981 KING CLARK MANAGER 1981 KING #11_SQL Feladatgyűjtemény (30)

26 FORD ANALYST 1981 JONES JAMES CLERK 1981 BLAKE JONES MANAGER 1981 KING KING PRESIDENT 1981 Nincs Főnöke MARTIN SALESMAN 1981 BLAKE TURNER SALESMAN 1981 BLAKE WARD SALESMAN 1981 BLAKE MILLER CLERK 1982 CLARK ADAMS CLERK 1987 SCOTT SCOTT ANALYST 1987 JONES 13 sor kijelölve. Megjegyzés Az NVL2 függvény használata Az NVL2 SQL függvény az első paraméterének nem-null értéke esetén visszaadja a második paraméterben szereplő kifejezés értékét, míg NULL értéke esetén a harmadik paraméterben szereplő kifejezés értékét. (Lásd a fenti példa.) 3.3. Feladat Listázza 1981-től belépési évenként a legkisebb fizetésű dolgozók nevét, munkakörét és fizetését a belépés éve szerint csökkenően rendezve. (Lásd a 2.3. feladat) 1. Megoldás COLUMN "Belépés" Format A8 SELECT TO_CHAR(hiredate,'YYYY') AS "Belépés", ename AS "Név", job AS "Munkakör", sal AS "MinFiz", (SELECT TO_CHAR(hiredate,'YYYY') AS Belépés, MIN(sal) AS MinFiz WHERE TO_NUMBER(TO_CHAR(hiredate,'YYYY')) >= 1981 GROUP BY TO_CHAR(hiredate,'YYYY')) WHERE TO_CHAR(hiredate,'YYYY') = Belépés AND sal = MinFiz ORDER BY "Belépés" DESC; CLEAR COLUMNS 2. Megoldás (TRUNC függvénnyel, Komáromi Zoltán megoldása) COLUMN "Belépés" Format A8 SELECT TO_CHAR(hiredate,'YYYY') AS "Belépés", ename AS "Név", job AS "Munkakör", sal AS "MinFiz", (SELECT TRUNC(hiredate,'YYYY') AS Belépés, MIN(sal) AS MinFiz WHERE TRUNC(hiredate,'YYYY') >= TO_DATE(' ','YYYY-MM-DD') GROUP BY TRUNC(hiredate,'YYYY')) WHERE TRUNC(hiredate,'YYYY') = Belépés AND sal = MinFiz ORDER BY "Belépés" DESC; CLEAR COLUMNS 3. Megoldás (Analitikus függvénnyel, Kubatovics Ferenc megoldása) COLUMN "Belépés" Format A8 SELECT TO_CHAR(hiredate,'YYYY') AS "Belépés", ename AS "Név", job AS "Munkakör", #11_SQL Feladatgyűjtemény (30)

27 sal AS "MinFiz" FROM (SELECT emp.*, RANK() OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY') ORDER BY sal) AS Sorszám WHERE hiredate >= TO_DATE(' ', 'YYYY-MM-DD')) WHERE Sorszám = 1 ORDER BY "Belépés" DESC; CLEAR COLUMNS Eredmény Belépés Név Munkakör MinFiz ADAMS CLERK MILLER CLERK JAMES CLERK 950 columns törölve Megjegyzés 1. A fenti megoldások akkor is jól működnének, ha valamelyik évben több legkisebb fizetésű dolgozó is volna. 2. A 3. megoldás olyan eszközt használ, mely nem része az e foglalkozáshoz tartozó tananyagnak (értelmezéséhez lásd [2]: 1.rész, 13.fejezet) Feladat Listázza 1981-től belépési évenként a legnagyobb fizetésű nem-főnök dolgozók adatait, az évek szerint növekvően rendezve. 1. Megoldás 1.1. lépés A nem-főnök dolgozók listája (fontos a NULL-érték kezelése): SELECT empno AS azon, ename AS nev WHERE empno NOT IN (SELECT mgr WHERE mgr IS NOT NULL); Másként (egyszerűbben): SELECT empno as azon, ename as nev WHERE empno NOT IN (SELECT NVL(mgr,0) ); Eredmény AZON NEV TURNER 7521 WARD 7654 MARTIN 7499 ALLEN 7934 MILLER 7369 SMITH 7876 ADAMS 7900 JAMES #11_SQL Feladatgyűjtemény (30)

28 8 sor kijelölve lépés A nem-főnök dolgozók legnagyobb évenkénti fizetése az évek szerint növekvően rendezve től: SELECT MAX(sal) AS MaxFiz, TO_CHAR(hiredate,'YYYY') AS Év WHERE empno NOT IN (SELECT mgr WHERE mgr IS NOT NULL) GROUP BY TO_CHAR(hiredate,'YYYY') HAVING TO_NUMBER(TO_CHAR(hiredate,'YYYY')) >= 1981 ORDER BY Év; Eredmény MAXFIZ ÉV Megjegyzés A HAVING utasításrészben azért volt szükség a TO_NUMBER fügvény használatára, mert számokat nem illik karakteresen összehasonlítani! 1.3. lépés Az előző lépésben megkapott adatokhoz illeszkedő dolgozók meghatározása: SET numwidth 5 SELECT *, (SELECT MAX(sal) AS MaxFiz, TO_CHAR(hiredate,'YYYY') AS Év WHERE empno NOT IN (SELECT mgr WHERE mgr IS NOT NULL) GROUP BY TO_CHAR(hiredate,'YYYY') HAVING TO_NUMBER(TO_CHAR(hiredate,'YYYY')) >= 1981) nemfőnök WHERE TO_CHAR(hiredate,'YYYY') = nemfőnök.év AND sal = nemfőnök.maxfiz ORDER BY év; SET numwidth 10 Eredmény EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO MAXFIZ ÉV ALLEN SALESMAN MILLER CLERK ADAMS CLERK Megoldás (Halmazkivonással) 2.1. lépés A nem-főnök dolgozók listája: SELECT empno MINUS SELECT mgr ; #11_SQL Feladatgyűjtemény (30)

Adatbázis használat I. 2. gyakorlat

Adatbázis használat I. 2. gyakorlat Adatbázis használat I. 2. gyakorlat Tudnivalók Oracle 10g a weben: http://www.oracle.com/technetwork/databa se/database10g/downloads/index.html FF kiírásokat legkésőbb a jövő hétre hozni! 2011. 02. 15.

Részletesebben

KENDE MÁRIA NAGY ISTVÁN: Oracle Példatár(SQL-PL/SQL) Házi feladatok a 3.gyakorlathoz: 1. fejezet: Egyszerű lekérdezések

KENDE MÁRIA NAGY ISTVÁN: Oracle Példatár(SQL-PL/SQL) Házi feladatok a 3.gyakorlathoz: 1. fejezet: Egyszerű lekérdezések KENDE MÁRIA NAGY ISTVÁN: Oracle Példatár(SQL-PL/SQL) Házi feladatok a 3.gyakorlathoz: 1. fejezet: Egyszerű lekérdezések 1.1. Feladat Listázza ki a 20-as részleg dolgozóinak nevét, belépési idejét, foglalkozását

Részletesebben

Adatbázis használat I. 2. gyakorlat

Adatbázis használat I. 2. gyakorlat Adatbázis használat I. 2. gyakorlat Tudnivalók Oracle 10g a weben: http://www.oracle.com/technetwork/database/ database10g/downloads/index.html Egyéb letöltési lehetőség: http://jerry.gorextar.hu/ab1/oracle/

Részletesebben

1.1. Feladat Listázza ki a 20-as részleg dolgozóinak nevét, belépési idejét, foglalkozását a nevek szerint csökkenően rendezve.

1.1. Feladat Listázza ki a 20-as részleg dolgozóinak nevét, belépési idejét, foglalkozását a nevek szerint csökkenően rendezve. SELECT * ; SELECT * FROM dept; 1.1. Feladat Listázza ki a 20-as részleg dolgozóinak nevét, belépési idejét, foglalkozását a nevek szerint csökkenően rendezve. SELECT ename, hiredate, job WHERE deptno=20

Részletesebben

Adatbázis használat I. 1. gyakorlat

Adatbázis használat I. 1. gyakorlat Adatbázis használat I. 1. gyakorlat Tudnivalók Nagy Gabriella nagy.gabriella@nik.uni-obuda.hu BA. 306. szoba www.orakulum.com => Adatbázis-kezelés => AKT (Adatbázis-Kezelés Technológiája) 2011. 02. 08.

Részletesebben

2007. február 25. TARTALOM

2007. február 25. TARTALOM KENDE MÁRIA - NAGY ISTVÁN ANALITIKUS SQL FELADATGYŰJTEMÉNY TARTALOM 9. Foglalkozás Részletező csoportosítások... 2 10. Foglalkozás Analitikus függvények... 5 Melléklet A ROW_NUMBER szintaktikája... 10

Részletesebben

Oracle Példatár (SQL-PL/SQL)

Oracle Példatár (SQL-PL/SQL) KENDE MÁRIA NAGY ISTVÁN Oracle Példatár (SQL-PL/SQL) (FELADATGYŰJTEMÉNY) PANEM Tartalomjegyzék KENDE MÁRIA NAGY ISTVÁN...1 Oracle Példatár (SQL-PL/SQL)...1 PANEM...1 Tartalomjegyzék...2 1. fejezet...4

Részletesebben

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT ÓBUDAI EGYETEM Neumann János Informatikai Kar Nappali Tagozat ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT NÉV: MÁK VIRÁG NEPTUN KÓD: A DOLGOZAT CÍME: Jani bácsi székadatbázisa Beadási határidő: 14. oktatási hét

Részletesebben

Adatbázis-kezelés. alapfogalmak

Adatbázis-kezelés. alapfogalmak Adatbázis-kezelés alapfogalmak Témakörök Alapfogalmak Adatmodellek Relációalgebra Normalizálás VÉGE Adatbázis-kezelő rendszer Database Management System - DBMS Integrált programcsomag, melynek funkciói:

Részletesebben

NORMALIZÁLÁS. Funkcionális függés Redundancia 1NF, 2NF, 3NF

NORMALIZÁLÁS. Funkcionális függés Redundancia 1NF, 2NF, 3NF NORMALIZÁLÁS Funkcionális függés Redundancia 1NF, 2NF, 3NF FUNKCIONÁLIS FÜGGŐSÉG Legyen adott R(A 1,, A n ) relációséma, valamint P, Q {A 1,, A n } (magyarán P és Q a séma attribútumainak részhalmazai)

Részletesebben

Adatbáziskezelés. Indexek, normalizálás NZS 1

Adatbáziskezelés. Indexek, normalizálás NZS 1 Adatbáziskezelés Indexek, normalizálás NZS 1 Fáljszervezés módjai Soros elérés: a rekordok a fájlban tetszőleges sorrendben, például a felvitel sorrendjében helyezkednek el. A rekord azonosítója vagyis

Részletesebben

ADATBÁZIS HASZNÁLAT I. 4. gyakorlat

ADATBÁZIS HASZNÁLAT I. 4. gyakorlat ADATBÁZIS HASZNÁLAT I. 4. gyakorlat Figyelem!!! A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele a minimum elégséges érdemjegynek!

Részletesebben

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis AB1 ZH mintafeladatok 1. Töltse ki, és egészítse ki! Matematikai formalizmus arra, hogy hogyan építhetünk új relációkat a régi relációkból. Az adatoknak egy jól strukturált halmaza, amelyből információ

Részletesebben

Adatmodellezés. 1. Fogalmi modell

Adatmodellezés. 1. Fogalmi modell Adatmodellezés MODELL: a bonyolult (és időben változó) valóság leegyszerűsített mása, egy adott vizsgálat céljából. A modellben többnyire a vizsgálat szempontjából releváns jellemzőket (tulajdonságokat)

Részletesebben

Adatbázisok gyakorlat

Adatbázisok gyakorlat Adatbázisok gyakorlat 4. gyakorlat Adatmodellezés II Relációs adatbázisséma készítése E-K modellből Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Közérdekű Honlap: http://antalgabor.hu

Részletesebben

6. Gyakorlat. Relációs adatbázis normalizálása

6. Gyakorlat. Relációs adatbázis normalizálása 6. Gyakorlat Relációs adatbázis normalizálása Redundancia: Az E-K diagramok felírásánál vagy az átalakításnál elképzelhető, hogy nem az optimális megoldást írjuk fel. Ekkor az adat redundáns lehet. Példa:

Részletesebben

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei 1. Mi az elsődleges következménye a gyenge logikai redundanciának? inkonzisztencia veszélye felesleges tárfoglalás feltételes függés 2. Az olyan tulajdonság az egyeden belül, amelynek bármely előfordulása

Részletesebben

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP-4.1.2-08/1/A-2009-0010

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP-4.1.2-08/1/A-2009-0010 INFORMATIKA ÁGAZATI ALKALMAZÁSAI Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP-4.1.2-08/1/A-2009-0010 2. Adatbáziskezelés eszközei Adatbáziskezelés feladata Adatmodell típusai Relációs adatmodell

Részletesebben

ADATBÁZIS-KEZELÉS. Relációs modell

ADATBÁZIS-KEZELÉS. Relációs modell ADATBÁZIS-KEZELÉS Relációs modell Relációséma neve attribútumok ORSZÁGOK Azon Ország Terület Lakosság Főváros Földrész 131 Magyarország 93036 10041000 Budapest Európa 3 Algéria 2381740 33769669 Algír Afrika

Részletesebben

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER Adatbázisok I 1 SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER Módosítás: DML: - rekord felvitel INSERT - rekord törlés

Részletesebben

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17 Adatbázisok 8. gyakorlat SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT 2015. október 26. 2015. október 26. Adatbázisok 1 / 17 SQL nyelv Structured Query Language Struktúrált lekérdez

Részletesebben

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT ADATBÁZISOK 9-10. gyakorlat: SQL 2. rész SELECT SELECT utasítás általános alakja SELECT [DISTINCT] oszloplista FROM táblanévlista [WHERE feltétel] [GROUP BY oszloplista [HAVING feltétel] ] [ORDER BY oszloplista];

Részletesebben

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14 Adatbázisok 9. gyakorlat SQL: SELECT 2015. október 26. 2015. október 26. Adatbázisok 1 / 14 SQL SELECT Lekérdezésre a SELECT utasítás szolgál, mely egy vagy több adattáblából egy eredménytáblát állít el

Részletesebben

Adatbázisok I. Jánosi-Rancz Katalin Tünde 327A 1-1

Adatbázisok I. Jánosi-Rancz Katalin Tünde 327A 1-1 Adatbázisok I. 5 Jánosi-Rancz Katalin Tünde tsuto@ms.sapientia.ro 327A 1-1 Normalizálás logikai adatbázis megtervezésére szolgáló módszer táblázat szétbontó relációs műveletek sorozata, eredményeképpen

Részletesebben

7. előadás. Karbantartási anomáliák, 1NF, 2NF, 3NF, BCNF. Adatbázisrendszerek előadás november 3.

7. előadás. Karbantartási anomáliák, 1NF, 2NF, 3NF, BCNF. Adatbázisrendszerek előadás november 3. 7. előadás,,,, Adatbázisrendszerek előadás 2008. november 3. és Debreceni Egyetem Informatikai Kar 7.1 relációs adatbázisokhoz Mit jelent a relációs adatbázis-tervezés? Az csoportosítását, hogy jó relációsémákat

Részletesebben

RELÁCIÓS ADATBÁZISSÉMÁK. Egyed-kapcsolat modellről átírás

RELÁCIÓS ADATBÁZISSÉMÁK. Egyed-kapcsolat modellről átírás RELÁCIÓS ADATBÁZISSÉMÁK Egyed-kapcsolat modellről átírás A RELÁCIÓS ADATMODELL Az adatokat egyszerűen reprezentálja: kétdimenziós adattáblákban Minden sor azonos számú oszlopból áll; egy sor egy rekord,

Részletesebben

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Adatbázis-lekérdezés. Az SQL nyelv. Makány György Adatbázis-lekérdezés Az SQL nyelv Makány György SQL (Structured Query Language=struktúrált lekérdező nyelv): relációs adatbázisok adatainak visszakeresésére, frissítésére, kezelésére szolgáló nyelv. Születési

Részletesebben

Adatbázis rendszerek Ea: A rendes állapot. Normalizálás

Adatbázis rendszerek Ea: A rendes állapot. Normalizálás Adatbázis rendszerek 1. 3. Ea: A rendes állapot Normalizálás 19/1 B ITv: MAN 2015.09.08 Normalizálás A normalizálás az adatbázis belső szerkezetének ellenőrzése, lépésenkénti átalakítása oly módon, hogy

Részletesebben

Csima Judit október 24.

Csima Judit október 24. Adatbáziskezelés Funkcionális függőségek Csima Judit BME, VIK, Számítástudományi és Információelméleti Tanszék 2018. október 24. Csima Judit Adatbáziskezelés Funkcionális függőségek 1 / 1 Relációs sémák

Részletesebben

Adatbázisok elmélete 12. előadás

Adatbázisok elmélete 12. előadás Adatbázisok elmélete 12. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu http://www.cs.bme.hu/ kiskat 2005 ADATBÁZISOK ELMÉLETE

Részletesebben

Relációs adatbázisok tervezése ---2

Relációs adatbázisok tervezése ---2 Relációs adatbázisok tervezése ---2 Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 3.2.8. Funkcionális függ-ek vetítése 3.3.3. Boyce-Codd normálforma 3.3.4.

Részletesebben

Adatbázis, adatbázis-kezelő

Adatbázis, adatbázis-kezelő Adatbázisok I. rész Adatbázis, adatbázis-kezelő Adatbázis: Nagy adathalmaz Közvetlenül elérhető háttértárolón (pl. merevlemez) Jól szervezett Osztott Adatbázis-kezelő szoftver hozzáadás, lekérdezés, módosítás,

Részletesebben

Adatbázisok gyakorlat

Adatbázisok gyakorlat Adatbázisok gyakorlat 5. gyakorlat Adatmodellezés III/IV Funkcionális függés, redundancia. Normalizálás Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Funkcionális függés

Részletesebben

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2 Tartalomjegyzék Tartalomjegyzék 1 Az SQL nyelv 1 Az SQL DDL alapjai 2 Adatbázis parancsok 2 Táblaparancsok 2 A táblázat létrehozása 2 A táblázat módosítása 3 A tábla törlése 3 Indextábla létrehozása 3

Részletesebben

SQL DDL-2 (aktív elemek) triggerek

SQL DDL-2 (aktív elemek) triggerek SQL DDL-2 (aktív elemek) triggerek Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 7.fej.: Megszorítások és triggerek 7.4. Önálló megszorítások 7.5. Triggerek

Részletesebben

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal. Adatbázis létrehozása Adatleíró műveletek CREATE DATABASE "tan1" WITH ENCODING= LATIN2 ; vagy parancssorból a terminál alatt $ createdb tan1 E=latin2 Kapcsolódás az adatbázishoz $ psql tan1 Adattábla létrehozása

Részletesebben

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák SQL Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák A SELECT UTASÍTÁS ÁLTALÁNOS ALAKJA (ISM.) SELECT [DISTINCT] megjelenítendő oszlopok FROM táblá(k direkt szorzata) [WHERE feltétel]

Részletesebben

SELECT DISTINCT deptno FROM emp; (distinct) SELECT STATEMENT HASH UNIQUE TABLE ACCESS FULL EMP

SELECT DISTINCT deptno FROM emp; (distinct) SELECT STATEMENT HASH UNIQUE TABLE ACCESS FULL EMP SELECT * FROM emp; SELECT ename FROM emp; (projekció) SELECT ename FROM emp WHERE ename='jones'; (szelekció) ------------------------------------------ SELECT DISTINCT deptno FROM emp; (distinct) --------------------------------

Részletesebben

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére SQL PÉLDATÁR készült a PTE TTK Iskolai informatika III. kurzus teljesítésére PTE TTK Czimmermann Gergely MA matematika informatika tanár szakos hallgató 2017 Tartalomjegyzék 1. Adatleíró műveletek... 3

Részletesebben

Többtáblás lekérdezések megjelenítése

Többtáblás lekérdezések megjelenítése Többtáblás lekérdezések megjelenítése Célkitűzés Egynél több táblának egyenlőségen vagy nem-egyenlőségen alapuló összekapcsolást végző SELECT utasítások írása. Egy táblának önmagával történő összekapcsolása.

Részletesebben

ADATBÁZISOK I. Az esetleges hibákat kérlek a csongor@csongorbokay.com címen jelezd! Utolsó módosítás: 2013. március 20.

ADATBÁZISOK I. Az esetleges hibákat kérlek a csongor@csongorbokay.com címen jelezd! Utolsó módosítás: 2013. március 20. ADATBÁZISOK I. Szerkesztette: Bókay Csongor Az esetleges hibákat kérlek a csongor@csongorbokay.com címen jelezd! Utolsó módosítás: 2013. március 20. Ez a Mű a Creative Commons Nevezd meg! - Ne add el!

Részletesebben

Bevezetés: az SQL-be

Bevezetés: az SQL-be Bevezetés: az SQL-be Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 2.3. Relációsémák definiálása SQL-ben, adattípusok, kulcsok megadása 02B_BevSQLsemak

Részletesebben

Adatbázis rendszerek Ea: A rendes állapot. Normalizálás

Adatbázis rendszerek Ea: A rendes állapot. Normalizálás Adatbázis rendszerek 1. 3. Ea: A rendes állapot Normalizálás 1/31 B ITv: MAN 2017.10.08 Normalizálás A normalizálás az adatbázis belső szerkezetének ellenőrzése, lépésenkénti átalakítása oly módon, hogy

Részletesebben

Adatbázis Rendszerek II. 3. SQL alapok

Adatbázis Rendszerek II. 3. SQL alapok Adatbázis Rendszerek II. 3. SQL alapok 22/1 B IT v: 2016.10.20 MAN Oracle adattípusok Szöveges adattípusok CHAR (1-2000) VARCHAR (1-4000) VARCHAR2 (1-4000, nemzeti karakterekhez) CLOB (max. 8 TB) NCLOB

Részletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I. KOVÁCS BÉLA, MATEmATIkA I. 4 IV. FÜGGVÉNYEk 1. LEkÉPEZÉSEk, függvények Definíció Legyen és két halmaz. Egy függvény -ből -ba egy olyan szabály, amely minden elemhez pontosan egy elemet rendel hozzá. Az

Részletesebben

2006. május 1. TARTALOM

2006. május 1. TARTALOM KENDE MÁRIA - NAGY ISTVÁN PL/SQL FELADATGYŰJTEMÉNY TARTALOM 9. Foglalkozás Hivatkozási és összetett adattípusok, kurzor, ROWID... 2 10. Foglalkozás Összefoglaló feladatok... 11 Melléklet Dinamikus SQL...

Részletesebben

Több felhasználó párhuzamosan olvashatja, bővítheti, módosíthatja és törölheti az adatokat Az adatok konzisztenciájának és biztonságának biztosítása

Több felhasználó párhuzamosan olvashatja, bővítheti, módosíthatja és törölheti az adatokat Az adatok konzisztenciájának és biztonságának biztosítása 4. gyakorlat Több felhasználó párhuzamosan olvashatja, bővítheti, módosíthatja és törölheti az adatokat Az adatok konzisztenciájának és biztonságának biztosítása Eszközök az adatok biztonsági mentésére,

Részletesebben

7. Előadás tartalma A relációs adatmodell

7. Előadás tartalma A relációs adatmodell 7. Előadás tartalma A relációs adatmodell 7.1 A relációs adatmodell 7.2 Relációs adatbázisséma meghatározása 7.3 E/K diagram átírása relációs modellé 7.4 Osztályhierarchia reprezentálása 1 7.1 A relációs

Részletesebben

ADATBÁZISOK, 2018 ősz

ADATBÁZISOK, 2018 ősz ADATBÁZISOK, 2018 ősz Előadók: Nappali tagozaton: Dr. Balázs Péter, Dr. Németh Gábor Gyakorlatvezetők koordinátora: Dr. Kardos Péter Óraterv Előadás A szögletes zárójeles témák elhagyhatók. 1. Bevezetés,

Részletesebben

Adatbázis használat I. 5. gyakorlat

Adatbázis használat I. 5. gyakorlat Adatbázis használat I. 5. gyakorlat Tudnivalók Jövő hétre a normalizálást hozni vagy e- mailben beküldeni! 7. héten (= két hét múlva!) nagyzh + FF checkpoint: adattáblák feltöltése, megszorítások 2010.

Részletesebben

Mezők viszonya a relációs adatbázis tábláiban

Mezők viszonya a relációs adatbázis tábláiban Mezők viszonya a relációs adatbázis tábláiban A normalizálás megértéséhez szükségünk van néhány további fogalom ismeretére, ezért most kisebb kitérőt teszünk. Megismerjük - a funkcionális függés, - a teljes

Részletesebben

Adatbázis rendszerek. dr. Siki Zoltán

Adatbázis rendszerek. dr. Siki Zoltán Adatbázis rendszerek I. dr. Siki Zoltán Adatbázis fogalma adatok valamely célszerűen rendezett, szisztéma szerinti tárolása Az informatika elterjedése előtt is számos adatbázis létezett pl. Vállalati személyzeti

Részletesebben

Adatmodellezés, alapfogalmak. Vassányi István

Adatmodellezés, alapfogalmak. Vassányi István Adatmodellezés, alapfogalmak Vassányi István Alapok A helyes modell az információs rendszer későbbi használhatóságánakazalapja, olyanmint a jómunkaruha: véd, de nem akadályozza a munkát Objektum-orientált

Részletesebben

Adatbázisrendszerek. Karbantartási anomáliák, 1NF, 2NF, 3NF, BCNF, 4NF, 5NF március 13.

Adatbázisrendszerek. Karbantartási anomáliák, 1NF, 2NF, 3NF, BCNF, 4NF, 5NF március 13. Adatbázisrendszerek,,,,,, 4NF, 5NF 2018. március 13. Nem hivatalos tervezési relációs adatbázisokhoz 2, Mit jelent a relációs adatbázis-tervezés? Az csoportosítását, hogy jó relációsémákat alkossanak.

Részletesebben

Programozás. Adatbázis-kezelés (alapok) Fodor Attila

Programozás. Adatbázis-kezelés (alapok) Fodor Attila Programozás Adatbázis-kezelés (alapok) Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. április 22. Bevezetés Adatbáziskezelés

Részletesebben

Relációs adatbázisok tervezése ---1

Relációs adatbázisok tervezése ---1 Relációs adatbázisok tervezése ---1 Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 3.3.1. Bevezetés: anomáliák 3.3.2. Relációk felbontása 3.1. Funkcionális

Részletesebben

7. előadás. Karbantartási anomáliák, 1NF, 2NF, 3NF, BCNF, 4NF, 5NF. Adatbázisrendszerek előadás november 7.

7. előadás. Karbantartási anomáliák, 1NF, 2NF, 3NF, BCNF, 4NF, 5NF. Adatbázisrendszerek előadás november 7. 7. előadás,,,,, 4NF, 5NF Adatbázisrendszerek előadás 2016. november 7., és Debreceni Egyetem Informatikai Kar Az előadások Elmasry & Navathe: Database Systems alapján készültek. Nem hivatalos tervezési

Részletesebben

Adatbázis-kezelés alapjai 1. Ea: Infó Mátrix. Lehet, nem lehet

Adatbázis-kezelés alapjai 1. Ea: Infó Mátrix. Lehet, nem lehet Adatbázis-kezelés alapjai 1. Ea: Infó Mátrix Lehet, nem lehet 35/1 B ITv: MAN 2018.09.08 Info Mátrix 35/2 Rólam 35/3 Szűcs Miklós Alias: BitMan Mesteroktató Informatika épület, 108-as szoba szucs@iit.uni-miskolc.hu

Részletesebben

A SELECT működése. Ttanar tábla: Tdiak tábla:

A SELECT működése. Ttanar tábla: Tdiak tábla: A SELECT működése A SELECT utasítás általános formája: SELECT [ALL/DISTINCT] {*/,, } FROM [],, [] [WHERE

Részletesebben

T Adatbázisok-adatmodellezés

T Adatbázisok-adatmodellezés T Adatbázisok-adatmodellezés Adatbázis-kezelő feladatai: Az adatbázis hosszú ideig meglévő információk gyűjteménye, ezt az adatbázis-kezelő kezel. Lehetővé teszi az adatbázisok létrehozását( az adatdefiníciós

Részletesebben

ADATBÁZISOK, 2017 ősz

ADATBÁZISOK, 2017 ősz ADATBÁZISOK, 2017 ősz Előadók: Nappali tagozaton: Dr. Balázs Péter, Dr. Németh Gábor Gyakorlatvezetők koordinátora: Dr. Kardos Péter Óraterv Előadás A szögletes zárójeles témák elhagyhatók. 1. Bevezetés,

Részletesebben

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 2.4. Relációs algebra (áttekintés) 5.1.

Részletesebben

ADATBÁZISOK. 4. gyakorlat: Redundanciák, funkcionális függőségek

ADATBÁZISOK. 4. gyakorlat: Redundanciák, funkcionális függőségek ADATBÁZISOK 4. gyakorlat: Redundanciák, funkcionális függőségek Példa: szállodai adattábla vendég kód vendég név 200005 Pécsi Ádám 333230 Tóth Júlia 200005 Pécsi Ádám 123777 Szép László lakcím Budapest,

Részletesebben

ADATBÁZIS-KEZELÉS Demetrovics Katalin

ADATBÁZIS-KEZELÉS Demetrovics Katalin ADATBÁZIS-KEZELÉS Demetrovics Katalin 1. Alapfogalmak...1 1.1. Adat... 1 1.2. Információ... 1 1.3. Egyed, Tulajdonság, Kapcsolat... 1 1.4. Adatmodellek... 2 1.5. Adatbázis (DATABASE, DB)... 3 2. A relációs

Részletesebben

A relációs adatmodell

A relációs adatmodell A relációs adatmodell E. Codd vezette be: 1970 A Relational Model of Data for Large Shared Data Banks. Communications of ACM, 13(6). 377-387. 1982 Relational Databases: A Practical Foundation for Productivity.

Részletesebben

2012. április 27. TARTALOM

2012. április 27. TARTALOM KENDE MÁRIA - NAGY ISTVÁN PL/SQL FELADATGYŰJTEMÉNY TARTALOM 9. Foglalkozás Hivatkozási és összetett adattípusok, kurzor, ROWID... 2 10. Foglalkozás Összefoglaló feladatok... 15 Melléklet Dinamikus SQL...

Részletesebben

Lekérdezések az SQL SELECT utasítással

Lekérdezések az SQL SELECT utasítással Lekérdezések az SQL SELECT utasítással Az SQL SELECT utasítás lehetőségei Vetítés Kiválasztás 1. tábla 1. tábla Összekapcsolás 1. tábla 2. tábla Elemi SELECT utasítások SELECT * {[DISTINCT] column expression

Részletesebben

ADATBÁZISKEZELÉS ADATBÁZIS

ADATBÁZISKEZELÉS ADATBÁZIS ADATBÁZISKEZELÉS 1 ADATBÁZIS Az adatbázis adott (meghatározott) témakörre vagy célra vonatkozó adatok gyűjteménye. - Pl. A megrendelések nyomon követése kereskedelemben. Könyvek nyilvántartása egy könyvtárban.

Részletesebben

LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK

LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK Lénárt Balázs tanársegéd TANTERV Hét Dátum Előadó Előadások Időpont: szerda 8:30-10:00, helye: LFSZÁMG Dátum Gyakvezető 1. 9. 11. Tokodi Adatbázis

Részletesebben

SQL DDL-1: táblák és megszorítások

SQL DDL-1: táblák és megszorítások SQL DDL-1: táblák és megszorítások Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 2.3. Relációsémák definiálása 7.1. Kulcsok és idegen kulcsok 7.2. Értékekre

Részletesebben

ALAPOK. 0 és 255 közé eső számértékek tárolására. Számértékek, például távolságok, pontszámok, darabszámok.

ALAPOK. 0 és 255 közé eső számértékek tárolására. Számértékek, például távolságok, pontszámok, darabszámok. ADATBÁZIS-KEZELÉS ALAPOK Főbb Adattípusok: Igen/Nem Bájt Ez az adattípus logikai adatok tárolására alkalmas. A logikai adatok mindössze két értéket vehetnek fel. (Igen/Nem, Igaz/Hamis, Férfi/Nő, Fej/Írás

Részletesebben

Több tábla összekapcsolásán alapuló lekérdezések. Copyright 2004, Oracle. All rights reserved.

Több tábla összekapcsolásán alapuló lekérdezések. Copyright 2004, Oracle. All rights reserved. Több tábla összekapcsolásán alapuló lekérdezések Copyright 2004, Oracle. All rights reserved. Célkitűzés Egynél több táblának egyenlőségen vagy nem-egyenlőségen alapuló összekapcsolást végző SELECT utasítások

Részletesebben

ADATBÁZIS-KEZELÉS. 1. Alapfogalmak

ADATBÁZIS-KEZELÉS. 1. Alapfogalmak ADATBÁZIS-KEZELÉS 1. Alapfogalmak... 1 1.1. Adat... 1 1.2. Információ... 1 1.3. Egyed, Tulajdonság, Kapcsolat... 2 1.4. Adatmodellek... 2 1.5. Adatbázis (DATABASE, DB)... 3 2. A relációs adatmodell...

Részletesebben

Adatbázis rendszerek. 4. előadás Redundancia, normalizálás

Adatbázis rendszerek. 4. előadás Redundancia, normalizálás Adatbázis rendszerek 4. előadás Redundancia, normalizálás Molnár Bence Szerkesztette: Koppányi Zoltán HF tapasztalatok HF tapasztalatok [ABR] az email címbe! Ne emailbe küldjük a házikat, töltsétek fel

Részletesebben

ABR ( Adatbázisrendszerek) 2. Előadás : Műveletek a relációs modellben

ABR ( Adatbázisrendszerek) 2. Előadás : Műveletek a relációs modellben ABR ( Adatbázisrendszerek) 2. Előadás : Műveletek a relációs modellben 2.2 Műveletek a relációs modellben 2.2.1 Relációra vonatkozó megszorítások 2.2.2 Multihalmazon értelmezett műveletek 2.2.3 A relációs

Részletesebben

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok SQL jogosultság-kezelés Privilégiumok Grant és Revoke Grant Diagrammok 1 Jogosultság-kezelés Egy fájlrendszer általában jogosultságokat rendel az általa kezelt objektumokhoz. Tipikusan olvasható, írható,

Részletesebben

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla Adatbázisok-1 előadás Előadó: dr. Hajas Csilla Áttekintés az I.zh-ig Áttekintés az 1ZH-ig // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1 Hol tartunk? Mit tanultunk

Részletesebben

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány) Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány) 23/1 B IT v: 2018.10.31 MAN DML adatokon műveletet végző utasítások DML Data Manipulation Language Rekordok (sorok) beszúrása (felvitele) Mezők

Részletesebben

Adatbázisok. 1. gyakorlat. Adatmodellezés október október 1. Adatbázisok 1 / 42

Adatbázisok. 1. gyakorlat. Adatmodellezés október október 1. Adatbázisok 1 / 42 Adatbázisok 1. gyakorlat Adatmodellezés 2016. október 1. 2016. október 1. Adatbázisok 1 / 42 Elérhet ség Web: http://www.inf.u szeged.hu/~mkatona E-mail: mkatona@inf.u-szeged.hu Fogadóóra: Kedd 15 16 Árpád

Részletesebben

Informatikus informatikus 54 481 04 0010 54 07 Térinformatikus Informatikus É 1/6

Informatikus informatikus 54 481 04 0010 54 07 Térinformatikus Informatikus É 1/6 A 10/2007 (II. 27.) SzMM rendelettel módosított 1/2006 (II. 17.) OM rendelet Országos Képzési Jegyzékről és az Országos Képzési Jegyzékbe történő felvétel és törlés eljárási rendjéről alapján. Szakképesítés,

Részletesebben

Lekérdezések az SQL-ben 1.rész

Lekérdezések az SQL-ben 1.rész Lekérdezések az SQL-ben 1.rész Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 6.1. Egyszerű (egy-relációs) lekérdezések az SQL-ben - Select-From-Where utasítás

Részletesebben

Lekérdezések az SQL-ben 1.rész

Lekérdezések az SQL-ben 1.rész Lekérdezések az SQL-ben 1.rész Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 6.1. Egyszerű (egy-relációs) lekérdezések az SQL-ben - Select-From-Where utasítás

Részletesebben

Adatbázismodellek. 1. ábra Hierarchikus modell

Adatbázismodellek. 1. ábra Hierarchikus modell Eddig az adatbázisokkal általános szempontból foglalkoztunk: mire valók, milyen elemekből épülnek fel. Ennek során tisztáztuk, hogy létezik az adatbázis fogalmi modellje (adatbázisterv), amely az egyedek,

Részletesebben

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK Informatikai alapismeretek középszint 0631 ÉRETTSÉGI VIZSGA 2006. október 24. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ OKTATÁSI ÉS KULTURÁLIS MINISZTÉRIUM

Részletesebben

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1 SQL 1.rész 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1 SQL története, szabványok Szabvány adatbázis-kezelő nyelv: SQL SQL (angol kiejtésben

Részletesebben

Gazdasági informatika II (SZIE GTK GVAM 1. évfolyam) 2009/2010. tanév 2. félév

Gazdasági informatika II (SZIE GTK GVAM 1. évfolyam) 2009/2010. tanév 2. félév Gazdasági informatika II (SZIE GTK GVAM 1. évfolyam) 2009/2010. tanév 2. félév Egyed: minden olyan dolog, amit minden más dologtól jól meg tudunk különböztetni és amiről adatokat akarunk tárolni. (pl.

Részletesebben

8. előadás. normálformák. Többértékű függés, kapcsolásfüggés, 4NF, 5NF. Adatbázisrendszerek előadás november 10.

8. előadás. normálformák. Többértékű függés, kapcsolásfüggés, 4NF, 5NF. Adatbázisrendszerek előadás november 10. 8. előadás 4NF, 5NF Adatbázisrendszerek előadás 2008. november 10. ek és Debreceni Egyetem Informatikai Kar 8.1 (multivalued dependency, MVD) Informálisan, valahányszor két független 1 : N számosságú A

Részletesebben

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) közönséges felhasználók SQL*Plus Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP dolgozó), DEPT osztály) "közönséges" felhasználók Adatszótár: metaadatokat tartalmazó, csak olvasható táblák táblanév-prefixek:

Részletesebben

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni: 1 Adatbázis kezelés 3. gyakorlat A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni: Tábla kapcsolatok létrehozása,

Részletesebben

Adatbázis rendszerek SQL nyomkövetés

Adatbázis rendszerek SQL nyomkövetés Adatbázis rendszerek 1. 12. SQL nyomkövetés 1/32 B ITv: MAN 2017.10.26 Nyomkövetési feladat 2/32 Gyakorló feladatok Termék-Vásárlás-Vásárló Oktató-Tantárgy-Hallgató 3/32 Gyakorló feladat: Termék-Vásárlás-Vásárló

Részletesebben

Adatmodellek. 2. rész

Adatmodellek. 2. rész Adatmodellek 2. rész Makány György Alapfogalmak JEL ADAT INFORMÁCIÓ ADATHALMAZ ADATÁLLOMÁNY ADATBÁZIS 2 Alapfogalmak JEL ADATHALMAZ észlelhető, felfogható fizikai érték ADAT a valós világ egy jelenségéből

Részletesebben

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK) 5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK) http://sila.hajas.elte.hu/ SQL gyakorlatban: SELECT záradékai és a kiterjesztett relációs algebra Tankönyv: 5.1.- 5.2. Kiterjesztett relációs algebra

Részletesebben

A könyv tartalomjegyzéke

A könyv tartalomjegyzéke A könyv tartalomjegyzéke Elıszó Bevezetés Adatbázis-kezelı rendszerek Adatmodellezés Alapfogalmak Egyedhalmaz, egyed Kapcsolat, kapcsolat-elıfordulás, kapcsolat típusa Tulajdonság, tulajdonságérték, értékhalmaz

Részletesebben

Adatbázisok elmélete 11. előadás

Adatbázisok elmélete 11. előadás Adatbázisok elmélete 11. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu http://www.cs.bme.hu/ kiskat 2004 ADATBÁZISOK ELMÉLETE

Részletesebben

Adatbázisok* tulajdonságai

Adatbázisok* tulajdonságai Gazdasági folyamatok térbeli elemzése 4. előadás 2010. 10. 05. Adatbázisok* tulajdonságai Rendezett, logikailag összefüggő és meghatározott szempont szerint tárolt adatok és/vagy információk halmaza Az

Részletesebben

Csima Judit november 15.

Csima Judit november 15. Adatbáziskezelés Normalizálás Csima Judit BME, VIK, Számítástudományi és Információelméleti Tanszék 2017. november 15. Csima Judit Adatbáziskezelés Normalizálás 1 / 26 Normalizálás Tétel Tetszõleges (R,

Részletesebben

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások SQL haladó Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások 1 Külső összekapcsolás Összekapcsoljuk R és S relációkat: R C S. R azon sorait,

Részletesebben

Adatbázisok 1. Kósa Balázs gyakorlata alapján Készítette: Nagy Krisztián. 1. gyakorlat

Adatbázisok 1. Kósa Balázs gyakorlata alapján Készítette: Nagy Krisztián. 1. gyakorlat Adatbázisok 1. Kósa Balázs gyakorlata alapján Készítette: Nagy Krisztián 1. gyakorlat Relációs adatbázis Alap fogalmak (Forrás: http://digitus.itk.ppke.hu/~fodroczi/dbs/gyak2_1/ ) A relációs algebra egy

Részletesebben

ABR ( Adatbázisrendszerek) 1. Előadás : Műveletek a relációs medellben

ABR ( Adatbázisrendszerek) 1. Előadás : Műveletek a relációs medellben Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) ABR ( Adatbázisrendszerek) 1. Előadás : Műveletek a relációs medellben 1.0 Bevezetés. A relációs adatmodell. 1.1 Relációs algebra 1.2 Műveletek a relációs

Részletesebben

Példa 2012.05.11. Többértékű függőségek, 4NF, 5NF

Példa 2012.05.11. Többértékű függőségek, 4NF, 5NF Többértékű függőségek, 4NF, 5NF Szendrői Etelka datbázisok I szendroi@pmmk.pte.hu harmadik normálformáig mindenképpen érdemes normalizálni a relációkat. Legtöbbször elegendő is az első három normálformának

Részletesebben