BEVEZETÉS Az objektum fogalma Program (1)
Objektum
Adat (2)
• • • •
Kiadványszerkesztés Táblázatkezelés CAD Adatbáziskezelés
– – – –
Word Excel AutoCad Access
1
Program (2)
Objektum
Adat (1)
1.
Adatmodell – A valós világ elemeinek leképezése adatokra. Az adatok között kapcsolat lehet – –
2.
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ő rendszer – Programrendszer az adatok+kapcsolatok ellentmondás-mentes 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)
Táblázatok (adatbázis felügyelő) T1(A,B,C,D)
T2(E,F,G,A)
T3(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 – 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
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
–
– Művelet
–
az adatok tárolására szolgáló elemi adatok rendszere 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) 5
2.2 Egyed, egyedhalmaz • Egyed
- a világ egy megkülönböztetett Kis József 1 3312… fizikai objektuma Nagy Irén 2 3312… (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ó)
2. AZ ADATMODELLEZÉS ALAPJAI
6
2.3 Kapcsolat, kapcsolat-előfordulás, kapcsolattíp. • Kapcsolat
- Két egyedhalmaz, illetve az egyedhalmazok elemei között fennálló viszony Emberek - (a kapcsolatelőfordulások halmaza) autók • Kapcsolat-előfordulás - Az egyedhalmazok Kis József elemei között fennálló viszony ABC-123 • Kapcsolattípus - 1:1 1:N - 1:N - N:M
2. AZ ADATMODELLEZÉS ALAPJAI
7
2.4 Tulajdonság, tulajdonságérték, értékhalmaz • Tulajdonság (attribútum)
-
• Tulajdonságérték
-
• Értékhalmaz (értéktartomány) (domain)
-
2. AZ ADATMODELLEZÉS ALAPJAI
Az egyedhalmaz egyedeinek azon jellemzői, amelyek az egyedhalmazt definiálják vagy az egyedhalmazok közti kapcsolatok jellemzői. az egyedekhez, vagy a kapcsolat-előfordulásokhoz tarozó konkrét adat A tulajdonságok lehetséges értékei
8
Példa
Tulajdonságok
Kapcsolatok
Emberek (Név, Szem.szám,Szakma) Tulajdonságértékek
Kapcsolat előfordulás
Kis József Nagy Irén Kovács István
1 33…
Mérnök, közg.
2 33… 1 33…
Kapcsolat előfordulások
Autók(Rendszám,Típus)
Tanuló -
ABC- 123 tulajdonos autó 1:N
Egyedek
tulajdonos lakás N:M házastárs1
házastárs2
DEF- 456
Kapcsolat előfordulások
1:1
VW
Alfa
GHJ- 789
Opel
Lakások (Cím, Hrsz) 1111 Bp. Báb…
Hrsz 12…
1211 Bp. Vas u… Hrsz 23… 1031 Bp. Gát u… 2. AZ ADATMODELLEZÉS ALAPJAI
Hrsz 45…
Egyedhalmazok 9
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 minden egyednél egyetlen érték
• Egyértékű • Többértékű • Egyszerű • Összetett • Kulcstulajdonság • Alaptulajdonság • Származtatott tul. 3. AZ EGYED-KAPCSOLAT MODELL
név
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 Egyéb tulajdonságokból 10 előállított életkor=fv(szül.dat)
3.2 Az EK modell kapcsolatai N jellel jelöljük. • A kapcsolatokat 1 Név • A kapcsolatoknak is vannak tul2 tul1 tulajdonságaik és típusuk. • 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.
Sz.számF 1
Hrsz Lakások Cím Ir.sz
Város
…
Sz.számN
házasság
1
Emberek N
Lak.Tul
M 1
Név
Sz.szám Hrsz
Autótul.
N
Sz.szám
Szakm Típus
Autók Rendszám
Sz.szám 3. AZ EGYED-KAPCSOLAT MODELL
Rendszám 11
• 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,
Alkalmazottak
a tulajdonságok is öröklődnek.
Tanárok Egyéb alk. • 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 3. AZ EGYED-KAPCSOLAT MODELL
12
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
3. AZ EGYED-KAPCSOLAT MODELL
13
Megoldás LemezKód
N
Lemez
Szoftverkód
Tartalom
Szoftverkód
M
Szoftvernév
Szoftver 1
LemezKód
L_Kapacitás L_Márka
•
•
Szoftverkód
SZ_GY
Gyártókód
N
A lemezeken különböző gyártótól származó szoftverek vannak Gyártó – 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. Gyártókód Gyártónév Adatok – Lemezkód, – Lemezmárka – Lemez kapacitás – Szoftverkód, – Szoftvernév – Gyártókód 3. AZ EGYED-KAPCSOLAT MODELL – Gyártónév
14
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
3. AZ EGYED-KAPCSOLAT MODELL
15
Megoldás FilmKód
Filmek FilmKód
N
Filmcím
Lemzkód
Lemezkód
M
Tartalom Elvitel
Lemezár
Lemezek
N Kölcsönz
vissza •
•
Lemezkód
1
Kölcs_kód
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. Kölcsönzők – 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. Kölcs_kód Adatok – Filmkód Kölcs_név Kölcs_cím – Filmcím – Lemezkód – Lemez ár – Kölcsönző kód – Kölcsönző név – Kölcsönző cím – Elvitel 3. AZ EGYED-KAPCSOLAT MODELL – Visszahozatal
16
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
17
4.1 Egyedhalmazok a relációs modellben •
Az átírás szabályai 1. 2. 3. 4. 5.
Tábla név = az egyedhalmaz neve A tábla attribútumai = tulajdonság nevek Az oszlopok értékkészlete = a tulajdonság értékkészlete Tábla sorok = egyedhalmaz sorok 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ű
Emberek Sz.szám Név Szakma
Autók
Lakások
Rendszám Típus
Hrsz. Cím
4.2 Speciális adatértékek • NULL • Alapértelmezett 4. A RELÁCIÓS ADATMODELL
18
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
Férj Feleség
1:1
Lakás tulajdonosok Sz.szám
Hrsz
4. A RELÁCIÓS ADATMODELL
1:1 1:1
1:1
Lakások Hrsz
N:M
Házastársak
Szakma Cím
1:N
Sz.szám Szakma
19
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
N
Lemez
Szoftverkód
Tartalom
Szoftverkód
M
Szoftvernév
Szoftver 1
LemezKód
L_Kapacitás
Szoftverkód
SZ_GY
L_Márka
Gyártókód
N Gyártó Gyártókód
4. A RELÁCIÓS ADATMODELL
Gyártónév
20
Megoldás Lemez Lemezkód
Tartalom L_márka
L_kapacitás
1:1
Szoftver
Lemezkód
Szoftverkód
1:1
Szoftverkód
N:M
Szoftvernév
1:1
SZGY Szoftverkód
Gyártó_kód
1:N 1:1 Gyártó Gyártó_kód
Gyártó_név
4. A RELÁCIÓS ADATMODELL
21
4.3.1.2 DVD kölcsönző számítógépes nyilvántartása
FilmKód
Filmek
N
Lemzkód
Lemezkód
M
Tartalom
Lemezár
Lemezek
N FilmKód
Filmcím
Elvitel
Lemezkód
Kölcsönz vissza
1
Kölcs_kód
Kölcsönzők Kölcs_kód Kölcs_név
4. A RELÁCIÓS ADATMODELL
Kölcs_cím
22
Megoldás Filmek Filmkód
Filmcím
1:1
Tartalom Filmkód
Lemezkód
1:1
Lemezek Lemezkód
Lemezár
N:M Kölcsönz
1:1
Filmkód
Kölcs_kód
Elvitel
Vissza
1:N 1:1 Kölcsönzők Kölcs_kód
Kölcs_név
4. A RELÁCIÓS ADATMODELL
Kölcs_cím
23
4.4 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
4.5 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. A RELÁCIÓS ADATMODELL
24
5. Az SQL nyelv (DDL)
Tábla létrehozása CREATE TABLE
CREATE TABLE
( [NOT NULL] [ CONSTRAINT egyoszlopos *] [, CONSTRAINT többoszlopos **] [, …]); CREATE TABLE Lajos0 (alma char(255) NOT NULL, körte integer);
* {CONSTRAINT {PRIMARY KEY | NOT NULL | UNIQUE } | REFERENCES [(, …)]} 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 {PRIMARY KEY ([, …]) | NOT NULL ([, …]) | UNIQUE ([, …]) | FOREIGN KEY ([, …]) REFERENCES (<(oszln1>[, …])} 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));
4. AZ SQL NYELV
25
(DDL)
Index létrehozása CREATE INDEX
CREATE [ UNIQUE] INDEX ON ( [ASC | DESC] [ , [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 { ADD { COLUMN [NOT NULL] [ CONSTRAINT egyoszlopos *] | CONSTRAINT többoszlopos ** } | DROP { COLUMN | CONSTRAINT } }; ALTER TABLE Lajos5 ADD COLUMN banan integer CONSTRAINT uj REFERENCES Geza1(elso) ; ALTER TABLE Lajos5 DROP CONSTRAINT uj; ALTER TABLE Lajos5 DROP COLUMN banan;
4. AZ SQL NYELV
26
(DDL)
Kényszer hozzáadása
ALTER TABLE ADD CONSTRAINT { * | **}; ALTER TABLE Lajos5 ADD CONSTRAINT pk UNIQUE(körte);
(DDL)
Kényszer törlése
ALTER TABLE DROP CONSTRAINT ; ALTER TABLE Lajos5 DROP CONSTRAINT pk;
(DDL)
Index törlése DROP INDEX
DROP INDEX ON DROP INDEX prim ON Lajos0;
(DDL)
Tábla törlése DROP TABLE
DROP TABLE ; DROP TABLE Lajos;
4. AZ SQL NYELV
27
(DML)
Lekérdezés SELECT
SELECT [ ALL | DISTINCT | TOP n [PERCENT] ] { | * } FROM { > } [másodnév] [, …] [ WHERE ] [ GROUP BY ] [ HAVING ] [ ORDER BY { | <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, – SELECT, – ORDER BY. 4. AZ SQL NYELV
28
(DML)
SELECT FROM ;
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; SELECT DISTINCT eletkor FROM Tabla1; (DML)
SELECT aggregátor() FROM ;
• • • • • •
AVG (< kifejezés> | ) COUNT ( * | ) MAX (< kifejezés> | ) MIN (< kifejezés> | ) SUM (< kifejezés> | ) STDEV (< kifejezés> | ), STDEVP (< kifejezés> | ) • VAR ( < kifejezés>), VARP ( < kifejezés>) • FIRST ( < kifejezés>), LAST ( < kifejezés>) (DML)
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;
SELECT FROM WHERE ;
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);
4. AZ SQL NYELV
29
(DML)
SELECT FROM GROUP BY ;
• Kell aggregátor SELECT ffi, Count(*) FROM Tabla1 GROUP BY FFi; SELECT Eletkor, AVG(Testmagassag) AS [atlag testmagassag] FROM Tabla1 GROUP BY Eletkor;
SELECT FROM GROUP BY HAVING ; Kell aggregátor
(DML)
•
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;
(DML)
összetett SELECT
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); (DML)
SELECT FROM ORDER BY [ASC | DESC];
SELECT Nev FROM TABLA1 ORDER BY Nev DESC;
4. AZ SQL NYELV
30
(DML)
Paraméterek
SELECT * FROM Tabla1 WHERE Eletkor>parameter;
SELECT FROM {INNER | LEFT | RIGHT} JOIN ON ; (DML)
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 <SELECT utasítás> PIVOT [IN (<érték1>, [<érték2> [,… ]])]; (DML)
TRANSFORM Avg(Tabla1.Testmagassag) AS AvgOfTestmagassag SELECT Tabla1.Eletkor FROM Tabla1 GROUP BY Tabla1.Eletkor PIVOT Tabla1.Nev; (DDL)
Halmaz
• UNION SELECT * FROM Tabla1 WHERE Eletkor>30 UNION SELECT * FROM Tabla1 WHERE Eletkor<20;
4. AZ SQL NYELV
31
(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;
4. AZ SQL NYELV
32