Adatbázis I. – 11. előadás Kulcsok az SQL – ben. Hivatkozás- épségi megszorítások és idegen kulcsok.

Slides:



Advertisements
Hasonló előadás
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Advertisements

2012. tavaszi félév Vitéz Gergely. 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.
© Kozsik Tamás Adatbáziskezelés •Relációs adatbáziskezelők •Noha a Java objektum-elvű, egyelőre nem az objektum-elvű adatbáziskezelőket támogatja.
Adatbázisok SQL. TARTALOM Szijártó M.2 Témakörök  Az SQL tulajdonságai  A műveletek fajtái  Objektum-műveletek  Lekérdezések Tulajdonságok és műveletek.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Adatbázisok gyakorlat 8. gyakorlat SQL alapok.
Elmaradás.  0 Számjegy. Ebben a pozícióban egyetlen számjegyet kell megadnia.  9 Számjegy. Ebben a pozícióban egyetlen számjegyet lehet megadni, nem.
2. GYAKORLAT E-K modellből relációs adatbázisséma.
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Marosvásárhely ABR ( Adatbázisrendszerek) 12. Előadás: 0. Egyes érdekesebb lekérdezésekről 1.NULL értékek.
Delphi programozás alapjai
SQL Structured Query Language
5. GYAKORLAT SQL CREATE TABLE, aktualizálás. S QL Structured Query Language A relációs adatbáziskezelés szabványos nyelve Nem algoritmikus, de beépíthető.
– SQL 2: Adatok kezelése – Tarcsi Ádám, január 30. Adatbázis gyakorlat.
– Adattáblák & adatok kezelése – Tarcsi Ádám január Adatbázis gyakorlat.
Triggerek II. ADATBÁZIS ALAPÚ RENDSZEREK.  Az Oracle kifinomult módon támogatja a sorszámozások generálását  Szekvencia: olyan adatbázis-objektum, amely.
SQL Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések
Adatbázis alapú rendszerek
Adatbázis rendszerek II.
Készítette: Sárközi Anikó
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
2006. október 9.Markó Tamás, PTE TTK1 Az Oracle SQL 7. Kényszerek megadása. Indexek kezelése.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 5. Nézettáblák létrehozása, módosítása és törlése.
SQL92 lehetőségek KL A tábla B tábla C view adatok VIEW működése utasítás: SELECT.. FROM A,B … SELECT.. FROM C Az adatok a hivatkozáskor állítódnak elő.
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
SQL, adatdefiníció, adatok megváltoztatása, megszorítások
Kényszerek megadása. Indexek kezelése.
Nézettáblák létrehozása, módosítása és törlése
- adatbázisséma definiálása (DDL) Data Definition Languages, - adatok aktualizálása (DML),Data Maniputaion Language - lekérdezési lehetőségek (DML) Data.
SQL. SQL = Structured Query Language (= struktúrált lekérdező nyelv). A relációs adatbázis-kezelés szabványos nyelve. Nem algoritmikus nyelv, de algoritmikus.
SQL.
Az SQL nyelv alapjai.
szakmérnök hallgatók számára
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
DDL – Adatdefiníciós nyelv
Sapientia - Erdelyi Magyar TudományEgyetem (EMTE) Csíkszereda 6. Előadás tartalma Adatmodellezés 2 1. Tervezési alapelvek 2. Alosztályok 3. Megszorítások.
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
2012. tavaszi félév Vitéz Gergely. 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.
2012. tavaszi félév Vitéz Gergely. 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 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!
Adatbázis-kezelés SQL-lel. SQL SQL = Structured Query Language – Strukturált Lekérdezőnyelv Relációs adatbázis-kezelők lekérdezési nyelve. Alapjait az.
Adatbázis-kezelés SQL-lel
Felhasználók és jogosultságok
SQL DDL DATA DEFINITION LANGUAGE. Táblák létrehozása CREATE TABLE táblanév ( oszlopnév1 típus(méret) /DEFAULT érték/ /NOT NULL/, oszlopnév2 típus(méret)
Készítette: Tóth Ervin
Az SQL nyelv. SQL Az SQL utasításait két fő csoportba szokták sorolni: DDL (= Data Definition Language): adatstuktúra definiáló utasítások. DML (= Data.
SQL.
Adatbázis kezelés.
1 Sramó András Adatbázis-technológia V. előadás Adatbázis-technológia 5. előadás Az SQL.
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
Tarcsi Ádám, Adatbázis gyakorlat – Adattáblák – Tarcsi Ádám, január.
Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai
5. gyakorlat Fleiner Rita.
SQL haladó Külső összekapcsolások, Csoportosítás/Összesítés,
Webprogramozó tanfolyam
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda 3. Előadás Az SQL adatbázisnyelv (Tartalom ) Az SQL története Az SQL felépítése Adattípúsok.
SQL történelem 1970 Edgar F. Codd (IBM) cikke 12 szabály a relációs adatmodellekre 1979 első kereskedelmi forgalmazású relációs adatbáziskezelő 1986 az.
SQL. SQL jellemzői Nem algoritmikus (nem tartalmaz algoritmikus szerkezeteket: ciklus, eljárás, elágazás) Nem rekurzív (önmagát nem hívhatja) Halmazorientált.
Adatbázis rendszerek I
1 Verseny 2000 gyakorlat SQL 2000 Server Portál adatbázis létrehozása.
– SELECT - 1. – Tarcsi Ádám január Adatbázis gyakorlat.
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
Adatbázis-kezelés 1-2. adatbázis-kezelő rendszer 1.új adatbázisokat hozhassanak (adat definició 2.lekérdezések és módosítások (adat manipuláció) 3.Támogassa.
SQL aggregálás, csoportosítás és összekapcsolás Adatbázisok 1.
1 SQL jogosultság-kezelés Privilégiumok Grant és Revoke Grant Diagrammok.
Sapientia - Erdélyi Magyar Tudományegyetem (EMTE) Csíkszereda
Adatbázis alapú rendszerek
Idegen kulcsok Lokális és globális megszorítások Triggerek
Adatbázisok SQL.
Logisztikai projekt - gyakorlat Adatbázis-elmélet
Idegen kulcsok Lokális és globális megszorítások Triggerek
Előadás másolata:

Adatbázis I. – 11. előadás Kulcsok az SQL – ben. Hivatkozás- épségi megszorítások és idegen kulcsok.

Kulcsok az SQL-ben Hivatkozási épség és idegen kulcsok Attribútum értékre vonatk. megszorítások Globális megszorítások Megszorítások módosítása Triggerek az SQL-ben Tranzakciók

0. Bevezetés Minden beszúrás, törlés és módosítás után ellenőrzést kellene végrehajtani. Az SQL 2 lehetőséget ad az adatbázis épségi megszorításainak az adatbázissémában való megadására. A triggerek aktív elemek amelyek bizonyos események hatására lépnek működésbe.. Csak az SQL 3 ban vannak benne

1. Kulcsok az SQL-ben Legfontosabb megszorítás a kulcsalkotás deklarációja: egy attribútum vagy attribútumhalamaz egy relációnak a kulcsa ( nem lehet két sornak megegyező értékű attribútuma vagy attribútumhalmaza a kulcs attribútumo(ko)n) Kulcsok megadása a CREATE TABLE utasításnál PRIMARY KEY es UNIQUE kulcsszavakkal történik. A kulcs megadása: Attribútum deklarálása relációsémában mint elsődleges kulcs Hozáadunk egy további deklarációt, ami azt mutatja meg hogy az attribútum vagy attribútumhalmaz kulcsot alkot

A kulcs megadása 2 féle képpen. CREATE TABLE szemely( CNP Bigint PRIMARY KEY, Név VARCHAR(50) ); CREATE TABLE szemely(CNP Bigint, Név VARCHAR(50), PRIMARY KEY(CNP) Ha több, mint 1 attribútum van, akkor csak így lehet megadni!!!!!!!

Feltételek (egy adott oszlopra vonatkoznak): PRIMARY KEY: elsődleges kulcs UNIQUE: kulcs REFERENCES tábla(oszlop) [ON-feltételek]: külső kulcs Táblafeltételek (az egész táblára vonatkoznak): PRIMARY KEY (oszloplista): elsődleges kulcs UNIQUE (oszloplista): kulcs FOREIGN KEY (oszloplista) REFERENCES tábla(oszloplista) [ON-feltételek]: külső kulcs

Zölddel írva a számla általános adatait láthatjuk Pirossal a számlasorok attribútumai vannak Kékkel írva láthatóak a számlasorok.

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda Ügyfelek számlaszám termékID Számlák számlája sorai darabszám Sorszám ÁFA Számlasorok mértékegység egységár Termékek Dátum terméke név határidő azonosító bank bszámla adószám bejegyzés

1. Példa : a név atribútum mint elsődleges kulcs CREATE TABLE Szamla ( Szamlaszam CHAR(14) PRIMARY KEY, Datum DATE, AFA INT, KliensID INT NOT NULL REFERENCES Kliens(ID)); 2. Példa: elsődleges kulcs különálló deklarálása CREATE TABLE Szamlasor ( Szamlaszam CHAR(14), Sorszam INT, Mennyiség FLOAT, Egysegar FLOAT, Termekkod INT REFERENCES Termek(termekID), PRIMARY KEY(Szamlaszam,Sorszam) FOREIGN KEY (Szamlaszam) REFERENCES Szamla(Szamlaszam);

CREATE TABLE Konyv( KOD BIGINT PRIMARY KEY, Szerzo VARCHAR(45), Cim VARCHAR(55) ); CREATE TABLE Konyvpeldany( Leltarszam INT PRIMARY KEY, Vonalkod BIGINT UNIQUE, Konyvkod BIGINT REFERENCES Konyv(KOD)

vagy egy más lehetőség a UNIQUE használata: Példa Számla: Szamlaszam CHAR(14) UNIQUE UNIQUE(Szamlaszam) Számlasorok esetében csak a második használható UNIQUE(Szamlaszam, Sorszam)

Kulcsfeltételek teljesítésének biztosítása: Lehetőség van az index deklarálásához, gyorsabb keresést biztosít CREATE UNIQUE INDEX nevIndex ON Kliens(Név) A kulcsfeltételt minden módosítas után ellenőrizni kell. Csak a beszúrás és modosítás okoz gondot, a törlés nem. Ha nincs index akkor a reláció minden sorát ellenőrizni kell. Ez nagyon időigényes művelet.

elsődleges kulcs és egyedi attribútumok hasonlatossága és különbsége: PRIMARY KEY es UNIQUE szinonímák különbség PRIMARY KEY egyszer fordul elő egy táblában amíg UNIQUE többször is előfordulhat Idegen kulcs csak elsődleges kulcsra vonatkozhat PRIMARY KEY hez indexet lehet hozzákapcsolni

2. Hivatkozási épség és idegen kulcsok Hivatkozási épség azt jelenti hogy bizonyos attribútumoknak megfelelő érteme KELL legyen. Példa: a Számla relációban a KliensID atribútum értéke 2563, akkor a Kliens relációban van egy sor amelyben az azonosito 2563. Idegen kulcsok más relációra vonatkoznak , más attribútumokra A másik reláció attribútumai, amelyekre hivatkozunk elsődleges kulcsok A Hivatkozási épség megszorítás a két attribútumot (attribútum-csoportot) összekapcsolja

Idegen kulcsokat kétféle képpen deklarálhatjuk: Az idegen kulcs egy attribútumra vonatkozik REFERENCES <tábla>(<attribútum>) A CREATE TABLE utasítás végén deklaráljuk FOREIGN KEY <attibútum(ok)> REFERENCES <tábla> (<attribútum(ok)>)

1. Példa : idegen kulcs egy attribútumra vonatkozik CREATE TABLE Számla ( Számlaszám CHAR(14) PRIMARY KEY, Dátum DATE, ÁFA INT, KliensID INT NOT NULL REFERENCES Kliens(ID)); 2. Példa: mindkét eset előfordul egy tábla készítésénél CREATE TABLE Számlasor ( Számlaszám CHAR(14), Sorszám INT, Mennyiség FLOAT, Egységár FLOAT, Termékkód INT REFERENCES Termek(termekID), PRIMARY KEY(Számlaszám,Sorszám) FOREIGN KEY (Számlaszám) REFERENCES Számla(Számlaszám));

Hivatkozási épség fenntartása Futási hiba: Számla relációba beszúrunk egy olyan sort, amelyben a KliensID nem egyezik a Kliens táblából egyik kliens-kóddal sem Számla reláció egy sorában megpróbáljuk módosítani a KliensID-t, olyanra ami nem létezik a Kliens táblában Kliens táblából törölni próbálunk egy olyan sort, amelyikben levő klienskód létezik valamelyik sorban a Számla relációban Kliens relációban módosítása olyan klienskód értékének, amelyik benne van a Számla reláció legalább egy sorában Az adatbaziskezelőnek három lehetősége van: Alapértelmezés szerinti eljárás . Ha a feltétel megsérül a módosítást visszautasítjuk.

Továbbgyűrűző eljárás Számlaszám Dátum ÁFA KliensID BX 2556345 2006.05.01 19 2584 BX2556346 2563 BX2556347 2006.05.02 BX2556348 2006.05.03 Klienskód Kliensnév Bank ..... 2563 MarcoSoft BCR 2584 GigaByte Reiffeisen

ON UPDATE CASCADE Számlaszám Dátum ÁFA KliensID BX 2556345 2006.05.01 19 2584 BX2556346 2888 BX2556347 2006.05.02 BX2556348 2006.05.03 Klienskód Kliensnév Bank ..... 2888 MarcoSoft BCR 2584 GigaByte Reiffeisen

ON DELETE SET NULL Törölve volt a 2888-as Kliens, a MacroSoft Számlaszám Dátum ÁFA KliensID BX 2556345 2006.05.01 19 2584 BX2556346 NULL BX2556347 2006.05.02 BX2556348 2006.05.03 Klienskód Kliensnév Bank ..... 2584 GigaByte Reiffeisen

A tábla készítése, hogy az előbbi módon működjék CREATE TABLE Számla( Számlaszám CHAR(14) PRIMARY KEY, Dátum DATE, határidő DATE, ÁFA INT, Fizetve BOOLEAN, KliensID INT REFERENCES Kliens(Klienskód), ON DELETE SET NULL, ON UPDATE CASCADE );

Zölddel írva a számla általános adatait láthatjuk Pirossal a számlasorok attribútumai vannak Kékkel írva láthatóak a számlasorok.

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda Ügyfelek számlaszám termékID Számlák számlája sorai darabszám Sorszám ÁFA Számlasorok mértékegység egységár Termékek Dátum terméke név határidő azonosító bank bszámla adószám bejegyzés

CREATE TABLE Számla(... KliensID INT REFERENCES Kliens(Klienskód) ON DELETE CASCADE ON UPDATE CASCADE ); Ha kitörölünk egy KLIENSt a kliens táblából, akkor az összes hozzá tartozó számla is kitörlődik. Ez sem jó, de az adatbázisunk bizonyos szempontból konszisztens maradt, viszont hiányoznak bizonyos számlák.

CREATE TABLE Számlasor(... Termékkód INT REFERENCES Termek(termekID) ON DELETE CASCADE, FOREIGN KEY (Számlaszám) REFERENCES Számla(Számlaszám) ON DELETE CASCADE ON UPDATE CASCADE ); Az első esetben kitörlődik az összes olyan számlasor, amelyikben egy bizonyos termék megtalálható. Ez teljesen inkonszisztens, mert lehet olyan számlánk, amelyikből csak bizonyos sorok maradtak meg. A számla összértéke is megválozik a törlés miatt. A második eset valamivel jobb, sőt, konszisztencia őrzője, mivel, ha kitörölünk egy számlát, akkor törlődik vele együtt az összes hozzá tartozó számlasor is.

3. A törlés szerinti CASCADE (továbbgyűrűzés) érdekesen alakulhat az előzőek szerint: Ha kitörlünk egy ügyfelet, akkor azzal együtt kitörlődnek a hozzá tartozó számlák. Mivel a számlasorok a számlákhoz ugyancsak CASCADE szerint vannak kapcsolva, kitörlődnek az összes hozzátartozó számlasorok is. Ez a példa mutatja be az igazi továbbgyűrzést, mert egy táblában való törlés, másik két táblában való törlést eredményez.

Lógó sorok es módosító eljárások: Definíció: Lógó sorok azok a sorok amelyek kulcsértéke nincs benne a hivatkozott táblában. Megsértik az adott idegen kulcs megszorítására vonatkozó hivatkozási épséget. Az alapértelmezett eljárás a törlés és módosításokra: Tiltottak azon műveletek, amelyek lógó sorokat hoznak létre abban a relációban, amelyik a másikra hivatkozik. Továbbgyűrűző eljárás: Törli vagy módosítja minden létrejött lógó sort NULL értékre állítás: Az idegen kulcsot NULL értekre változtatja az összes lógó sorban

Abban az esetben ha nem adtuk meg ELŐRE a HIVATKOZÁSÉPSÉGI megszorítást, megtörténhet, hogy lógó soraink maradnak, s ezekután nem tudjuk megadni a hivatozás-épségi megszorítást. A lógó sorokat a LEFT JOIN és a RIGHT JOIN összekapcsolás is megmutatja. A LEFT JOIN esetében a hivatkozó tábla a FROM után az első kell legyen: SELECT Számla.Számlaszám, Kliens.nev FROM Számla LEFT JOIN Kliens ON Számla. KliensID=Kliens.ID; Megadja az összes számlát és a hozzátartozó kliens nevét. (ha van)

Azon számlák megkeresése, amelyek “lógnak” a következő képpen is lehetségesek: SELECT Számla.Számlaszám FROM Számla WHERE Számla.KliensID NOT IN (SELECT Kliens.ID FROM Kliens);

3. Attribútum értékre vonatkozó megszorítások Kétféle képpen adható meg: Attribútumokra vonatkozó megszorítás a relacióséma definálásakor adható meg. Értéktartományra vonatkozó megszorítás, majd az attribútum hozzárendelése az értéktartományhoz. Attribútumokra vonatkozó CHECK feltételek korlátozzák az attribútumértéket. Példa: CHECK (elnökazon >=100000), CHECK (nem In (‘F’, ‘N’)

A NOT NULL feltételek Példa (a Számla relációban) : KliensID INT REFERENCES Kliens (ID) NOT NULL Következmények: Nem módosíthatjuk a kliensID attribútumot NULL ra Nem szúrhatunk egy sort be a Számla relációba amelyre csak számlaszámot, dátumot, határidőt és ÁFA – t írunk mert akkor a KliensID NULL lenne Nem alkalmazhatjuk a NULL értékre állítás módszerét

Értéktartományra vonatkozó megszorítások: Értéktartomány megadásával az attribútum értékeit korlátozhatjuk. Az értéktartományra való hivatkozás a VALUE kulcsszóval történik CREATE DOMAIN NemÉrték CHAR (1) CHECK (VALUE IN (‘F’,’N’)); Mikor kell egy megszorítást ellenőrizni? TRANZAKCIÓ után, ha DEFERRED – ként deklaráljuk. Létezhet olyan kapcsolat, amelyik nem engedi a bevitelt, csak ha 2 helyre is bevisszük egyszerre.

4. Globális megszorítások Több attribútumra vonatkozó megszorítások. A problémát két részre osztjuk: 1. Sorra vonatkozó CHECK fetétel 2. Önálló megszorítások Sorra vonatkozó CHECK feltétel: CREATE TABLE utasításban adjuk meg az attribútumok, kulcsok és idegen kulcsok deklarációja után. Bármi lehet, ami a WHERE után szerepel. A rendszer akkor ellenőrzi, amikor egy új sort szúrunk be R – be, vagy amikor R egy sorát módosítjuk

Önálló megszorítások -Reláció egészére : pl. oszlopbeli értékek összegére ad feltételt CREATE ASSERTION kulcsszó, Az önálló megszorítás neve, A CHECK kulcsszó Egy zárójelben megadott feltétel CREATE ASSERTION <név> CHECK (<feltétel>)

Megszorítások összehasonlítása: Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda Megszorítások összehasonlítása: Megszorítas Tipus Hol deklaráljuk Mikor ellenőrzi a rendszer Minden esetben igaz marad? Attr. Vonatkozó CHECK feltétel Az attribútum megadásakor A relációba való beszúráskor vagy az attrib. módosít Alkérdés esetén nem Sorra vonatkozó CHECK feltétel A relációséma megadásakor A rel.való beszúr. vagy sor módosít. Önálló megszorítás Az adatbázisséma megadásakor Bármelyik,a feltételben szereplő rel. Változtat. Igen

5. Megszorítások módosítása Megszorításokat módosíthatjuk, törölhetjük vagy helyettesíthetjük: Megszorítások elnevezése A törléshez szükség van arra, hogy a Megszorításoknak neve legyen. A CREATE ASSERTION és CONSTRAINT kulcsszavakkal történik Példa: Nev CHaR (30) CONSTRAINT Nevkulcs PRIMARY KEY, Nem CHAR (1) CONSTRAINT ferfivagyno CHECK (nem IN (‘F’, ‘N’));

Tablákra vonatkozó megszorítások megváltoztatása: ALTER TABLE kulcsszavakkal, DROP-al törölünk ADD-all hozzáteszünk egy új megszorítást Példa: ALTER TABLE Filmszinesz DROP CONSTRAIN nevkulcs; ALTER TABLE Filmszinesz ADD CONSTRAIN nevkulcs PRIMARY KEY (nev); Értéktartományra vonatkozó megszorítások megváltoztatása ALTER DOMAIN Azonertek DROP CONSTRAIN Hatjegyu ALTER DOMAIN Azonertek ADD CONSTRAIN Hatjegyu CHECK (VALUE<=100000);

Önálló megszorítások megváltoztatása: A DROP ASSERTION kulcsszavakkal törölünk Létrehozás új deklarációval végezzük el Példa : DROP ASSERTION gazdagelnok