2011.04.14.
Adatbázisok I
SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás - objektum megszüntetés - objektum módosítás
CREATE DROP ALTER
Módosítás: DML: - rekord felvitel - rekord törlés - rekord módosítás
INSERT DELETE UPDATE
Lekérdezés: DQL: - lekérdezés
SELECT
Vezérlés DCL: - védelem - tranzakció kezelés
GRANT,.. COMMIT,.. 2
1
2011.04.14.
Táblák létrehozása • Az üres adatszerkezeti elemeket, struktúrákat kell először megadni, később töltjük fel őket adatokkal • A táblázat szerkezete, sémája, a már ismert, a táblázathoz tartozó adatmezőkkel írható le. • A mezők megadása a – Mezők nevének – Adattípusának és – Az integritási feltételeknek a kijelölésével történik.
3
Táblák megadása • Összefoglalva a tábla létrehozásakor meg kell adni: – Tábla nevét – Mezők nevét – Mezők típusát – Integritási feltételeket
4
2
2011.04.14.
Táblák megadása • CREATE TABLE táblanév(m1 t1 [i1] [, …, mi ti [ii]], [ig]); m i: ti : ii : ig:
mezőnév típus mezőhöz kötött integritási feltétel mezőcsoporthoz kötött integritási feltétel
5
Táblák megadása CREATE TABLE tnév (mnév1 típus1 intfelt1, … intfelt); CHAR(n)
PRIMERY KEY
NUMBER(n,m)
NOT NULL
DATE
UNIQUE CHECK felt REFERENCES tábla PRIMERY KEY (m1,m2) FOREIGN KEY(m1, m2) REFERENCES tábla CHECK felt CREATE TABLE AUTO (RSZ CHAR(6) PRIMARY KEY, AR NUMBER(9) NOT NULL, GYART_IDO DATE); 6
3
2011.04.14.
Adattípusok • Szabványosított hivatkozást nehéz megadni, mert a legtöbb elterjedt RDBMS más-más elnevezést használ. • Legfontosabb típusok: – CHAR (n) : n hosszúságú szöveg – NUMBER(n [,m]) : n hosszú szám, ahol m a tizedesjegyek száma – DATE : dátum
7
Numerikus adattípusok • Fix vagy lebegőpontos számok – Fixpontos adattípusok: A fixpontos szám rendelkezik egész (P) és tizedesjegy(S) résszel. • NUMERIC(P,S) • DECIMAL(P,S) • INTEGER • SMALLINT
8
4
2011.04.14.
Numerikus adattípusok • Fix vagy lebegőpontos számok – Lebegőpontos adattípusok: Mantissza és kitevő is előjeles érték. A lebegőpontos értéknek "pontosság" tulajdonsága is van. (A mantisszában lévő szignifikáns bináris számjegyek száma) • FLOAT(P) • REAL • DOUBLE PRECISION
– Egyedi adattípus: • MONEY
• A numerikus adattípusok esetében sok problémát okoz, hogy a tárolás megvalósítás függő. 9
Dátum és Idő • Dátum és idő kezelése sok problémát vet fel • Dátum típusú konstans formája: – DATE '1948-05-14' – TIME '15:00:02.5' – Dátum és idő együtt jelenik meg a TIMESTAMP értékben: • TIMESTAMP '1948-05-14 12:00:00'
Microsoft SQLServer dátumábrázolása
DateTime típus :1753.jan.1. és 9999.dec.31 közötti dátumidő adatok három századmásodperc pontossággal, 8 byte-on tárolva SmallDateTime típus: 4 byte, 1900.jan.12079.jún.6 közötti egyperces pontossággal. 10
5
2011.04.14.
Példa táblák létrehozására CREATE TABLE Auto ( TUL NUMBER(3) NOT NULL, RSZ CHAR(6) NOT NULL UNIQUE, TIP CHAR(10), SZIN CHAR(10), EVJ NUMBER(4), AR NUMBER(8));
11
Megszorítások Egy oszlopra vonatkozó megszorítások NULL az attribútum definíciójában arra utal, hogy az adat megadása nem kötelező, ez az alapértelmezés ezért a legritkább esetben írják ki. NOT NULL az attribútum definíciójában arra utal, hogy az adat megadása kötelező, azaz nem vihető be olyan sor a relációban, ahol az így definiált adat nincs kitöltve. PRIMARY KEY ez az oszlop a tábla elsődleges kulcsa. UNIQUE ez az oszlop a tábla kulcsa. CHECK(feltétel) csak feltételt kielégítő értékek kerülhetnek be az oszlopba. [FOREIGN KEY] REFERENCES reláció_név [ (oszlop_név) ], ez az oszlop külső kulcs
12
6
2011.04.14.
Több oszlopra vonatkozó megszorítások PRIMARY KEY(oszlop1[, oszlop2, ...]) ezek az oszlopok együtt alkotják az elsődleges kulcsot. UNIQUE(oszlop1[, oszlop2, ...]) ezek az oszlopok együtt kulcsot alkotnak. CHECK(feltétel) csak feltételt kielégítő sorok kerülhetnek be a táblába. FOREIGN KEY (oszlop1[, oszlop2, ...]) REFERENCES reláció(oszlop1[, oszlop2, ...]), az oszlopok külső kulcsot alkotnak a megadott tábla oszlopaihoz.
13
Tábla szerkezet módosítása ALTER objektumtípus azonosító paraméterek ALTER TABLE tnév ADD|MODIFY(mnev tip intfelt | intfelt); ALTER TABLE Auto (TULAJ REFERENCES Ember); Objektum megszüntetése: DROP objektumtípus azonosító paraméterek DROP TABLE tnév; Pl. DROP TABLE Auto 14
7
2011.04.14.
Példák CREATE TABLE osztaly ( oszt_azon INT PRIMARY KEY, nev VARCHAR(14) NOT NULL, varos VARCHAR(13) NOT NULL, CONSTRAINT unev UNIQUE(nev)); CREATE TABLE alkalmazott ( alk_azon INT PRIMARY KEY, nev VARCHAR(10) NOT NULL, beosztas VARCHAR(9) NOT NULL, belepes DATE NOT NULL, fizetes FLOAT NOT NULL, jutalom FLOAT, oszt_azon INT NOT NULL, CONSTRAINT idegenkulcs FOREIGN KEY (oszt_azon) REFERENCES osztaly (oszt_azon));
15
Példák CREATE TABLE fiz_oszt ( f_oszt INT PRIMARY KEY, min FLOAT NOT NULL, max FLOAT NOT NULL, CONSTRAINT minmax_rule CHECK (min < max));
16
8
2011.04.14.
Példák ALTER TABLE reláció_név ADD attribútum_név adattípus [(szélesség)]; ALTER TABLE reláció_név MODIFY attribútum_név adattípus (új_szélesség) [NOT NULL]; ALTER TABLE reláció_név RENAME COLUMN régi_név TO új_név; ALTER TABLE reláció_név DROP COLUMN attribútum_név; DROP TABLE [IF EXISTS] reláció_név;
Példák ALTER TABLE osztaly ADD oszt_vez int NOT NULL; ALTER TABLE osztaly DROP COLUMN oszt_vez; DROP TABLE osztaly; kényszerek (alkalmazott tábla idegenkulcs hivatkozás) miatt nem hajtható végre!
17
Indexek CREATE [UNIQUE] INDEX index_név ON reláció(oszlop1, oszlop2, ...); Egyedi index = kulcs Példák CREATE INDEX belepes_index ON alkalmazott(belepes); DROP INDEX belepes_index;
18
9
2011.04.14.
Adatbázis tervezés kérdései Adatstruktúra helyessége • A tervezés számos hibalehetőséget rejt magában. Hibaforrások: -nem megfelelő relációkat hozunk létre -nem megfelelő mezőket alkotunk meg -nem megfelelő a mezők elnevezése -nem a megfelelő mezők kerülnek egy relációba -nem megfelelő a relációk kapcsolatának megvalósítása -nem megfelelő a mezők adattípusa -nem megfelelő a megadott integritási feltétel rendszer
19
Redundancia • Redundancia: adatelemek többszörös, ismételt letárolása. • Következmény: anomáliák – beszúrási anomália – módosítási anomália – törlési anomália – inkonzisztencia
20
10
2011.04.14.
Anomáliák • Helytelen séma: Beszúrási anomália: egy rekord felvitelekor, felesleges, már letárolt információkat újra fel kell vinni(pl. minden új dolgozó felvitelénél fel kell vinni a munkahely adatait is; ha valahol véletlenül elgépeljük, új adatot hozunk létre)
21
Anomáliák Módosítási anomália: egy adat módosításához több helyen is módosítani kell az adatbázisban(ha pl. megváltozik a munkahely címe, akkor minden egyes, az adott munkahelyen dolgozó rekordjában el kell végezni a módosítást többletmunka és ügyelni kell, hogy mindenhol helyesen elvégezzük a módosítást) Törlési anomália: egy információelem megszűnésekor más, hozzá nem tartozó információk is elvesznek(ha pl. máshol nincs letárolva a munkahely címe, akkor az adott munkahelyen dolgozók kitörlésével a munkahelyre vonatkozóadatok is törlődnek)
22
11
2011.04.14.
Anomáliák oka • Az anomáliák abból származnak, hogy nem az igazán összetartozó adatokat vesszünk be egy relációba. • Hogy mely mezők tartoznak igazán egy relációba, azt a mezők közötti összetartozási viszony, a mezők közötti függőségek határozzák meg. • Legfontosabb függőségi típus a funkcionális függőség.
23
12