BEVEZETÉS Az objektum fogalma

Hasonló dokumentumok
Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte

BEVEZETÉS Az objektum fogalma

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Adatbázisok* tulajdonságai

Adatbázis-kezelés. Harmadik előadás

Adatbázis használat I. 5. gyakorlat

Adatbázis-kezelés, információs-rendszerek

B I T M A N B I v: T M A N

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

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

LEKÉRDEZÉSEK SQL-BEN. A relációs algebra A SELECT utasítás Összesítés és csoportosítás Speciális feltételek

A könyv tartalomjegyzéke

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

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

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

Adatbázisok I A relációs algebra

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

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

Adatbázisok I. Az SQL nyelv

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Adatbázis rendszerek SQL nyomkövetés

ADATBÁZISKEZELÉS ADATBÁZIS

SQL parancsok feldolgozása

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

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

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

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

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

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

Adatbázis kezelés Delphiben. SQL lekérdezések

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

Gazdasági informatika vizsga kérdések

Adatbázis Rendszerek II. 8. Gyakorló környezet

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

Óravázlat. az ECDL oktatócsomaghoz. 5. modul. Adatbáziskezelés. Krea Kft Budapest, Szőlő u 21. Tel/fax: / krea@krea.

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

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

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.

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

Adatbázisok I Adatmodellek komponensei. Adatbázis modellek típusai. Adatbázisrendszer-specifikus tervezés

Adatbázis-kezelés alapok Adatbázisok című tárgyhoz, ismétlés kapcsán

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

Készítette: Szabóné Nacsa Rozália

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

Adatmodellek komponensei

Bevezetés: az SQL-be

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

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

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

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

SQL gyakorló feladatok. 6. Adatbázis gyakorlat április 5.

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

Java és web programozás

Elemi alkalmazások fejlesztése IV.

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

Vektoros grafikát tároló adatbázisok. Katona Endre Térképi adatbázisok diasorozata alapján

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

Adatbázisok biztonsága

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

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

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

Az SQL nyelv. SQL (Structured Query Language = Strukturált Lekérdező Nyelv).

Debreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

Adatbázisok tavaszi félév Vizsgatételsor

1. Az adatbázis fogalma, fontosabb összetevÿi, felhasználási módjai

Gazdasági folyamatok térbeli elemzése. 5. elıadás

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Relációs algebrai lekérdezések átírása SQL SELECT-re (példák)

Adatok szűrése, rendezése

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

LOGISZTIKAI ADATBÁZIS RENDSZEREK BEVEZETÉS

Megszorítások. AB1_06A_Megszorítások - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

B I T M A N B I v: T M A N

Java és web programozás

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Adatbázisrendszerek Radványi, Tibor

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

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Normalizálás. Elméleti összefoglaló

3. Előadás. Az SQL adatbázisnyelv (Tartalom) Az SQL története. Az SQL felépítése. Adattípúsok. SQL utasítások

Keskeny Zoltán 2007/08 SQL. Structured Query Language. (gyakorlat az SQL2 szabvány alapján) Keskeny Zoltán tanév

Relációs adatmodellezés

A relációs algebra egy speciális algebra, amely néhány egyszerű, de hathatós. operandusok. Egy reláció megadható a nevével vagy közvetlenül, sorainak

INFORMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

Adatbázis, adatbázis-kezelő

Vizuális programozás gyakorlat

1.óra. Bevezetés. Adatmodellezés, elméleti háttér

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

IBM WebSphere Adapters 7. változat 5. alváltozat. IBM WebSphere Adapter for Oracle E-Business Suite felhasználói kézikönyv 7. változat 5.

ADATBÁZIS ADMINISZTRÁTOR SZAKKÉPESÍTÉS SZAKMAI ÉS VIZSGAKÖVETELMÉNYEI

SELECT. SELECT(projekció) FROM(forrás) WHERE(szűrés) GROUPBY(csoportosítás) HAVING(csoportok szűrése) ORDERBY(rendezés)

II. év. Adatbázisok és számítógépek programozása

Átírás:

BEVEZETÉS Az objektum fogalma Program (1) Adat (2) Objektum Kiadványszerkesztés Word Táblázatkezelés Excel CAD AutoCad Adatbáziskezelés Access 1

Program (1) Adat (2) Objektum Adatmodell (2) A valós világ elemeinek leképezése adatokra. Az adatok között kapcsolat lehet A világ ugyanazon elemét írják le (frsz. típus) Több különböző azonban egymással össze-függésben lévő dolog leírása Tul. (frsz. típus) Adatbázis-kezelő (1) rendszer Programrendszer az adatok+kapcsolatok ellentmondásmentes tárolására, megjelenítésére, feldolgozására Többféle leképezési mód Interaktív használat Programozhatóság az elérés biztosítása, az elérés szabályozása, a hibátlanság, ellentmondás-mentesség garanciája. BEVEZETÉS 2

1. Az adatbáziskezelő rendszerek (DBMS) funkciói 1.1 Az adatbázisok szerkezete Modellezési alapelemek adatleírásra - adattárolásra Többszintű kialakítás Külső szint (alséma) Koncepcionális szint (séma) Fizikai szint (belső szint) Vetítések, összekapcsolások (felhasználók) L1(A,B,C) L2(A,B,E,F) L3(E,F,J,K) Adatok között kapcsolatok (adatbázis felügyelő) H1(A,B,C,D) H2(E,F,G,A) H3(H,I,J,K,E) fizikai adatok (operációs rendszer) Az adatokhoz való hozzáférés csak a DBMS-sel 1. AZ ADATBÁZISKEZELŐ RENDSZEREK (DBMS) FUNKCIÓI 3

1.2 Speciális DBMS funkciók Indexelés Tranzakció kezelés Naplózás ( fejben elvégzett műveletek, jóváhagyás) Elkülönítés (több felhasználó) Felújítás (zárolással) Hozzáférési jogok kezelése Adatleíró nyelv (Data Definition Language) - elemdefiníció Adatkezelő nyelv (Data Manipulation Language) - adatkezelés Adatfelügyelő nyelv (Data Control Language) hozzáférés-kezelés Interaktív kezelés Adatszótár (katalógus) Automatikusan karbantartott elemdefiníciók, statisztikák, jogosultságok stb. Lekérdezhető. Központosított adattárolás (logikailag) Lehet osztott, kliens szerver. Fizikai (tárolásfüggetlen) és logikai (nem módosítás-érzékeny) adatfüggetlenség Segédprogramok feldolgozáshoz (jelentések, képernyők) 1. AZ ADATBÁZISKEZELŐ RENDSZEREK (DBMS) FUNKCIÓI 4

MDAC - Microsoft Data Access Components 1. AZ ADATBÁZISKEZELŐ RENDSZEREK (DBMS) FUNKCIÓI 5

2. Az adatmodellezés alapjai 2.1 Az adatmodell fogalma (bővített pontosított definíció) Szűkebb értelemben a leírásra szolgáló adatok szerkezete (a modellezési alapelemek) Általánosabban tartalmazza az alapelemeket, az alapelemekkel végzett műveleteket és az integritási kényszereket Adatszerkezet az adatok tárolására szolgáló elemi adatok rendszere Művelet a megjelenítési igényeknek megfelelően (pl. indexek) Integritási kényszer az ellentmondásmentességet biztosító feltételek, megszorítások (pl. egyértelműség biztosítása - kulcs) 6

2.2 Egyed, egyedhalmaz Egyed - a világ egy megkülönböztetett fizikai objektuma (Egyedtípus, Entitás, Rekordtípus) Egyedhalmaz - azonos, megkülönböztetőjegyekkel jellemzett objektumok Emberek gyűjteménye Különbözőség biztosítása természetes módon (pl. személyi szám), mesterségesen (a kezelő rendszer biztosítja azonosító) Kis József 1 3312 Nagy Irén 2 3312 2. AZ ADATMODELLEZÉS ALAPJAI 7

2.3 Kapcsolat, kapcsolat-előfordulás, kapcsolattíp. Kapcsolat - Két egyedhalmaz, illetve az egyedhalmazok között fennálló viszony - (a kapcsolatelőfordulások halmaza) Kapcsolat-előfordulás - Az egyedhalmazok elemei között fennálló viszony Kapcsolattípus - 1:1-1:N - N:M Emberek autók Kis József ABC-123 1:N 2. AZ ADATMODELLEZÉS ALAPJAI 8

2.4 Tulajdonság, tulajdonságérték, értékhalmaz az egyedhalmazt definiálják Tulajdonság - Az egyedhalmaz egyedeinek (attribútum) azon jellemzői, amelyek vagy - az egyedhalmazok közti kapcsolatok jellemzői. Tulajdonságérték - az egyedekhez, vagy a kapcsolat-előfordulásokhoz tartozó konkrét adat Értékhalmaz - A tulajdonságok lehetséges (értéktartomány) (domain) értékei 2. AZ ADATMODELLEZÉS ALAPJAI 9

Példa Kapcsolatok Tulajdonságok Emberek (Név, Szem.szám,Szakma) Tulajdonságértékek Kapcsolat előfordulás Kis József 1 33 Mérnök, közg. Nagy Irén 2 33 Tanuló Kapcsolat előfordulások Autók(Rendszám,Típus) Kovács István 1 33 - ABC- 123 VW tulajdonos autó 1:N tulajdonos lakás N:M házastárs1 házastárs2 1:1 Egyedek Kapcsolat előfordulások Lakások (Cím, Hrsz) DEF- 456 GHJ- 789 Alfa Opel 1111 Bp. Báb Hrsz 12 1211 Bp. Vas u Hrsz 23 1031 Bp. Gát u Hrsz 45 Egyedhalmazok 2. AZ ADATMODELLEZÉS ALAPJAI 10

3. Az egyed-kapcsolat modell (E-K) (Entity-Relationship) (SSADM Structured System Analysis and Design Method alapok) Egyedhalmaz 3.1 Az EK modell tulajdonságai Egyértékű Többértékű Egyszerű Összetett Kulcstulajdonság Alaptulajdonság név minden egyednél egyetlen érték több értéket is felvehet (pl. egy anya gyerekei) nem bontható további tulajdonságokra további tulajdonságokra bontható (pl. lakcím = irszám + város + ) Az elemeket egyértelműen azonosító egyértékű tul. Létezik más tulajdonságoktól függetlenül Származtatott tul. 4. AZ EGYED-KAPCSOLAT MODELL Egyéb tulajdonságokból előállított életkor=fv(szül.dat) 11

3.2 Az EK modell kapcsolatai A kapcsolatokat 1 N Név A kapcsolatoknak tulajdonságaik tul1 tul2 A kapcsolatban résztvevők száma alapján beszélünk a kapcsolat fokáról Unáris, vagy rekurzív Bináris, vagy két résztvevős Trináris: háromrésztvevős. jellel jelöljük. is vannak és típusuk. Sz.számF Sz.számN 1 1 házasság Hrsz Cím Ir.sz Város Lakások Sz.szám N Lak.Tul M 1 Név Emberek Sz.szám Szakm Hrsz Autótul. N Autók Típus Rendszám 4. AZ EGYED-KAPCSOLAT MODELL Sz.szám Rendszám 12

Az ISA kapcsolat is a kapcsolat az egyedek közötti 1:1 megfeleltetés Pl. egy iskola tanárai és alkalmazottai a halmazok között alá- és fölérendelés az egyedhalmazok hierarchiája Az alárendelt halmaz részhalmaz, a tulajdonságok is öröklődnek. Specializáció Az egyedhalmaz részhalmazokra való bontása Explicit megadással (pl. Bp.-i és vidéki lakások megadáskor) Vagy szabállyal (pl. irszám), azaz származtatással Általánosítás Az egyedhalmazok uniója Egzisztenciálisan függő (gyenge) egyedhalmazok Ha létezése más egyedhalmaztól függ (pl. vevők, számlák) 3.3 Integritási kényszer Egyértékű kulcstulajdonság az egyedhalmazokban A valós kapcsolatok tükrözése 4. AZ EGYED-KAPCSOLAT MODELL Tanárok Alkalmazottak Egyéb alk. 13

3.4 Példák E-K modellre 3.4.1 Lemezek- szoftverek számítógépes nyilvántartása A lemezeken különböző gyártótól származó szoftverek vannak A lemezeket kapacitás és a gyártó jellemzi. A szoftvereket nevük és előállítójuk azonosítja. Egy lemezen több szoftver is lehet. Egy szoftver lehet többlemezes is. Adatok Lemezkód, Lemezmárka Lemez kapacitás Szoftverkód, Szoftvernév Gyártókód Gyártónév 4. AZ EGYED-KAPCSOLAT MODELL 14

Megoldás LemezKód Szoftverkód Szoftverkód Szoftvernév Lemez N Tartalom M Szoftver N LemezKód L_Kapacitás Szoftverkód SZ_GY Gyártókód L_Márka 1 A lemezeken különböző gyártótól származó szoftverek vannak A lemezeket kapacitás és a gyártó jellemzi. A szoftvereket nevük és előállítójuk azonosítja. Egy lemezen több szoftver is lehet. Egy szoftver lehet többlemezes is. Adatok Lemezkód, Lemezmárka Lemez kapacitás Szoftverkód, Szoftvernév Gyártókód Gyártónév 4. AZ EGYED-KAPCSOLAT MODELL Gyártókód Gyártó Gyártónév 15

3.4.2 DVD kölcsönző számítógépes nyilvántartása A lemezek a filmek a kölcsönzők és a kölcsönzések adatai A filmeket a lemezeket és a kölcsönzőket kód jellemzi. Lehet egy lemezen több film és egy film több lemezen is. Egy kölcsönző több lemezt kölcsönözhet. Egy lemez egy időben egy helyen lehet csak. Adatok Filmkód Filmcím Lemezkód Lemez ár Kölcsönző kód Kölcsönző név Kölcsönző cím Elvitel Visszahozatal 4. AZ EGYED-KAPCSOLAT MODELL 16

Megoldás FilmKód Lemzkód Lemezkód Lemezár FilmKód Filmek Filmcím Tartalom A lemezek a filmek a kölcsönzők és a kölcsönzések adatai A filmeket a lemezeket és a kölcsönzőket kód jellemzi. Lehet egy lemezen több film és egy film több lemezen is. Egy kölcsönző több lemezt kölcsönözhet. Egy lemez egy időben egy helyen lehet csak. Adatok Filmkód Filmcím Lemezkód Lemez ár Kölcsönző kód Kölcsönző név Kölcsönző cím Elvitel Visszahozatal N Elvitel vissza M Kölcs_név Lemezek N Kölcsönz Kölcsönzők Kölcs_kód Kölcs_cím 4. AZ EGYED-KAPCSOLAT MODELL 1 Lemezkód Kölcs_kód 17

4. A relációs adatmodell Adatok valódi kétdimenziós táblázatban Az oszlopok az attribútumok (oszlophalmaz - reláció) az elemi (atomi) adattípusok az értékek A sorok a reláció előfordulások halmazát alkotják nincs két azonos sor A sorok és oszlopok felcserélhetők A relációt névvel azonosítjuk Név + attribútumok = reláció séma Az oszlopok száma a reláció fokszáma A sorok száma a reláció kardinalitása Szuperkulcs sorokat megkülönböztető oszlophalmaz Kulcs minimális elemszámú szuperkulcs Elsődleges kulcs a megkülönböztetésre választott kulcs Másodlagos kulcsok Egyszerű (egy oszlop), vagy összetett (több oszlop) Elsődleges tulajdonság valamely kulcs része 18

4.1 Egyedhalmazok a relációs modellben Az átírás szabályai 1. Tábla név = az egyedhalmaz neve 2. A tábla attribútumai = tulajdonság nevek 3. Az oszlopok értékkészlete = a tulajdonság értékkészlete 4. Tábla sorok = egyedhalmaz sorok 5. Probléma a többértékű tulajdonságok kezelése Minden tulajdonságértéket új sorba írunk, azonos atomi értékekkel 6. Ha nincs többértékű, akkor marad a kulcs, egyébként többelemű Anya Gyerek Nagyné Nagyné Nagy Ede Nagy Éva Emberek Sz.szám Név Szakma Autók Rendszám Típus Lakások Hrsz. Cím 4.2 Speciális adatértékek NULL Alapértelmezett 3. A RELÁCIÓS ADATMODELL 19

4.3 Kapcsolatok ábrázolása Az egyik reláció bővítése a másik előfordulását azonosító oszlopokkal. (Idegen kulcs) 1:1 esetén bármelyik táblázatba a másik elsődleges kulcsa 1:N esetén csak az egyikbe a másik elsődleges kulcsa N:M esetén új tábla az elsődleges kulcsokkal és a kapcsolatot jellemző tulajdonságokkal. Autók Emberek Rendszám Típus Tulaj 1:N Sz.szám Név Lakás tulajdonosok 1:1 Sz.szám Hrsz Lakások N:M 1:1 1:1 1:1 Hrsz Cím 1:N Házastársak Férj Feleség Szakma Sz.szám Szakma 3. A RELÁCIÓS ADATMODELL 20

4.3.1 Példák E-K modell átírására 4.3.1.1 Lemezek- szoftverek számítógépes nyilvántartása LemezKód Szoftverkód Szoftverkód Szoftvernév Lemez N Tartalom M Szoftver 1 LemezKód L_Kapacitás L_Márka Szoftverkód SZ_GY N Gyártókód Gyártó Gyártókód Gyártónév 4. AZ EGYED-KAPCSOLAT MODELL 21

Megoldás Lemez Lemezkód L_márka L_kapacitás Tartalom 1:1 Lemezkód Szoftverkód 1:1 Szoftver Szoftverkód Szoftvernév N:M 1:1 SZGY Szoftverkód Gyártó_kód 1:N 1:1 Gyártó Gyártó_kód Gyártó_név 4. AZ EGYED-KAPCSOLAT MODELL 22

4.3.1.2 DVD kölcsönző számítógépes nyilvántartása FilmKód Lemzkód Lemezkód Lemezár FilmKód Filmek N Filmcím Tartalom Elvitel vissza M Lemezek N Kölcsönz 1 Lemezkód Kölcs_kód Kölcsönzők Kölcs_név Kölcs_kód Kölcs_cím 4. AZ EGYED-KAPCSOLAT MODELL 23

Megoldás Filmek Filmkód Filmcím Tartalom 1:1 1:1 Filmkód Lemezkód Lemezek Lemezkód Lemezár N:M 1:1 Kölcsönz Filmkód Kölcs_kód Elvitel Vissza 1:1 1:N Kölcsönzők Kölcs_kód Kölcs_név Kölcs_cím 4. AZ EGYED-KAPCSOLAT MODELL 24

4.4 Relációs műveletek Halmazműveletek Azonos struktúra esetén - Egyesítés, Metszet, Különbség Csonkító műveletek Vetítés - oszlopok, Kiválasztás - sorok Kapcsoló műveletek Descartes minden mindennel, Join közös oszlopok kapcsolnak, Theta kapcsolás más szempontok alapján. Átnevezés 4.5 Integritási kényszerek Az elsődleges kulcs megszorításai Egyedi értékek Nem lehet benne NULL Az idegen kulcs megszorításai hivatkozási feltétel Másik táblázat elsődleges kulcsa, vagy NULL Az adatbázis-kezelő módosításkor felügyeli Visszautasítás vagy Továbbgyűrűző, kaszkád frissítés vagy NULL értékre állítás 3. A RELÁCIÓS ADATMODELL 25

4.6 Redundancia és felújítási problémák Redundancia = többszörös adattárolás Ugyanaz az adat ne szerepeljen több táblázatban (kivétel a kapcsolatokat jellemző idegen kulcsok esete) Egy egyed ne szerepeljen a táblázat több sorában Anomália = rendellenesség, szabálytalanság Beírási anomália = a kapcsolt egyedek adatai nem írhatók be addig, amíg azok kulcsa NULL Módosítási anomália = a redundáns adattárolás miatt a javítás nem történik meg mindenhol Törlési anomália = az egyedekre vonatkozó információk teljesen elveszhetnek. 26

4.7 Normalizálás Minden adat egyetlen táblázatba A normálformákat megsértő függőségeket táblázatok többlépéses bontásával bontásával megszüntetjük. Követelmény, hogy egyesítéssel az eredeti táblázat visszaállítható legyen 4.7.1 Funkcionális függőség R relációs séma α R és β R β funkcionálisan függ α-tól, α β, ha bármely két sorban α értékei egyeznek, akkor β értékei is egyezőek. Triviális funkcionális függőség α β ha β α (részhalmaz) Nem triviális FF, ha α β és b i α, b i β (van független elem) Teljesen nem triviális FF, ha α β és! b i β, melyre b i α (diszj.) Részleges FF, ha α β és γ β, ahol γ α (kevesebbtől is függ) Teljes FF, ha! γ α, melyre γ β teljesül (ez a legkevesebb) Szétvághatóság α β α b i i=1, n Összevonhatóság α b i i=1, n α β = b 1,...b n α Reflexivitás ha β α, akkor α β β Bővítés ha α β, akkor (αu γ) β Szem.szam Név Tranzitivitás ha α β és β γ, akkor α γ 1 Nagy Lajos 5. NORMALIZÁLÁS 1 1 1 Nagy Lajos Nagy Lajos Nagy Lajos 27

4.7.2 Többértékű függőség és, β többértékű függéssel függ α-tól α β, ha minden olyan t 1 és t 2 sorhoz, ahol t 1 [α]= t 2 [α] létezik t 3 és t 4 úgy, hogy t 1 [α]= t 2 [α] =t 3 [α]= t 4 [α] t 3 [β]= t 1 [β] t 3 [R-β]= t 2 [R- β] t 4 [ β]= t 2 [β] α β t 4 [R-β]= t 1 [R- β] Például: Szem.szam Név Végzettség Projekt 1 1 1 1 Nagy Lajos Nagy Lajos Nagy Lajos Nagy Lajos Matematikus Mérnök Matematikus Mérnök OTKA GVOP GVOP OTKA Tranzitivitás, ha a T(α, β, γ) táblázatban α β=ø és α γ=ø és α β és β γ, akkor α γ Komplementer szabály, T(α, β, γ) táblázatban ha α β, akkor α γ 5. NORMALIZÁLÁS 28

4.7.3 Táblázatok szétbontása Ha A={a 1, a 2, a n }, B={b 1, b 2, b m } és C= {c 1, c 2, c k } és T(A,B,C) és A B vagy A B akkor a táblázat bontható T 1 (A,B) és T 2 (A,C) formában az azonos sorokat törölve. ha A B állt fenn, akkor A a T1 elsődleges kulcsa, T2 idegen kulcsa ha A B, akkor meg kell határozni az elsődleges kulcsokat 4.7.4 Normálformák Első normálforma 1NF Minden tulajdonság atomi (nem bontható) így definiáltuk, tartalmazhat sorismétlést, az elsődleges kulcs nincs megkövetelve. Második normálforma 2NF Ha 1NF és a nem kulcs tulajdonságok funkcionális függősége teljes funkcionális függőség α β teljes FF, ha! γ α, melyre γ ->β teljesül (ez a legkevesebb) Munkatársak(kód, végzettség, név) nem 2NF, mert kód név Felbontás Munkatársak(kód,név)+Diploma(kód, végzettség) 5. NORMALIZÁLÁS 29

Harmadik normálforma 3NF Ha 2NF és az elsődleges kulcsban nem szereplő tulajdonságok között nincs funkcionális függőség Példa Vizsga (diákkód, Dátum, Tanárkód, Tanárnév) nem 3NF, mert Tanárkód Tanárnév Felbontás Vizsga(diákkód, Dátum, Tanárkód) Tanárok(Tanárkód, Tanárnév) Boyce-Codd normálforma BCNF Ha függőségi kapcsolataiban minden meghatározó tulajdonság egyben szuperkulcs. Pl: R( A, B, C, D, E) és A D, B E, DE C nem BCNF, a meghatározók nem szuperkulcsok (2NF sem áll fenn, pl. A D miatt) Felbontás R1(A,D) - BCNF R2 (A,B,C,E) Nem BCNF B E miatt R21(B,E) R22(A,B,C) 5. NORMALIZÁLÁS 30

Negyedik normálforma 4NF Ha a többértékű függésekben a meghatározó tulajdonság szuperkulcs Pl: Munkatársak(Munkatárskód, végzettség, projekt) BCNF, azonban nem 4F Munkatárskód végzettség Munkatárskód projekt Felbontás MtVegzettseg (Munkatárskód, végzettség) MtProjekt (Munkatárskód, projekt) 1NF 2NF 3NF BCNF 4NF... 5. NORMALIZÁLÁS 31

5. Az SQL nyelv (DDL) Tábla létrehozása CREATE TABLE CREATE TABLE <táblanév> (<oszlopnév> <típus> [NOT NULL] [ CONSTRAINT egyoszlopos *] [, CONSTRAINT többoszlopos **] [, ]); CREATE TABLE Lajos0 (alma char(255) NOT NULL, körte integer); * {CONSTRAINT <név> {PRIMARY KEY NOT NULL UNIQUE } REFERENCES <tábln> [(<oszln1>, <oszln2> )]} CREATE TABLE Lajos2 (alma integer CONSTRAINT x PRIMARY KEY, körte integer CONSTRAINT y UNIQUE); CREATE TABLE Lajos4(alma integer CONSTRAINT x PRIMARY KEY, körte integer CONSTRAINT y UNIQUE, narancs integer REFERENCES Geza0(elso)); ** CONSTRAINT <név> {PRIMARY KEY (<oszlopn1>[, <oszlopn2> ]) NOT NULL (<oszlopn1>[, <oszlopn2> ]) UNIQUE (<oszlopn1>[, <oszlopn2> ]) FOREIGN KEY (<oszln1>[, <oszln2> ]) REFERENCES <táblanév> (<(oszln1>[, <oszln2> ])} CREATE TABLE Geza1(elso integer, masodik integer, CONSTRAINT y PRIMARY KEY (elso, masodik)); CREATE TABLE Lajos5 (alma integer CONSTRAINT x PRIMARY KEY, körte integer, narancs integer, CONSTRAINT sok FOREIGN KEY (körte, narancs) REFERENCES Geza1(elso,masodik)); 6. AZ SQL NYELV 32

(DDL) Index létrehozása CREATE INDEX CREATE [ UNIQUE] INDEX <indexnév> ON <táblanév> (<oszlopnév> [ASC DESC] [, <oszlopnév> [ASC DESC], ]) [ WITH { PRIMARY DISALLOW NULL IGNORE NULL}]; CREATE UNIQUE INDEX prim on Lajos0(alma ASC ) WITH IGNORE NULL; CREATE UNIQUE INDEX elso ON Geza1(elso) WITH DISALLOW NULL; (DDL) Tábla módosítása ALTER TABLE ALTER TABLE <táblanév> { ADD { COLUMN <oszlopnév> <típus> [NOT NULL] [ CONSTRAINT egyoszlopos *] CONSTRAINT többoszlopos ** } DROP { COLUMN <oszlopnév> CONSTRAINT <oszlopnév> } }; ALTER TABLE Lajos5 ADD COLUMN banan integer CONSTRAINT uj REFERENCES Geza1(elso) ; ALTER TABLE Lajos5 DROP CONSTRAINT uj; ALTER TABLE Lajos5 DROP COLUMN banan; 6. AZ SQL NYELV 33

(DDL) Kényszer hozzáadása ALTER TABLE <táblanév> ADD CONSTRAINT <név> { * **}; ALTER TABLE Lajos5 ADD CONSTRAINT pk UNIQUE(körte); ALTER TABLE <táblanév> DROP CONSTRAINT <név>; ALTER TABLE Lajos5 DROP CONSTRAINT pk; (DDL) Kényszer törlése DROP INDEX <indexnév> ON <táblanév> DROP INDEX prim ON Lajos0; (DDL) Index törlése DROP INDEX DROP TABLE <név>; DROP TABLE Lajos; (DDL) Tábla törlése DROP TABLE 6. AZ SQL NYELV 34

SELECT [ ALL DISTINCT TOP n [PERCENT] ] { <kifejezés lista> * } FROM { <táblázat név> > } [másodnév] [, ] [ WHERE <kiválasztási feltétel> ] [ GROUP BY <oszlopnév lista> ] [ HAVING <kiválasztási feltétel> ] [ ORDER BY {<oszl.név> <egész áll>} [ASC DESC] [, ] ] ; Táblanév.oszlopnév vagy Táblanév!oszlopnév vagy [Tábla név]![oszlop név] vagy [Tábla név].[oszlop név] A záradékok sorrendje kötött A záradékok kiértékelési sorrendje: FROM, WHERE, GROUP BY, HAVING, ORDER BY. (DML) Lekérdezés SELECT 6. AZ SQL NYELV 35

SELECT * FROM Tabla1; SELECT TOP 3 * FROM Tabla1; SELECT TOP 25 PERCENT * FROM Tabla1; SELECT Nev AS Név, Eletkor AS Életkor FROM Tabla1; SELECT Eletkor FROM Tabla1; (DML) SELECT <kifejezéslista> FROM <tábla>; SELECT DISTINCT eletkor FROM Tabla1; (DML) SELECT aggregátor(<kifejezés>) FROM <tábla>; AVG (< kifejezés> <oszlopnév>) COUNT ( * <oszlopnév>) MAX (< kifejezés> <oszlopnév>) MIN (< kifejezés> <oszlopnév>) SUM (< kifejezés> <oszlopnév>) STDEV (< kifejezés> <oszlopnév>), STDEVP (< kifejezés> <oszlopnév>) VAR ( < kifejezés>), VARP ( < kifejezés>) FIRST ( < kifejezés>), LAST ( < kifejezés>) SELECT AVG(eletkor) AS atlag FROM Tabla1; SELECT COUNT(*) AS db FROM Tabla1; SELECT MAX(eletkor+testmagassag) AS ektm FROM Tabla1; SELECT STDEV(eletkor) AS szoras FROM Tabla1; (DML) SELECT <kif.lista> FROM <tábla> WHERE <feltétel>; SELECT * FROM Tabla1 WHERE Eletkor>20; LIKE, IS, IN, BETWEEN, ANY, SOME, ALL, EXISTS, UNIQUE, LIKE *? # [ae] [!ae] [a-c] SELECT * FROM Tabla1 WHERE Nev Like "*Kiss*"; BETWEEN SELECT Nev FROM Tabla1 WHERE (Eletkor Between 15 And 36); 6. AZ SQL NYELV 36

(DML) SELECT <kif.lista> FROM <tábla> GROUP BY <kif>; Kell aggregátor SELECT ffi, Count(*) FROM Tabla1 GROUP BY FFi; SELECT Eletkor, AVG(Testmagassag) AS [atlag testmagassag] FROM Tabla1 GROUP BY Eletkor; (DML) SELECT <kif.lista> FROM <tábla> GROUP BY <kif> HAVING <feltétel>; Kell aggregátor SELECT ffi, Count(*) AS darab FROM Tabla1 GROUP BY FFi HAVING FFi ; SELECT ffi, count(*) AS db, AVG(Testmagassag) AS [atlag testmag], AVG(Eletkor) AS [atlag eletkor] FROM Tabla1 GROUP BY FFi HAVING Not FF; SELECT Tabla1.* FROM Tabla1 WHERE (Eletkor>(SELECT AVG(eletkor) FROM Tabla1)) and (Testmagassag>(SELECT AVG(Testmagassag) FROM Tabla1)); SELECT Tabla1.* FROM Tabla1, 7_atlag_eletk WHERE (Tabla1.Eletkor>[7_atlag_eletk].atlag); SELECT Nev FROM TABLA1 ORDER BY Nev DESC; (DML) összetett SELECT (DML) SELECT <kif.lista> FROM <tábla> ORDER BY <kif> [ASC DESC]; 6. AZ SQL NYELV 37

SELECT * FROM Tabla1 WHERE Eletkor>parameter; (DML) Paraméterek (DML) SELECT <kif.lista> FROM <tábla> {INNER LEFT RIGHT} JOIN ON <feltétel>; SELECT Auto.Rendszam, Auto.Tipus, Tabla1.Nev AS tulajdonos FROM Tabla1 INNER JOIN Auto ON Tabla1.Azonosító=Auto.Tulaj; SELECT Auto.Rendszam, Auto.Tipus, Tabla1.Nev AS tulajdonos FROM Tabla1 LEFT JOIN Auto ON Tabla1.Azonosító=Auto.Tulaj; TRANSFORM Avg(Tabla1.Testmagassag) AS AvgOfTestmagassag SELECT Tabla1.Eletkor FROM Tabla1 GROUP BY Tabla1.Eletkor PIVOT Tabla1.Nev; UNION (DML) TRANSFORM <aggregátor> <SELECT utasítás> PIVOT <oszlopnév> [IN (<érték1>, [<érték2> [, ]])]; SELECT * FROM Tabla1 WHERE Eletkor>30 UNION SELECT * FROM Tabla1 WHERE Eletkor<20; (DDL) Halmaz 6. AZ SQL NYELV 38

(DDL) INSERT, DELETE CREATE TABLE Tabla (Azonosító COUNTER Primary Key, Nev CHAR(50), FFi BIT, Eletkor Integer, Testmagassag Integer) ; INSERT INTO Tabla VALUES (1, "Nagy Lajos", TRUE, 12, 165); INSERT INTO Tabla SELECT * FROM tabla1; DELETE * FROM Tabla; (DML) UPDATE SET UPDATE Tabla1 SET Eletkor = Eletkor * 2 WHERE FFI; 6. AZ SQL NYELV 39