adatbáziskezelés i

Upload: peter-briga

Post on 18-Jul-2015

408 views

Category:

Documents


0 download

TRANSCRIPT

Adatbziskezel rendszerek Adatbzis: A vals vilg egy meghatrozott rsznek lershoz hasznlt, adott formtum s rendszer szerint trolt adatok egyttese Olyan adatok egyttese, amit egy adatbziskezel rendszer kezel. Adatbziskezel rendszerekkel szembeni elvrsok: Tegye lehetv j adatbzisok ltrehozst, az adatbzis logikai struktrjnak (smjnak) egy specilis nyelven (adatdefincis nyelv) val megadst. Biztostsa, hogy a felhasznlk az adatokat egy megfelel nyelv (adatmanipulcis nyelv, lekrdez nyelv) segtsgvel lekrdezhessk, mdosthassk. Tmogassa nagyon nagy mennyisg adat hossz idn keresztl trtn trolst. Garantlja az adatok biztonsgt a meghibsodsokkal s az illetktelen felhasznlkkal szemben. Tegye lehetv a hatkony adathozzfrst a lekrdezsek s mdostsok szmra. Tbb felhasznl egyidej munkjt tmogassa. Figyelje a tbb felhasznl ltal egy idben trtn adathozzfrseket gy, hogy azok ne vezethessenek az adatok hibss vagy kvetkezetlenn vlshoz. Az els adatbziskezel rendszerek: 60-as vek vgn jelentek meg. Nem tmogattak semmilyen magas szint lekrdez nyelvet. Els jelents alkalmazsi terletek azok a rendszerek voltak, amelyekben sok kis adatelem szerepelt s a rendszerben sok lekrdezs s mdosts volt. Plda - Replgp helyfoglals: Adatelemek: o Egy vev helyfoglalsa egy adott jratra (lhely, vlasztott men) o Jratokra vonatkoz informci (induls, rkezs, honnan, hov, replgp) o Jegyrak, eljegyzsek, mg kaphat jegyek Lekrdezsek: o Egy adott vrosbl egy msikba mely jratok indulnak egy hozzvetlegesen megadott idpontban o Mely lhelyek szabadok o Mennyi egy jegy ra Adatmdostsok: o Egy vev helyfoglalsa egy adott jratra o Egy lhely kiadsa o Egy menvlaszts bejegyzse Plda - Banki rendszerek: Adatelemek: o gyfelek nevei s cmei. o Folyszmlk s hitelszmlk egyenlegei. o Az gyfelek s a szmlk kztt fennll kapcsolatok (pl. kinek melyik szmla felett van alrsi joga). Lekrdezsek: Egy adott szmla egyenlege Adatmdostsok: Egy adott szmlra vonatkoz befizets vagy kifizets Plda - Vllalati nyilvntartsok: Adatelemek: o Eladsokra vonatkozak o Kimen s bejv szmlkra vonatkozak

o Dolgozkra vonatkozak (nv, cm, fizets, nyeresgrszeseds) Lekrdezsek (jelentsek): o Kinnlev szmlk o Dolgozk havi fizetse Adatmdostsok: o Minden egyes elads, vsrls, szmlakibocsts, szmlakifizets o Dolgozk felvtele, elbocstsa, ellptetse Adatbziskezel rendszerek: Kezdetben egyedi programok kszltek az egyes vllalatoknl a klnbz adatok nyilvntartsra. A tmeges alkalmazsi igny kiknyszertette az adatformtumok szabvnyostst, s ltalnos cl adatbziskezel szoftverek kifejlesztst. Minden adatbziskezel rendszerben biztostani kell az adatmdostst. Relcis adatbziskezelk: Az adatokat a felhasznlk fel tblzat (relci) formjban jelentjk meg (a httrben persze bonyolult struktrk is lehetnek). A relcis adatbziskezelknek az a lnyege, hogy mindent kln trolunk, s gy keresnk kztk relcit. A lekrdezsek magas szint nyelv segtsgvel fejezhetk ki, amely jelentsen nveli az adatbzis programozk hatkonysgt. Plda: Szmlk nev relci

Attribtumok (oszlopok): szmlaszm, egyenleg, tpus Lekrdezs (SQL): o SELECT egyenleg az egyenleg attribtumbl krdezzen le o FROM Szmlk a szmlk tblbl o WHERE szmlaszm = 67890; - mit krdezzen le (a 67890-et) Vizsgld meg a FROM utn szerepl relci minden sort. Vlaszd ki azokat a sorokat, amelyek a WHERE utn megfogalmazott kvetelmnyeknek eleget tesznek. Add meg eredmnyknt ezeknek a soroknak a SELECT utn megadott attribtumait. Mg egy lekrdezs (SQL): o SELECT szmlaszm o FROM Szmlk o WHERE tpus='bettszmla' AND egyenleg < 0; A gyakorlatban a rendszernek optimalizlnia kell a lekrdezst: hatkony vgrehajtsi mdot kell tallni mg akkor is, ha a lekrdezsben szerepl relcik nagyon nagyok. Az IBM volt az els olyan cg, amely relcis adatbziskezel rendszereket rustott. Ma is a relcis adatbziskezel rendszerek a legelterjedtebbek a piacon. Adatbziskezel rendszerek felptse:

Adatok, metaadatok: Az bra aljn az adatok trolsra szolgl hely lthat. Ez a rsz nem csak adatokat, hanem metaadatokat is tartalmaz, ami az adatok szerkezett rja le (relcis adatbziskezel esetn a relcik nevei, attribtumok nevei, attribtumok tpusai). Napl bejegyzsek: A napl bejegyzsek informcik az adatbzis kzelmltban trtnt vltozsairl. Ezek segtsgvel oldhat meg, hogy a rendszer mg rendszerhiba esetn se vesztsen adatot. Statisztikk: Az adatbziskezel rendszer ltal sszegyjttt informcik az attribtumokrl, relcikrl s az adatbzis ms komponenseirl. Indexek: Az adatbziskezel rendszerek gyakran indexeket hasznlnak az adatok elrsre. Az index olyan adatstruktra, amely lehetv teszi, hogy az adatelemeket gyorsan megtalljuk, ha ismerjk a hozz tartoz rtkek bizonyos rszt. A leggyakrabban elfordul plda olyan index, amelyiknek a segtsgvel egy relci azon sorait kereshetjk meg, amelyekben az egyik attribtum rtke adott. Az indexek a trolt adatok kz tartoznak, viszont az, hogy mely attribtumokra lteznek indexek, a metaadatok rszt kpezik. Az indexels arra is j, hogy bizonyos adatelemeket (amelyek indexelve vannak) gyorsabban megtalljunk. Trkezel: A trkezel feladata a krt informcik beolvassa a trolhelyrl, illetve az adatok mdostsa, ha a felette ll rendszerszintek ilyen irny krst fogalmaznak meg. Lehetne az opercis rendszer fjlkezel rsze is, de a hatkonysg rdekben az adatbziskezelk ltalban kzvetlenl felgyelik az adatok lemezen val trolst. A trkezel kt rszbl ll: o Fjlkezel: fjlok lemezen val elhelyezkedst tartja nyilvn, az llomny blokkjait rja/olvassa ha a pufferkezel erre kri. o Pufferkezel: a fjlkezel segtsgvel adatblokkokat olvas be a lemezrl s kivlaszt egy memriaterletet, ahol az adott blokkot trolni fogja. Egy lemezblokkot a memriban tarthat egy ideig, de ha a blokk ltal foglalt memrira egy msik blokknak van szksge, akkor a blokkot visszarja a lemezre. Lekrdezsfeldolgoz: A lekrdezsfeldolgoznak nevezett egysg feladata, hogy a lekrdezseket, illetve egyb adatbzismveleteket (adatok s metaadatok mdostsa), amelyek gyakran egy magas szint nyelven vannak megfogalmazva, egyszer utastsok sorozatv alaktsa. Gyakran a lekrdezsfeldolgozs legnehezebb rsze a lekrdezs optimalizlsa, vagyis egy megfelel vgrehajtsi terv kivlasztsa. A bonyolult lekrdezsek sokszor lehetv teszik, hogy trendezzk az elemi mveleteket, s gy nagyon sok vgrehajtsi terv addik. Tranzakcikezel: A tranzakcikezel rsz felels a rendszer srtetlensgrt. Ennek kell biztostani, hogy az egy idben fut lekrdezsek s mdostsok ne tkzzenek

ssze egymssal, s hogy a rendszer mg rendszerhiba esetn se veszthessen adatokat. A tranzakcikezel kapcsolatot tart a lekrdezsfeldolgozval, hiszen a konfliktusok elkerlshez tudni kell, hogy az aktulis lekrdezsek ppen mely adatokon dolgoznak, s pp a konfliktusok megakadlyozsrt ksleltethet bizonyos mveleteket (zrols). Kapcsolatot tart a trkezelvel is, mert az adatok vdelmre szolgl mdszerek tbbnyire magukban foglaljk a mdostsok naplzst. Az adatbziskezelk tbbnyire megengedik a felhasznlknak, hogy egy vagy tbb lekrdezst vagy mdostst egy tranzakciba csoportostsanak. A tranzakci tulajdonkppen olyan mveletek egy csoportja, amelyeket egyms utn egy egysgknt kell vgrehajtani. Az adatbzisrendszerek gyakran sok tranzakci egyidej vgrehajtst engedik meg, ezek helyes lefutsnak biztostsa is a tranzakcikezel feladata. A tranzakcik helyes lefutsval szembeni elvrsokat ngy pontban szoktk sszefoglalni: o Atomossg: Megkveteljk, hogy egy tranzakci vagy teljes egszben hajtdjon vgre, vagy semmi ne hajtdjon vgre belle. Pldul az automatbl trtn pnzfelvtel s a hozz kapcsold megterhels az gyfl szmljn egyetlen atomi tranzakcit kell, hogy alkosson. o Kvetkezetessg: Egy adatbzisban ltalban beszlhetnk a kvetkezetes llapotok fogalmrl, amelyekben az adatok megfelelnek bizonyos elvrsoknak. Pldul egy replgp helyfoglalsi adatbzisban egy megfelel kvetkezetessgi felttel, hogy egyetlen lhelyet se rendeljnk hozz kt klnbz utashoz. Noha ezt a felttelt megsrthetjk a tranzakci alatt (pl. utasok trendezse), a tranzakcikezelnek biztostani kell, hogy a tranzakci befejezse utn az adatbzis ismt kvetkezetes llapotba kerljn. o Elklnts: Amikor kt vagy tbb tranzakci egyidejleg fut, azok kihatst el kell klnteni egymstl. Ez azt jelenti, hogy semmifle olyan eredmnyt vagy kihatst nem tapasztalhatunk az adatbzisban, amit a kt tranzakci egyidej futsa okozott, s ami nem fordult volna el, ha a kt tranzakci egyms utn fut le. Pldul ha kt gynk ppen ugyanarra a jratra ad el jegyet s a jraton mr csak egy hely van, akkor az egyik krst teljesteni kell, a msikat pedig vissza kell utastani. o Tartssg: Ha egy tranzakci befejezdtt, akkor annak eredmnye nem veszhet el rendszerhiba esetn sem, mg akkor sem, ha a rendszer kzvetlenl a tranzakci befejezse utn hibsodik meg. Lekrdezsek (adatokra vonatkozan): o Input o Egy ltalnos lekrdezinterfszen keresztl. Pldul a rendszer megengedi SQL lekrdezsek begpelst. o Egy alkalmazi program interfszn keresztl. ltalban nem tehetnk fel akrmilyen krdst, de amit igen, azt ltalban egyszerbben tehetjk meg (mezk kitltse). Mdostsok (adatokra vonatkozan): hasonl, mint a lekrdezseknl. Smamdostsok: az ezekre vonatkoz utastsokat csak az arra illetkes szemlyek, az adatbzis adminisztrtorok adhatjk ki. Adatbziskezel rendszerekkel kapcsolatos fbb tevkenysgek: Adatbzistervezs: o Hogyan alaktsunk ki egy jl hasznlhat adatbzist? o Mely informcik kerljenek be az adatbzisba? o Milyen legyen az adatok szerkezete? o Milyen felttelezsekkel ljnk az adatelemek tpusra s rtkeire vonatkozan?

o Hogyan kapcsoldjanak egymshoz az adatelemek? Adatbzisprogramozs: o Hogyan fejezzk ki az adatbzisra vonatkoz lekrdezseket s egyb mveleteket? o Hogyan hasznljuk ki az adatbziskezel rendszerek egyb lehetsgeit, mint amilyenek a tranzakcik vagy a triggerek? Adatbzismegvalsts: o Hogyan ksztsnk el egy adatbziskezel rendszert? o Hogyan valstsuk meg a lekrdezsfeldolgozt, a tranzakcikezelt? o Hogyan szervezzk meg az adatok trolst, hogy az adathozzfrs hatkony legyen? A relcis adatmodell

Adatmodell: Egy adatmodell adatok lersra szolgl eszkz. A lers ltalban hrom f rszbl ll: Az adatok struktrja. Az adatokon vgezhet mveletek (lekrdezsek, mdostsok). Az adatokra megfogalmazhat megszortsok. A relcis adatmodell: A relcis adatmodellt 1970-ben definilta E. F. Codd, de gyakorlati alkalmazsa csak az 1980-as vekben vlt ltalnoss. A relcis adatmodellben az adatok ktdimenzis tblzatok, gynevezett adattblk formjban jelennek meg. Az adattbla (vagy egyszeren csak tbla) sorokbl s oszlopokbl ll. Egy sort rekordnak nevezzk, amely annyi mezbl ll, ahny oszlopa van a tblnak. Attribtumnak neveznk egy tulajdonsgot (jellemzt), amelyet a megnevezsvel azonostunk, s rtktartomnyt rendelnk hozz. Egy Z attribtum rtktartomnyt dom(Z)-vel jelljk. A relcis adatmodellnl az rtktartomny csak atomi rtkekbl llhat (szm, sztring, dtum, logikai), vagyis elemei nem lehetnek struktrk, halmazok, listk, stb. Az rtktartomny megadsa rendszerint tpus s hossz megadst jelenti. A gyakorlatban az attribtumnvhez ltalban informlis lerst (kdolsi utastst) kell mellkelni, amely az attribtum megadst pontostja. Relcismnak neveznk egy attribtumhalmazt, amelyhez azonost nevet rendelnk. (Ahol nem rtelemzavar, relcisma helyett egyszeren csak smt mondunk.) A relcismt R(A1,...,An) mdon szoks jellni, ahol A1,...,An attribtumok, R pedig a sma neve. Hasznljuk mg az R(A) jellst is, ahol A az {A1,...,An} attribtumhalmaz. Az R sma Ai attribtumt R.Ai-vel jelljk, ha klnbz smk azonos nev attribtumait kell megklnbztetni (pldul szemly(ID, Nev) smban a szemely.nev a szemly tbla nv attribtumra val hivatkozs). Pldul: Egy knyvek nyilvntartsra szolgl relcisma KNYV (knyvszm, szerz, cm), ahol az egyes attribtumok rtktartomnya: dom(knyvszm) = 6-jegy decimlis szmok halmaza, dom(szerz) = legfeljebb 30 hossz karaktersorozatok halmaza, dom(cm) = legfeljebb 50 hossz karaktersorozatok halmaza. Relci az R(A1,...,An) sma felett: T dom(A1) ... dom(An). Vagyis T elemei (a1,...,an) alakak, ahol ai dom(Ai) (i=1,...,n).

A relci megjelensi formja az adattbla, amelynek oszlopai az A1,...,An attribtumoknak, sorai pedig T egyes elemeinek felelnek meg. A tbla fejlcben a relcismt szoktk megadni. A relcis modellnl beszlhetnk relcitpusrl, amely a relcismnak felel meg, s relcipldnyrl, amely az adattblnak felel meg. ltalnos esetben a smra s tblra kln jellst hasznlunk (pldul R sma feletti T tbla), de konkrt pldk esetn a kettt azonosan jelljk (pldul KNYV sma s KNYV tbla). Mivel a definci szerint a T relci egy halmaz, gy a relcis modellben a tbla minden sora klnbz, s a sorokra semmilyen rendezettsget nem ttelez fel. Valjban az adatok gpi trolsa mindig valamilyen sorrendben trtnik, s a konkrt adatbziskezel rendszerek ltalban megengednek azonos sorokat is. Az elmleti modell s a gyakorlati alkalmazs ezen eltrseire mindig gyelni kell. A relcis modell valjban a tbla oszlopaira sem hatroz meg sorrendet. Mivel a relci fenti defincija akaratlanul is kikti az oszlopok sorrendjt, gy egy msik definci is hasznlatos: Tekintsk a D = dom(A1) ... dom(An) egyestett rtktartomnyt s az A = {A1,...,An} attribtumhalmazt. Relcinak neveznk egy T = {t1,...,tk} halmazt, ahol ti: A D olyan lekpezs, amelynl minden j-re ti(Aj) dom(Aj) teljesl. Tbb adattbla egyttesen alkotja a relcis adatbzist, amely egy teljes jelensgkr lersra alkalmas. A kvetkez plda egy knyvtri nyilvntarts egy lehetsges megvalstst mutatja: itt a KNYV tblban adjuk meg az adott knyvet kiklcsnz olvas szmt is.

NULL rtk: Elfordul, hogy egy sor valamelyik attribtumnak rtket kell adni, de nem tudjuk, hogy mi is ez az rtk. A leggyakoribb okok: Ismeretlen rtk: magrt beszl (pl. klcsnz szletsnapja). Alkalmazhatatlan rtk: nincs olyan rtk, aminek itt rtelme lenne (pl. klcsnz neve egy ppen nem kiklcsnztt knyvnl). Visszatartott rtk: nem vagyunk feljogostva az rtk ismeretre (pl. titkos telefonszm).

Az ilyen attribtumok esetn hasznlhatunk egy specilis NULL rtket. A NULL rtk bizonyos szempontbl ugyanolyan rtk, mint a tbbi. Ms szempontbl viszont nem is rtk, pl. kt NULL rtket nem tekint(het)nk egyenlnek (gondoljunk kt ismeretlen szletsnapra). A pldban jl lthat, hogy az olvasszm attribtum mindkt tblban szerepel, ezzel kapcsolatot ltest a tblk kztt. Ez rvilgt a kvetkezre: A relcis adatmodell lnyege, hogy a klnbz relcismk azonos attribtumokat tartalmazhatnak, ezltal kerlnek kapcsolatba egymssal, s gy a klnll adattblk egyttese egy szervesen sszefgg adatbzist alkot. A NULL rtkkel nem lehet mveletet vgezni. Msodlagos kulcs abban az esetben lehet NULL rtk is, ha az elsdleges kulccsal egyrtelm azonostst tudunk vgezni. Szuperkulcs: Egy R(A1,...,An) relcisma esetn az A = {A1,...,An} attribtumhalmaz egy K rszhalmazt szuperkulcsnak nevezzk, ha brmely R feletti T tbla brmely kt sora K-n klnbzik. Formlisan: brmely ti T s tj T esetn ti tj ti(K) tj(K). Szemlletesen: ha a tbln a K-n kvli oszlopokat letakarjuk, akkor is minden sor klnbz marad. K = A mindig szuperkulcs. Kulcs: Az A attribtumhalmaz K rszhalmazt kulcsnak nevezzk, ha minimlis szuperkulcs, vagyis egyetlen valdi rszhalmaza sem szuperkulcs. Ha K egyetlen attribtumbl ll, akkor egyszer, egybknt sszetett kulcsrl beszlnk. Ha egy relcismnak tbb kulcsa is van, egyet kivlasztunk kzlk, ez lesz az elsdleges kulcs. Az elsdleges kulcsot alkot attribtumokat alhzssal szoks jellni. A kulcs nem a tbla tulajdonsga, hanem egy felttel elrsa a relcismra. A kulcs meghatrozsa az attribtumok jelentsnek vizsglatval lehetsges, s nem egy adott tbla vizsglatval. Plda: Az albbi tbla gpkocsik mozgsnak menetlevlszer nyilvntartst tartalmazza: VOLN (gkvez, rendszm, indul, rkezik) Itt ngy kulcs van: {gkvez, indul}, {gkvez, rkezik}, {rendszm, indul}, {rendszm, rkezik}. Ezek kzl nknyesen kivlasztunk egyet, ez lesz az elsdleges kulcs: VOLN (gkvez, rendszm, indul, rkezik) Kls kulcs: Egy relcisma attribtumainak valamely L rszhalmaza kls kulcs (msnven idegen kulcs), ha egy msik sma elsdleges kulcsra hivatkozik. Legyenek R1(A1,...,An) s R2(B1,...,Bm) relcismk s legyen K {B1,...,Bm} elsdleges kulcs R2-ben. Most egy L {A1,...,An} attribtumhalmaz kls kulcs az R1-ben R2-re vonatkozan, ha K s L attribtumai sszeprosthatk gy, hogy az egymsnak megfelel attribtumok rtktartomnya ugyanaz, tetszleges R1, R2 feletti T1, T2 tblk esetn T1 brmely sorban az L-beli attribtumok nem NULL rtkei megegyeznek valamely T2-ben elfordul sor megfelel K-beli attribtumainak rtkeivel. A kls kulcsot dlt betvel, vagy a hivatkozott kulcsra mutat nyllal jelljk. A kulcshoz hasonlan a kls kulcs is felttel elrsa a smkra, s nem az aktulis tblk tulajdonsga. Relcis adatbzissma: Ha egy adatbzis valamennyi tbljnak smjt felrjuk a kulcsok s kls kulcsok jellsvel egytt, akkor relcis adatbzissmt kapunk. Plda: A knyvtri nyilvntarts relcis adatbzissmja: KNYV (knyvszm, szerz, cm, olvasszm) OLVAS (olvasszm, nv, lakcm) Adatbzissmk definilsa SQL-ben: A smadefinci legegyszerbb formja a kvetkez: CREATE SCHEMA smanv. Ezt kvetik a smaelemek deklarcii. Nem fontos a smt egyszerre deklarlni, de a ksbbi mdostsoknl gyelni kell arra, hogy azok melyik smra vonatkoznak. Az aktulis smt a SET SCHEMA smanv; utastssal jellhetjk ki. Relcismk definilsa SQL-ben: Relcisma ltrehozsra a CREATE TABLE utasts

szolgl, amely egyben egy res tblt is ltrehoz a smhoz. Az attribtumok definilsa mellett kulcsok s kls kulcsok megadsra is lehetsget nyjt: CREATE TABLE tblanv ( oszlopnv adattpus [felttel], ... ..., oszlopnv adattpus [felttel] [, tblaFelttelek] ); Adattpusok (rendszerenknt eltrk lehetnek): CHAR(n): n hosszsg karaktersorozat VARCHAR(n): legfeljebb n hossz karaktersorozat INT: egsz szm REAL: vals (lebegpontos) szm DECIMAL(n,d): n jegy szm, ebbl d tizedesjegy BOOLEAN: logikai DATE: dtum TIME: id Az adattpushoz "DEFAULT rtk" megadsval alaprtelmezett rtk definilhat. Ha ilyet nem adunk meg, az alaprtelmezett rtk NULL. Felttelek (egy adott oszlopra vonatkoznak): PRIMARY KEY: elsdleges kulcs UNIQUE: kulcs REFERENCES tbla(oszlop): kls kulcs Tblafelttelek (az egsz tblra vonatkoznak): PRIMARY KEY (oszloplista): elsdleges kulcs UNIQUE (oszloplista): kulcs FOREIGN KEY (oszloplista) REFERENCES tbla(oszloplista): kls kulcs Ha a (kls) kulcs sszetett, akkor csak tblafelttel formjban adhat meg. A PRIMARY KEY (elsdleges kulcs) s UNIQUE (kulcs) kztti klnbsgek: Egy smban csak egy elsdleges kulcs, de tetszleges szm tovbbi kulcs lehet. Elsdleges kulcs attribtumok rtke nem lehet NULL, mg kulcs attribtumok igen. Kls kulccsal csak a msik tbla elsdleges kulcsra lehet hivatkozni. Egyes adatbziskezel rendszerek az elsdleges kulcshoz automatikusan indexet hoznak ltre. Plda: Hozzuk ltre egy vllalat dolgozit nyilvntart OSZTLY (osztlykd, osztlynv, vezAdszm) DOLGOZ (adszm, nv, lakcm, osztlykd) relcismkat SQL-ben: CREATE TABLE Osztly (osztlykd CHAR(3) PRIMARY KEY, osztlynv CHAR(20), vezAdszm DECIMAL(10)); CREATE TABLE Dolgoz (adszm DECIMAL(10) PRIMARY KEY, nv CHAR(30), lakcm CHAR(40) DEFAULT 'ismeretlen', osztlykd CHAR(3) REFERENCES Osztly(osztlykd)); A DOLGOZ smt mskpp is definilhatjuk: CREATE TABLE Dolgoz (adszm DECIMAL(10), nv CHAR(30), lakcm CHAR(40) DEFAULT 'ismeretlen', osztlykd CHAR(3), PRIMARY KEY (adszm), FOREIGN KEY (osztlykd) REFERENCES Osztly(osztlykd)); A tbla mdostsakor a definilt kulcsfelttelek automatikusan ellenrzsre kerlnek. PRIMARY KEY s UNIQUE esetn ez azt jelenti, hogy a rendszer nem enged olyan mdostst, illetve j sor felvtelt, amely egy mr meglv kulccsal tkzne. A kulcsfelttelek

ellenrzse csak indexekkel oldhat meg hatkonyan! Relcisma trlsre a DROP TABLE utasts szolgl: DROP TABLE tblanv; Hatsra a sma s a hozz tartoz adattbla is trldik. Relcisma mdostsa: ALTER TABLE tblanv [ADD (jelem, ... , jelem)] [MODIFY (mdosts, ... , mdosts)] [DROP (oszlop, ... , oszlop)]; Itt j elem egy "oszlopnv adattpus [felttel]", vagy egy "tblafelttel", mint a CREATE TABLE utastsban. Ugyangy mdosts egy "oszlopnv adattpus [felttel]". Pldul: ALTER TABLE Dolgoz ADD (szletsiid DATE); ALTER TABLE Dolgoz MODIFY (lakcm VARCHAR(60)); ALTER TABLE Osztly MODIFY (vezAdszm REFERENCES Dolgoz(adszm)); Ahhoz, hogy egy ltez megszortst mdostani vagy trlni tudjunk szksges, hogy a megszortsnak neve legyen. Egy megszortsnak gy adhatunk nevet, hogy a megszorts el a CONSTRAINT nv eltagot rjuk. Pldul a Dolgoz tbla nv attribtuma esetn: nv CHAR(30) CONSTRAINT NvKulcs UNIQUE Ezutn a kulcsfelttel elvethet a kvetkez utastssal: ALTER TABLE Dolgoz DROP CONSTRAINT NvKulcs; A kulcsfelttel jra rvnyesthet: ALTER TABLE Dolgoz ADD CONSTRAINT NvKulcs UNIQUE (nv); Plda: Tekintsnk egy banki adatbzist, amelyben a kvetkezket tartjuk nyilvn: fikok: nv, cm, tartalk, gyfelek: nv, gyflszm, cm, szmlk: szmlaszm, fik, tulajdonosok, egyenleg, hitelek: hitelszm, fik, adsok, sszeg. A fikokat a nevk azonostja. Az gyfeleket az gyflszmuk azonostja. A szmlkat a szmlaszm azonostja. A hiteleket a hitelszm azonostja. Mind a szmlk, mind a hitelek hozz vannak rendelve egy fikhoz. Mind a szmlk, mind a hitelek tbb gyflhez is tartozhatnak. Minden gyflnek tbb szmlja, illetve tbb hitele is lehet. Fik(fik_nv, fik_vros, tartalk) gyfl(gyfl_szm, gyfl_nv, gyfl_cm) Szmla(szmla_szm, fik_nv, egyenleg) Hitel(hitel_szm, fik_nv, sszeg) Szmlatulajdonos(gyfl_szm, szmla_szm) Ads(gyfl_szm, hitel_szm) CREATE TABLE Fik (fik_nv char(30), fik_vros char(30), tartalk int, PRIMARY KEY (fik_nv),); CREATE TABLE gyfl (gyfl_szm char(20), gyfl_nv char(30), gyfl_cm char(100), PRIMARY KEY (gyfl_szm));

CREATE TABLE Szmla (szmla_szm char(10), fik_nv char(30), egyenleg int, PRIMARY KEY (szmla_szm), FOREIGN KEY (fik_nv) REFERENCES Fik(fik_nv)); CREATE TABLE Hitel (hitel_szm char(10), fik_nv char(30), sszeg int, PRIMARY KEY (hitel_szm), FOREIGN KEY (fik_nv) REFERENCES Fik(fik_nv)); CREATE TABLE Szmlatulajdonos (gyfl_szm char(20), szmla_szm char(10), PRIMARY KEY (gyfl_szm, szmla_szm), FOREIGN KEY (gyfl_szm) REFERENCES gyfl(gyfl_szm), FOREIGN KEY (szmla_szm) REFERENCES Szmla(szmla_szm)); CREATE TABLE Ads (gyfl_szm char(20), hitel_szm char(10), PRIMARY KEY (gyfl_szm, hitel_szm), FOREIGN KEY (gyfl_szm) REFERENCES gyfl(gyfl_szm), FOREIGN KEY (hitel_szm) REFERENCES Hitel(hitel_szm)); Mveletek a relcis modellben

Adatbzisok lekrdezse: A felhasznl szmra az adatbzisokkal kapcsolatos legfontosabb feladat ltalban az adatbzis lekrdezse, ami nem ms, mint olyan programok rsa, amelyek az adatbzis aktulis elfordulsra vonatkoz klnfle krdsekre felelnek. Elszr az adatbzis lekrdezs problmjt absztrakt nzpontbl vizsgljuk, bemutatva a f lekrdez mveleteket. Relcis algebra: A relcis algebrai kifejezsek alapjait a relcik kpezik, mint operandusok (konstans relcikat is megengedve). Alkalmazva a kvetkezkben definilt opertorokat (mveleteket) a relcikra vagy egyszerbb relcis algebrai kifejezsekre, fokozatosan egyre bonyolultabb kifejezseket pthetnk fel. A relcis algebrai mveletek ngy osztlyba sorolhatk: Hagyomnyos halmazmveletek (egyests, metszet, klnbsg) relcikra alkalmazva. Mveletek, amelyek a relci egyes rszeit eltvoltjk: a kivlaszts sorokat, a vetts oszlopokat hagy el. Mveletek, amelyek kt relci sorait kombinljk. Egy mvelet, az tnevezs, amely nem befolysolja a relci sorait, de megvltoztatja a relci smjt, azaz az attribtumok neveit, illetve a relci nevt. Halmazmveletek: Uni: Legyen R tetszleges relcisma, valamint T1 s T2 tblk R felett. Ezek halmazelmleti egyestse, a T = T1 T2 tbla, azon sorokbl ll, amelyek vagy a T1 vagy a T2 tblban elfordulnak. Egy sor csak egyszer szerepel az egyestsben, mg akkor is, ha jelen van mind T1-ben, mind pedig T2-ben. Pldul:

Plda: Az ELADi(szerz, cm, kiadsiv) tblk azon knyvek adatait tartalmazzk, amelyekbl egy knyvkeresked legalbb egyet eladott az i-edik hnapban (1 i 12). Ekkor

ELAD = ELAD1 ... ELAD12 a teljes v folyamn eladott knyvek adatait tartalmazza. Metszet: Legyen R tetszleges relcisma, valamint T1 s T2 tblk R felett. Ezek halmazelmleti metszete, a T = T1 T2 tbla, azon sorokbl ll, amelyek mind a T1, mind pedig a T2 tblban elfordulnak. Pldul:

Plda: Tekintsk ismt az ELADi(szerz, cm, kiadsiv) tblkat (1 i 12). Ekkor ELAD = ELAD1 ... ELAD12 azon knyvek adatait tartalmazza, amelyekbl minden hnapban trtnt elads. Klnbsg: Legyen R tetszleges relcisma, valamint T1 s T2 tblk R felett. Ezek halmazelmleti klnbsge, a T = T1 T2 tbla, azon sorokbl ll, amelyek a T1 tblban elfordulnak, m a T2 tblban nem. Pldul:

Plda: Tekintsk megint az ELADi(szerz, cm, kiadsiv) tblkat (1 i 12). Ekkor ELAD = ELAD1 ELAD2 azon knyvek adatait tartalmazza, amelyekbl janurban adtak el, de februrban nem. Halmazmveletek tulajdonsgai: Az uni s metszet kommutatv, a klnbsg nem. A metszet kifejezhet a klnbsg segtsgvel: T1 T2 = T1 (T1 T2) Redukcis mveletek: Vetts: Adott oszlopok kivlasztsa a tblbl. Az j tbla smja a megfelel attribtumok kivlasztsval addik. Jellse: attribtumlista(tbla)

Ha az attribtumlista nem tartalmaz kulcsot, akkor a rekordok szma cskkenhet. Pldul ha kt knyv szerzje s cme megegyezik (ugyanazon knyv klnbz pldnyai), akkor a megfelel rekordok a szerz,cm(KNYV) tblban sszevonsra kerlnek. Kivlaszts: Adott felttelnek eleget tev sorok kivlasztsa a tblbl. A felttel ltalban attribtumokbl s konstansokbl felpl logikai kifejezs. Az eredmnytbla smja megegyezik az eredetivel. Jells: felttel(tbla)

Kombincis mveletek: A kombincis mvelet jele a . A NULL rtkek nem kerlnek be a kombincis tblba, csak a kzs rtkek. A sorokat, a oszlopokat jell. Az tnevezs jele a r (), ami a tblt nevezi t, de az attribtumai maradnak ugyanazok. Descartes-szorzat: Legyenek R1(A1, ... , An) s R2(B1, ... , Bm) kt tetszleges relcisma, valamint T1 dom(A1) ... dom(An) s T2 dom(B1) ... dom(Bm) tblk R1 s R2 felett. Ekkor a T1 s T2 tblk Descartes-szorzata az az R(A1, ... , An, B1, ... , Bm) sma feletti T dom(A1) ... dom(An) dom(B1) ... dom(Bm) tbla, amelyet gy kapunk, hogy T1 minden sort prostjuk T2 minden sorval. Jells: T = T1 T2. Pldul:

Ha R1 s R2 attribtumai kztt azonos nevek vannak, akkor R-ben az eredeti sma nevvel klnbztetjk meg ket (pldul R1.Ai, R2.Ai). Ha T1 s T2 sorainak szma r1 ill. r2, oszlopainak szma c1 s c2, akkor a T tblban r1r2 sor s c1+c2 oszlop van. Ha kt tbla Descartes-szorzatt kpezzk, akkor vettssel visszakaphatk az eredeti tblk: A Descartes-szorzat mveletet nem szoktk alkalmazni a gyakorlatban, hiszen az adathalmaz redundancijt nveli, az sszekapcsolsi mveletek definilsnl azonban szksgnk lesz r. Termszetes sszekapcsols: A relcis modell lnyeghez tartozik, hogy kt tbla kztt a megegyez attribtumok ltestenek kapcsolatot. ltalban tekintsk az R1(A) s R2(B) relcismkat, ahol X = A B nem res. Az R1 s R2 feletti T1 s T2 tblk termszetes sszekapcsolsa egy R(A definilunk: B) feletti T tbla, amelyet a kvetkezkpp

Vagyis, a kt tbla Descartes-szorzatbl kivlasztjuk azokat a sorokat, amelyek az R1.X s R2.X attribtumokon megegyeznek, majd a projekcival a dupln szerepl Xbeli attribtumokat csak egy pldnyban tartjuk meg (az A B halmazelmleti uni, vagyis benne az X elemei csak egyszeresen szerepelnek). Jells: T = T1 T2. Plda: A gyakorlatban ltalban kls kulcs alapjn vgeznek termszetes sszekapcsolst. Tekintsk a knyvtri nyilvntarts adatbzissmjt: KNYV (knyvszm, szerz, cm, olvasszm) OLVAS (olvasszm, nv, lakcm)

Ha most a kiklcsnztt knyvek listjt szeretnnk megkapni, de az olvasszm mellett az olvas nevnek s lakcmnek a feltntetsvel, akkor ez a KLCSN = KNYV OLVAS termszetes sszekapcsols mvelettel vgezhet el. Az eredmnyl kapott tbla a mr ismert adatbzis esetn:

Ha T = T1 T2, akkor T-bl vettssel ltalban nem llthat el T1 ill. T2. Pldul, a fenti KLCSN tbla csak a kiklcsnztt knyveket tartalmazza, mivel a ki nem klcsnztteknl a KNYV tblban az olvasszm rtke NULL. Thta-sszekapcsols: Itt a tblk Descartes-szorzatbl tetszleges felttel szerint vlasztunk ki sorokat: T = felttel (T1 T2). Jellse: T = T1 felttel T2. Plda: Tegyk fel, hogy adott ruflesget tbb raktr trol, a raktrozott mennyisget egy RAKTR (raktrkd, mennyisg) tblban, a vevk ignyeit pedig egy VEV (vevkd, igny) tblban tartjuk nyilvn. Az eladsi ajnlatok ekkor egy AJNLAT (raktrkd, mennyisg, vevkd, igny) tblba generlhatk az albbi thta-sszekapcsols mvelettel:

AJNLAT = RAKTR ignymennyisgVEV Relcik hnyadosa: Legyenek R1(A1, A2, , An, B1, B2, , Bm) valamint R2(B1, B2, , Bm) tetszleges relcismk, ahol R2 sszes attribtuma benne van R1 attribtumainak halmazban, tovbb legyenek T1 s T2 tblk R1 ill. R2 felett. Tegyk fel, hogy T2 nem res. Ekkor a T1 T2 hnyados az az R3(A1, A2, , An) sma feletti T3 tbla, amely pontosan azon t sorokbl ll, melyekre igaz, hogy a T2 tbla minden s sorra a ts sor elfordul a T1 tblban. gy is fogalmazhatnnk, hogy T1 T2 hnyados az a legnagyobb szmossg T3 tbla, amelyre T3 T2 T1. Plda:

Az T1 T2 hnyadost kifejezhetjk a mr megismert relcis algebrai mveletekkel:

Itt a msodik tag A1,A2,,An(T1) azon t sorait adja meg, amelyekre van olyan s sor T2-ben, hogy ts nincs benne T1-ben. tnevezs: Relcis algebrai mveletek alkalmazsval jabb relcikat kapunk. Ahhoz, hogy ezen relcik attribtumainak nevt szablyozni tudjuk, gyakran szksges egy olyan opertor, amelyik tnevezi a relcikat. Egy R relci tnevezshez a opertort hasznljuk. Az eredmnyrelci neve S, sorai megegyeznek R soraival, attribtumainak neve pedig balrl jobbra A1, A2, , An. Mveletek fggetlensge: Az eddig megismert relcis algebrai mveletek kzl lttuk, hogy a metszet, a hnyados s a kt sszekapcsols kifejezhet a msik hat egyests, klnbsg, kivlaszts, vetts, Descartes szorzat s tnevezs segtsgvel. Ez utbbi hat opertor mr fggetlen halmazt alkot; egyik sem fejezhet ki a msik t segtsgvel. Plda: Fik(fik_nv, fik_vros, tartalk) gyfl(gyfl_szm, gyfl_nv, gyfl_cm) Szmla(szmla_szm, fik_nv, egyenleg) Hitel(hitel_szm, fik_nv, sszeg) Szmlatulajdonos(gyfl_szm, szmla_szm) Ads(gyfl_szm, hitel_szm) Keressk meg az 1000000 Ft feletti hiteleket!:

Keressk meg az 1000000 Ft feletti hitelek hitelszmait!:

Keressk meg azoknak az gyfeleknek az gyflszmt, akik szmlt vezetnek a banknl vagy hitelt vettek fel a banktl (nem kizrva egyik a msikat)! Keressk meg azoknak az gyfeleknek az gyflszmt, akik szmlt is vezetnek a banknl s hitelt is vettek fel a banktl! Keressk meg azoknak az gyfeleknek az gyflszmt, akik hitelt vettek fel a Nvekv jlt nev fiknl!:

Termszetes sszekapcsolssal

Keressk meg azoknak az gyfeleknek az gyflszmt, akik hitelt vettek fel a Nvekv jlt nev fiknl!

Termszetes sszekapcsolssal

Keressk meg azoknak az gyfeleknek az gyflszmt, akik hitelt vettek fel a Nvekv jlt nev fiknl s semelyik fiknl nem vezetnek szmlt!

Termszetes sszekapcsolssal

Keressk meg a legnagyobb szmlaegyenleget!

Itt a msodik tag azok a szmlaegyenlegek, amelyeknl van nagyobb. Keressk meg azoknak az gyfeleknek az gyflszmt, akik szmlt vezetnek a Nvekv jlt s a Boldog regkor nev fiknl is!

Keressk meg azoknak az gyfeleknek az gyflszmt, akik szmlt vezetnek a Nvekv jlt s a Boldog regkor nev fiknl is!

Keressk meg azoknak az gyfeleknek az gyflszmt, akik az sszes budapesti fiknl vezetnek szmlt (azt feltehetjk, hogy vannak budapesti fikok)!

Kifejezsfk: A relcis algebrban tbb relcis algebrai opertort is hasznlhatunk egyetlen kifejezsben; ilyenkor egy vagy tbb opertor eredmnyre alkalmazunk egy msik opertort. Az opertorok egyms utni alkalmazst kifejezsfval szemlltethetjk. A fa levelei relcik, a bels cscsok pedig opertorok, melyeket az adott cscs gyermekeire alkalmazunk. Pldul: Keressk meg azoknak az gyfeleknek a nevt, akik hitelt vettek fel a Nvekv jlt nev fiknl!

Logikai alap lekrdezsek: Az adatbzisok lekrdezsnek ltezik ms megkzeltse is, olyan, amely algebra helyett logikn alapul. A relcis algebra segtsgvel megfogalmazott lekrdezseknl pontosan le kellett rnunk, hogy mely relcikon milyen mveleteket milyen sorrendben kell elvgezni a kvnt eredmny elrshez. A logikai alap nyelvek ezzel szemben csak azt ignylik, hogy a kvnt eredmnyre vonatkoz elvrsainkat fogalmazzuk meg. Sorkalkulus: Relcis sorkalkulus ltal meghatrozott relci:{s | (s)}. Itt s egy sorvltoz, pedig egy alkalmas logikai formula, amelyben s az egyetlen szabad vltoz. A relci azon s sorokbl fog llni, amelyeket a logikai formulba helyettestve a formula rtke igaz lesz. A logikai formula a kvetkezkppen plhet fel: alapformulk: o t R, ahol t sorvltoz s R alaprelci. o t[attribtumi] < u[attribtumj], ahol t s u sorvltozk (itt < helyett , = , = , > , is llhat). t[attribtumi] < c, ahol t sorvltoz s c konstans (itt < helyett , = , = , > , is llhat). ptkezsi szablyok:

Plda: Fik(fik_nv, fik_vros, tartalk) gyfl(gyfl_szm, gyfl_nv, gyfl_cm)

Szmla(szmla_szm, fik_nv, egyenleg) Hitel(hitel_szm, fik_nv, sszeg) Szmlatulajdonos(gyfl_szm, szmla_szm) Ads(gyfl_szm, hitel_szm) Keressk meg az 1000000 Ft feletti hiteleket! Keressk meg az 1000000 Ft feletti hitelek hitelszmait!

Keressk meg azoknak az gyfeleknek az gyflszmt, akik szmlt vezetnek a banknl vagy hitelt vettek fel a banktl (nem kizrva egyik a msikat)!

Keressk meg azoknak az gyfeleknek az gyflszmt, akik szmlt is vezetnek a banknl s hitelt is vettek fel a banktl!

Keressk meg azoknak az gyfeleknek az gyflszmt, akik hitelt vettek fel a Nvekv jlt nev fiknl!

Keressk meg azoknak az gyfeleknek az gyflszmt, akik hitelt vettek fel a Nvekv jlt nev fiknl s semelyik fiknl nem vezetnek szmlt!

Keressk meg azoknak az gyfeleknek a nevt s cmt, akik hitelt vettek fel a Nvekv jlt nev fiknl!

Keressk meg azoknak az gyfeleknek az gyflszmt, akik az sszes Budapesti fiknl vezetnek szmlt!

Biztonsgos sorkalkulus: Bizonyos sorkalkulus kifejezsek kirtkelsvel problmk lehetnek. Tekintsk pldul az kifejezst. Itt az eredmnyhalmaz tipikus esetben brzolhatatlanul nagy lesz. A problma gy is jelentkezhet, hogy a kzbens relcik nnek kezelhetetlenl nagy mretv, mg maga a vgeredmny mr nem ilyen. A problma megoldsra vezettk be a biztonsgos kifejezs fogalmt. A biztonsgos sorkalkulus csak ilyeneket enged meg. Egy adott formulra jellje dom() azoknak az attribtumrtkeknek a halmazt, amelyek a -beli alaprelcikban elfordulnak, kiegsztve a -beli konstansokkal. Egy {s | (s)} kifejezst biztonsgosnak neveznk, ha a formult kielgt minden s sor komponensei hozztartoznak dom()-hez, a formula brmely t(t) rszformuljra teljesl, hogy ha (t) igaz a t-n kvli beli szabad vltozk valamely rtke mellett, akkor t minden komponense hozztartozik dom()-hez, a formula brmely t(t) rszformuljra teljesl, hogy ha (t) hamis a t-n kvli beli szabad vltozk valamely rtke mellett, akkor t minden komponense hozztartozik dom()-hez. Oszlopkalkulus: Az oszlopkalkulus alapveten abban klnbzik a sorkalkulustl, hogy sorvltozk helyett egyszer vltozk szerepelnek benne (egybknt a felpts nagyon hasonl). A tapasztalat szerint sok lekrdezs egyszerbben fogalmazhat meg oszlopkalkulussal. Relcis oszlopkalkulus ltal meghatrozott relci: {s1, s2, , sk | (s1, s2, , sk)}. Itt s1, s2, , sk oszlopvltozk, pedig egy alkalmas logikai formula, amelyben csak s1, s2, , sk szabad vltozk. A relci azon (s1, s2, , sk) sorokbl fog llni, amelyeket a logikai formulba helyettestve a formula rtke igaz lesz. A logikai formula a kvetkezkppen plhet fel: alapformulk: o (t1, t2, , tk) R, ahol t1, t2, , tk oszlopvltozk s R alaprelci. o ti < tj, ahol ti s tj oszlopvltozk (itt < helyett , = , = , > , is llhat). o ti < c, ahol ti oszlopvltoz s c konstans (itt < helyett , = , = , > , is llhat). ptkezsi szablyok:

Biztonsgos oszlopkalkulus: Akr a sorkalkulusnl, bizonyos oszlopkalkulus kifejezsek kirtkelsvel is lehetnek problmk. Ezek megoldsra itt is bevezethet a biztonsgos kifejezs fogalma. A biztonsgos oszlopkalkulus csak ilyeneket enged meg. Egy {s1, s2, , sk | (s1, s2, , sk)} kifejezst biztonsgosnak neveznk, ha a formult kielgt minden (s1, s2, , sk) rendezett k-as esetn s1, s2, , sk hozztartoznak dom()-hez, a formula brmely t(t) rszformuljra teljesl, hogy ha (t) igaz a t-n kvli beli szabad vltozk valamely rtke mellett, akkor t hozztartozik dom()-hez, a formula brmely t(t) rszformuljra teljesl, hogy ha (t) hamis a t-n kvli beli szabad vltozk valamely rtke mellett, akkor t hozztartozik dom()-hez. Plda: Fik(fik_nv, fik_vros, tartalk) gyfl(gyfl_szm, gyfl_nv, gyfl_cm) Szmla(szmla_szm, fik_nv, egyenleg) Hitel(hitel_szm, fik_nv, sszeg) Szmlatulajdonos(gyfl_szm, szmla_szm) Ads(gyfl_szm, hitel_szm) Keressk meg az 1000000 Ft feletti hiteleket!

Keressk meg azoknak az gyfeleknek az gyflszmt, akiknek 1000000 Ft feletti hitelk van!

Keressk meg azoknak az gyfeleknek az gyflszmt, akik hitelt vettek fel a Nvekv jlt nev fiknl! A hitel sszegt is adjuk meg!

Kevsb preczen:

Keressk meg azoknak az gyfeleknek az gyflszmt, akik szmlt vezetnek vagy hitelt vettek fel a Nvekv jlt nev fiknl (nem kizrva egyik a msikat)!

Keressk meg azoknak az gyfeleknek az gyflszmt, akik az sszes budapesti fiknl vezetnek szmlt!

Kifejezer: Ttelszeren: A relcis algebra, a biztonsgos sorkalkulus s a biztonsgos oszlopkalkulus a kifejezer szempontjbl ekvivalensek. Normalizls I Redundns relcisma: Tekintsk egy vllalat dolgozit nyilvntart DOLGOZ (Nv, Adszm, Cm, Osztlykd, Osztlynv, VezAdszm) smt, ahol VezAdszm a vllalati osztly vezetjnek adszmt jelenti.

Elny: egyetlen tblban a dolgozk s az osztlyok adatai is nyilvn vannak tartva. Htrny: redundancia, mivel Osztlynv s VezAdszm tbb helyen szerepel. A redundancia aktualizlsi anomlikat okozhat: Mdosts esetn: Ha egy osztly neve vagy vezetje megvltozik, tbb helyen kell a mdostst elvgezni, ami hibkhoz vezethet. j felvtel esetn: o j dolgoz felvtelnl elfordulhat, hogy az osztlynevet mshogy adjk meg (pldul "Tervezsi" helyett "tervezsi" vagy "Tervez"). o Ha j osztly ltesl, amelynek mg nincsenek alkalmazottai, akkor ezt csak gy tudjuk felvenni, ha a nv, adszm, cm attribtumokhoz NULL rtket rendelnk. Ksbb, ha lesznek alkalmazottak, ez a rekord flslegess vlik. Trls esetn: Ha egy osztly valamennyi dolgozjt trljk, akkor az osztlyra vonatkoz informcik is elvesznek. Megolds: a relcisma felbontsa kt smra DOLG (Nv, Adszm, Cm, Osztlykd) OSZT (Osztlykd, Osztlynv, VezAdszm)

Funkcionlis fggsg: A funkcionlis fggsg bevezetsnek egyik motivcija a redundancik felismerse. Pldul a korbban vizsglt DOLGOZ (Nv, Adszm, Cm, Osztlykd, Osztlynv, VezAdszm) relci minden olyan sorban, ahol megjelenik egy Osztlykd, trvnyszeren megjelenik ugyanaz az Osztlynv s ugyanaz a VezAdszm is, ami nyilvn felesleges. Ezt a felismersnket a kvetkezkppen is megfogalmazhatjuk: a DOLGOZ relcismban az Osztlykd attribtum egyrtelmen meghatrozza az Osztlynv s VezAdszm attribtumokat. A jelensg pontos matematikai lersa a kvetkez: Legyen R(A1,...,An) egy relcisma, s P valamint Q az {A1,...,An} attribtumhalmaz rszhalmazai. P-tl funkcionlisan fgg Q (jellsben P Q), ha brmely R feletti T tbla esetn valahnyszor kt sor megegyezik P-n, akkor megegyezik Q-n is, vagyis brmely ti T s tj T esetn ti(P) = tj(P) ti(Q) = tj(Q) Elnevezsek: A P Q fggst trivilisnak nevezzk, ha Q P, ellenkez esetben nem trivilis fggsgrl beszlnk A P Q fggst teljesen nemtrivilisnak nevezzk, ha Q P= A gyakorlatban ltalban teljesen nemtrivilis fggsgeket adunk meg. Plda: A korbban vizsglt DOLGOZ (Nv, Adszm, Cm, Osztlykd, Osztlynv, VezAdszm) sma jellemz fggsgei: f1: {Adszm} {Nv, Cm, Osztlykd} f2: {Osztlykd} {Osztlynv, VezAdszm} Pldk tovbbi fggsgekre: f3: {Adszm} {Osztlynv} f4: {Cm, Osztlykd} {VezAdszm} Egy raktr kszlett nyilvntart RAKTR (cikkszm, megnevezs, egysgr, mennyisg, sszeg)

sma esetn az albbi fggsgeket llapthatjuk meg: {cikkszm} {megnevezs, egysgr} {egysgr, mennyisg} {sszeg} Egy funkcionlis fggsg nem az aktulis tbla, hanem a sma tulajdonsga. Ha az attribtumhalmazra megllaptunk egy funkcionlis fggsget, akkor ez tulajdonkppen egy felttelt jelent az aktulis tblra nzve. Ha pldul a DOLGOZ (Nv, Adszm, Cm, Osztlykd, Osztlynv, VezAdszm) smban megllaptjuk az Adszm Cm funkcionlis fggsget, akkor ezzel megtiltjuk, hogy egy szemlyhez tbb lakcmet is trolhassunk. A "funkcionlis" kifejezs arra utal, hogy ha a P Q fggsg fennll, akkor adott tbla esetn ltezik egy dom(P) dom(Q) fggvny, amely P minden konkrt rtkhez egyrtelmen meghatrozza Q rtkt. Ez a fggvny ltalban csak elmletileg ltezik, pl. az Adszm Cm fggsg esetn nem tudunk olyan algoritmust adni, amely az adszmbl a lakcmet ellltan. Az elbbi RAKTR (cikkszm, megnevezs, egysgr, mennyisg, sszeg) sma esetn azonban az {egysgr, mennyisg} {sszeg} fggvny mr szmthat, mivel egysgr mennyisg = sszeg teljesl. A funkcionlis fggsg s a szuperkulcs fogalmak kapcsolatra mutat r a kvetkez: llts: Legyen R(A) egy relcisma. Most egy K ( A) attribtumhalmaz akkor s csak akkor szuperkulcs, ha K A. Bizonyts: A szuperkulcs s a funkcionlis fggsg defincija alapjn nyilvnval. Relcisma s adattbla fogalma a funkcionlis fggsgeket is figyelembe vve: Relcismnak neveznk egy R = (A, F) prt, ahol A={A1,...,An} attribtumhalmaz s F={f1 ,...,fm} az A-n definilt funkcionlis fggsgek egy halmaza (fi: Pi Qi, i = 1,...,m). A fggsgi halmaz olyan kvetelmnyrendszert definil, amit eddig csak az attribtumok informlis lersval adhattunk meg. Adattbla (relci) R felett: T dom(A1) ... dom(An), amely eleget tesz az F-beli fggsgeknek. Jells: R = (A, F) helyett tovbbra is hasznljuk az egyszerbb R(A) jellst, ha a funkcionlis fggsgeket nem kvnjuk hangslyozni. Plda: A korbban vizsglt DOLGOZ (Nv, Adszm, Cm, Osztlykd, Osztlynv, VezAdszm) smhoz tartoz fggsgi halmaz F = {f1, f2}. Az f3 s f4 fggsgeket nem vettk hozz Fhez, mert rezheten kvetkezmnyeik f1-nek s f2-nek. Legyen R egy relcisma s F funkcionlis fggsgek egy halmaza R-en. Azt mondjuk, hogy egy X Y funkcionlis fggsg az F fggsgi halmaz logikai kvetkezmnye, ha minden olyan R feletti T tbla esetn, amelyre F minden fggsge teljesl, X Y is igaz. Jells: Azoknak a funkcionlis fggsgeknek a halmazt, amelyek az F fggsgi halmaz logikai kvetkezmnyei, az F lezrtjnak nevezzk s F+-szal jelljk: Alapfeladatok: egy F funkcionlis fggsg halmaz F+ lezrst meghatrozni, illetve egy adott X Y funkcionlis fggsgrl eldnteni, hogy F+-ban van-e.

Hrom egyszer kvetkeztetsi szablyt, amelyek arrl szlnak, hogy bizonyos funkcionlis fggsg teljeslsbl milyen ms funkcionlis fggsgek teljeslsre kvetkeztethetnk: A1. Reflexivits: Ha Y X, akkor X Y. o Bizonyts: Tekintsk egy R feletti tbla kt tetszleges ti s tj sort. Most ti(X)=tj(X) s Y

X esetn ti(Y) = tj(Y) trivilisan teljesl.

A2. Bvts: Ha X Y, akkor X ZY Z. o Bizonyts: Tekintsk egy R feletti tbla kt tetszleges ti s tj sort. Ha most ti(X Z) = tj(X Z), akkor nyilvn ti(X) = tj(X) s ti(Z) = tj(Z). m ekkor X Z)=tj(Y Y miatt ti(Y) = tj(Y) is fennll. Innen pedig ti(Z) = tj(Z) miatt ti(Y

Z) addik. A3. Tranzitivits: Ha X Y s Y Z, akkor X Z. o Bizonyts: Tekintsk egy R feletti tbla kt tetszleges ti s tj sort. Ha most ti(X) = tj(X), akkor X Y miatt ti(Y) = tj(Y) teljesl. m ekkor Y Z miatt ti(Z) = tj(Z) is fennll. Innen az llts addik. Ezeket a szablyokat Armstrong aximknak nevezzk (itt nem szigor rtelemben vett matematikai aximkrl van sz, az elnevezsnek inkbb trtneti okai vannak). Vilgos, hogy ha egy F funkcionlis fggsg halmazbl egy X Y funkcionlis fggsg levezethet az Armstrong aximk segtsgvel, akkor Ha egy F funkcionlis fggsg halmaznak egy X Y funkcionlis fggsg logikai kvetkezmnye, akkor az levezethet F-bl az Armstrong aximk segtsgvel. Bizonyts: Sztvgsi szably: Ha X {B1,...,Bk}, akkor X B1, ..., X Bk (Bi A attribtumok, i = 1,...,k). Bizonyts: A reflexivits miatt {B1,...,Bk} Bi, majd a tranzitivitsbl X Bi addik (i = 1,...,k). Egyestsi szably: Ha X B1, ..., X Bk , akkor X {B1,...,Bk} (Bi A attribtumok, i = 1,...,k). Bizonyts: Beltjuk, hogy ha X Y s X Z, akkor X (Y Z). A bvts miatt (X X) (Y X) s (X Y) (Z Y), ahonnan tranzitivitssal X (Y Z). Legyen R(A,F) egy relcisma s X A. Azon Ai A attribtumok halmazt, amelyekre XAi levezethet F-bl az Armstrong aximk segtsgvel, az X attribtumhalmaznak az F funkcionlis fggsgi halmaz szerinti lezrtjnak nevezzk s X+-szal jelljk. Az F funkcionlis fggsg halmazbl az X Y fggsg akkor s csak akkor vezethet le az Armstrong aximk segtsgvel, ha Y X+. Bizonyts: Legyen Y X+ s Y=A1 A2An, ahol Ai-k attribtumok. X+ defincija szerint XAi levezethet az Armstrong aximk segtsgvel minden 1 i n esetn. gy az egyestsi szably szerint X Y is levezethet az Armstrong aximk segtsgvel. Most tegyk fel, hogy az X Y fggsg levezethet az Armstrong aximk segtsgvel s legyen Y=A1A2An, ahol Ai-k attribtumok. A sztvgsi szably szerint ekkor X Ai levezethet az Armstrong aximk segtsgvel minden 1 i n esetn. Kvetkezskppen Y X+. Attribtumhalmaz lezrtja: Megmutatjuk, hogy egy X attribtum halmaz F funkcionlis fggsg halmaz szerinti X+ lezrtja hatkonyan kiszmthat. Algoritmus X+ szmtsra: Kpezzk az X = X(0) X(1) X(2) ... halmazsorozatot, ahol X(i)-bl X(i+1) ellltsa a kvetkezkppen trtnik:

Keressnk olyan F-beli Y Z fggsget, amelyre Y rsze X(i)-nek, de Z nem rsze X(i)-nek! Ha tallunk ilyeneket, akkor legyen X(i+1) az a halmaz, amely egyrszt X(i) attribtumaibl, msrszt a tallt fggsgek jobb oldaln lv attribtumokbl ll. Ha nem, akkor megllunk (s azt lltjuk, hogy X+= X(i)). Mivel az attribtumok halmaza vges, gy az eljrs nyilvn vges sok lpsben vget r. Az algoritmus (egy lehetsges) pszeudokdja a kvetkez:

Ttel: A LEZRS(R,F,X) algoritmus helyesen szmtja ki X+-t. Bizonyts: Elszr teljes indukcival beltjuk, hogy ha egy Ak attribtum LEZRS(R,F,X) sorn valamikor belekerl mondjuk X(j)-be, akkor Ak valban X+-ban van. Alapeset: j = 0. Ekkor Ak X, gy a reflexivits szerint Ak X+. Indukcis lps: Tegyk fel, hogy j > 0 s X(j-1) csak X+-beli attribtumokat tartalmaz. Az Ak attribtum azrt kerlt bele X(j)be, mert F tartalmaz egy Y Z fggsget, ahol Y X(j-1) s Ak Z. Az indukcis feltevs szerint Y X+. Most X Y levezethet az Armstrong aximk segtsgvel. Alkalmazzuk a tranzitivitst: X Y s Y Z X Z. Majd a sztvgsi szablyt: mivel Ak Z, gy X Ak. Ez pedig azt jelenti, hogy Ak X+. Be kell mg ltnunk, hogy ha Ak X+, akkor Ak benne van a LEZRS(R,F,X) algoritmus ltal eredmnyl adott halmazban. Tegyk fel, hogy Ak X+, s legyen X(i) az algoritmus ltal eredmnyl adott halmaz. Most X(i) = X(i+1). Tekintsk a kvetkez, kt sorbl ll T relcit:

Megmutatjuk, hogy F sszes funkcionlis fggsge teljesl T-n. Indirekt tegyk fel, hogy az gy megadott T megsrti valamelyik F-beli U V fggsget, azaz U X(i) de V nem rszhalmaza X(i)-nek. Ekkor azonban az algoritmus mg nem llhatott meg, mert X(i+1) nem egyezik meg X(i)-vel. Ellentmondsra jutottunk, ezrt F sszes funkcionlis fggsge teljesl T-n. Msrszt mivel Ak X+, ezrt az X Ak fggsg levezethet F-bl az Armstrong aximk segtsgvel. m az Armstrong aximk segtsgvel levezethet fggsgek logikai kvetkezmnyei F-nek, gy minden olyan relcipldnyon, ahol F teljesl, ott X Ak is igaz kell, hogy legyen. Azonban ez T-n csak gy lehetsges, ha Ak X(i). Ezzel a LEZRS(R,F,X) algoritmus helyessgnek bizonytsa teljes. Plda: Tekintsk az R(Z,F) smt, ahol Z = {A, B, C, D, E}, s F az albbi fggsgeket tartalmazza: {C} {A} {B} {C,D} {D,E} {C} Hatrozzuk meg a {B}+ halmazt!

Mindezek utn annak bizonytsa, hogy az Armstrong aximk segtsgvel egy adott fggsg halmazbl kvetkez brmely fggsg formlisan levezethet, mr egyszer. Tekintsnk egy R relcismt az F fggsgi halmazzal, s legyen X Ak olyan fggsg, amely kvetkezik F-bl (itt Ak egyetlen attribtum). Ha Ak benne van a LEZRS(R,F,X) algoritmus ltal kiszmtott X+ halmazban, akkor X Ak termszetesen levezethet F-bl az Armstrong aximk segtsgvel. Ha viszont Ak nincs benne a LEZRS(R,F,X) algoritmus ltal kiszmolt X+ halmazban, akkor a mr korbban bevezetett T relcinak van kt olyan sora, melyek megegyeznek X-en, de klnbznek az Ak attribtumon, gy F X Ak nem lehet igaz, ellentmonds. Fggsghalmaz lezrsa: Vegyk az A attribtumhalmaz sszes rszhalmazt. Minden X rszhalmazhoz lltsuk el X+-t. Valamennyi Y X+ rszhalmazra az X Y fggsget + vegyk hozz F -hoz. Fggsghalmazok ekvivalencija: A LEZRS eljrs jl hasznlhat funkcionlis fggsgi rendszerek ekvivalencijnak tesztelsre is. Legyen F s G funkcionlis fggsgek kt csaldja. Azt mondjuk, hogy F s G ekvivalensek, ha F+ = G+. F s G ekvivalencijnak eldntshez elg ellenrizni, hogy minden F-beli X Y fggsg hozztartozik-e G+-hoz s minden G-beli W Z fggsg hozztartozik-e F+-hoz. Ez a kvetkezkppen lthat be. Ha ezek kzl valamelyik nem teljesl, mondjuk egy F-beli X Y fggsg nincs G+-ban, akkor F+ s G+ nyilvn nem egyezhetnek meg. Ha viszont F minden X Y fggsge benne van G+-ban, akkor egy F+-beli U V fggsg levezetst gy kapjuk meg G-bl, hogy az U V fggsg F-bl trtn levezetshez hozzvesszk a felhasznlt F-beli fggsgek G-bl trtn levezetst. gy F + G+ teljesl. Hasonlan, ha G minden W Z fggsge benne van F+- ban, akkor egy G+-beli U V fggsg levezetst gy kapjuk meg F-bl, hogy az U V fggsg G-bl trtn levezetshez hozzvesszk a felhasznlt G-beli fggsgek F-bl trtn levezetst. gy G+ F+ is fennll. Annak eldntshez pedig, hogy mondjuk egy F-beli X Y fggsg hozztartozik-e G+-hoz elg ellenrizni, hogy az X attribtumhalmaz G szerinti X+(G) lezrtja tartalmazza-e Y-t. Minimlis feds: Egy specilis ekvivalens funkcionlis fggsgi rendszer hasznos lesz a ksbbiekben: A G funkcionlis fggsgi halmazt az F funkcionlis fggsgi halmaz minimlis fedsnek nevezzk, ha G ekvivalens F-fel, tovbb

A G-beli funkcionlis fggsgek X Ak alakak, ahol Ak egy attribtum s Ak X. A G-beli funkcionlis fggsgek bal oldalai minimlisak, vagyis brmely {X Ak} G esetn X brmely Y valdi rszhalmazra ((G {X Ak}) {Y Ak})+ G+. A G-bl nem hagyhat el funkcionlis fggsg, azaz brmely {X Ak} G esetn (G {X Ak})+ valdi rszhalmaza G+-nak.

Minden F funkcionlis fggsgi halmaznak van minimlis fedse, a kvetkez eljrs ltrehoz egyet:

Az els for ciklus vgrehajtsa utn minden G-beli funkcionlis fggsg jobb oldala egyelem. A kvetkez for ciklusban a bal oldalakat minimalizljuk. Vgl az utols for ciklusban a G-beli funkcionlis fggsgek kzl elhagyjuk a feleslegeseket. Plda: Tekintsk az R(Z,F) smt, ahol Z = {A, B, C, D}, s F az albbi fggsgekbl ll: {A,B} {C,D} {A,C} {B,D} {C} {A,B} Az els for ciklus vgrehajtsa utn G az albbi fggsgekbl ll: {A,B} {C} {A,B} {D} {A,C} {B} {A,C} {D} {C} {A} {C} {B} {C}+ = {A,B,C,D} miatt az {A,C} {B} s {A,C} {D} fggsgekben az A attribtum felesleges, ezrt elhagyhat. Ezutn G mr csak az albbi fggsgekbl ll: {A,B} {C} {A,B} {D} {C} {A} {C} {B} {C} {D} Vgl {A,B} {C} s {C} {D} miatt az {A,B} {D} fggsg felesleges, ezrt elhagyhat. gy a G minimlis feds a kvetkez fggsgekbl ll: {A,B} {C} {C} {A} {C} {B} {C} {D} Kulcsok: llts: Legyen R(A,F) egy relcisma s K A. Most K akkor s csak akkor szuperkulcs, ha K+= A. Bizonyts: K A pontosan akkor teljesl, ha K+ = A. Kulcs meghatrozsa: Elszr legyen K = A, ez mindig szuperkulcs. Ezutn K-bl sorra elhagyunk attribtumokat, s mindig ellenrizzk, hogy K+ = A teljesl-e.

Plda: Tekintsk az R(Z,F) smt, ahol Z = {A, B, C, D, E}, s F az albbi fggsgeket tartalmazza: {C} {A} {B} {C,D} {D,E} {C} Jl lthat, hogy {B,E} szuperkulcs. Megvizsgljuk, hogy Z-bl B-t, illetve E-t elhagyva szuperkulcsot kapunk-e: Vilgos, hogy {A, C, D, E}+ = {A, C, D, E}, {A, B, C, D}+ = {A, B, C, D}. Ltszik, hogy egyik esetben sem kaptunk szuperkulcsot, amibl az kvetkezik, hogy minden kulcsnak tartalmaznia kell B-t s E-t, vagyis az egyetlen kulcs {B,E}. A kvetkez szrevtel valamennyire behatrolja a kulcsok keressnl szba jv attribtumhalmazokat:

Az imnti R(Z,F) smra alkalmazva ezt az sszefggst kapjuk, hogy U = {B, C, D, E} s V = {A, C, D}, gy brmely K kulcsra {B,E} K {B, C, D, E}. Normalizls II Relcisma felbontsa: Mint mr utaltunk r, az anomlik megszntetsnek egy lehetsges mdja a relcik alkalmas felbontsa. Egy relcisma felbontsa azt jelenti, hogy a sma attribtumait sztosztjuk gy, hogy ezltal kt j relci smjt alaktjuk ki bellk. Legyen R(A) egy relcisma, s X,Y A gy, hogy X Y = A. Ekkor az R(A) sma felbontsa X, Y szerint az R1(X) s R2(Y) smkra a kvetkezkppen rtelmezhet: Az R sma feletti tetszleges T tblt az R1 s R2 feletti T1 s T2 tblkkal helyettestjk gy, hogy T1 = X (T) s T2 = Y (T). Egy felbontst hsgesnek neveznk, ha brmely R feletti T tbla esetn T = T1 T2, vagyis a felbonts utn add tblkat termszetes sszekapcsols mvelettel sszekapcsolva az eredeti tblt kapjuk vissza. Plda - hsges felbonts:

Vilgos, hogy itt DOLGOZ = DOLG OSZT. Plda nem hsges felbonts: Nem hsges felbontst kapunk, ha a DOLGOZ smt a VezAdszm mentn bontjuk fel: DOLG (Nv, Adszm, Cm, VezAdszm) OSZT (Osztlykd, Osztlynv, VezAdszm) Ugyanis a DOLGOZ definilsakor nem ktttnk ki VezAdszm Osztlykd fggst, ezzel megengedtk, hogy egy szemly tbb osztlynak is vezetje legyen. Ha pldul Takcs dolgoz az 1-es osztlyon dolgozik, de ennek vezetje azonos az 5-s osztly vezetjvel, akkor a DOLG OSZT tblban Takcs ktszer fog szerepelni: egyszer az 1-es, egyszer az 5s osztly dolgozjaknt

A gyakorlatban rendszerint a Heath ttel alapjn vgznk felbontst: Ha az R(A) smnl A = B C D, ahol B, C, D diszjunktak s nem resek, tovbb C D, akkor az R1(B C) s R2(C D) felbonts hsges. Bizonyts: Legyen T egy tetszleges R feletti tbla, T1 s T2 pedig a megfelel sztbontott tblk. Nyilvn T T1 T2, ezrt csak azt kell megmutatni, hogy T1 T2 T.

Teht a t1 s t2 egyestsvel keletkez sor megegyezik t(1)-gyel, vagyis szerepel T-ben. Plda: A DOLGOZ(Nv, Adszm, Cm, Osztlykd, Osztlynv, VezAdszm) sma felbontsa a DOLG (Nv, Adszm, Cm, Osztlykd) OSZT (Osztlykd, Osztlynv, VezAdszm) smkra hsges, mert az {Osztlykd} {Osztlynv, VezAdszm} fggsg teljesl. Egy felbonts hsgessgre vonatkoz, knnyen ellenrizhet szksges s elgsges felttelt fogalmaz meg a kvetkez ttel (nem bizonytjuk): Az R(A) relcisma R1(A1) s R2(A2) smkra val felbontsa akkor s csak akkor hsges, ha (A1 A2) (A1 A2) vagy (A1 A2) (A2 A1). Fggsgrz felbonts: A fggsgeket is figyelembe vve, egy R(A,F) relcisma felbontsa X, Y szerint az R1(X, F1) s R2(Y, F2) smk, ahol F1 gy vlasztand meg, hogy F1+ az F+ azon rszhalmazval legyen egyenl, amely csak X-beli attribtumokat tartalmaz, F2+ pedig az F+ azon rszhalmazval legyen egyenl, amely csak Y-beli attribtumokat tartalmaz. Egy R(A,F) smnak az R1(X, F1) s R2(Y, F2) smkra val felbontst fggsgrznek nevezzk, ha (F1 F2)+ = F+. Egy hsges felbonts nem felttlenl fggsgrz, mint azt az albbi plda mutatja: Tegyk fel, hogy egy vllalat azzal a szokatlan felttellel l, hogy minden dolgoz a hozz legkzelebb lak osztlyvezethz kell hogy tartozzon. Ekkor a DOLGOZ smban a Cm VezAdszm fggs lp fel. A felbonts sorn ez a fggsg elvsz, de ez nem vltoztat azon a tnyen, hogy a hsgessg miatt a DOLG s OSZT tblkbl termszetes sszekapcsols mvelettel mindig visszallthat az eredeti DOLGOZ tbla. A relcis smk normlformra hozsnak clja, hogy a mr emltett anomlikat elkerljk. Tbb klnbz normlformt vezettek be az adatbzis elmlet fejldse sorn, a kvetkezkben ezek kzl tekintjk t a legfontosabbakat. 1. Normlforma (1NF): Azt mondjuk, hogy egy relcisma 1NF-ben van, ha az attribtumok rtktartomnya csak egyszer (atomi) adatokbl ll (nem tartalmaz pldul listt vagy struktrt). Mivel az 1NF felttel teljeslst mr a relcis modell defincijnl kiktttk, ezrt minden smt eleve 1NFnek tteleznk fel. 2. Normlforma (2NF): Legyen X, Y A, s X Y. Azt mondjuk, hogy X-tl teljesen fgg Y, ha X-bl brmely attribtumot elhagyva a fggsg mr nem teljesl, vagyis brmely X X valdi tartalmazs esetn X Y mr nem igaz. Megjegyzs: Ha K kulcs, akkor A teljesen fgg K-tl.

Egy attribtumot elsdleges attribtumnak neveznk, ha szerepel a relcisma valamely kulcsban, ellenkez esetben msodlagos attribtumrl beszlnk. Vagyis ha a sma kulcsai K1, ..., Kr, akkor K = K1 ... Kr az elsdleges attribtumok halmaza, A K pedig a msodlagos attribtumok halmaza. Azt mondjuk, hogy egy R(A,F) relcisma 2NF-ben van, ha minden msodlagos attribtum teljesen fgg brmely kulcstl. Megjegyzs: Ha minden kulcs egy attribtumbl ll, akkor a sma 2NF-ben van. Plda: DOLGOZ(Nv, Adszm, Cm, Osztlykd, Osztlynv, VezAdszm) Ha a smban nincs msodlagos attribtum, akkor 2NF-ben van. Plda: VOLN(gkvez, rendszm, indul, rkezik) Ha a sma nincs 2NF-ben, akkor a tblban redundancia lphet fel. Tegyk fel ugyanis, hogy valamely K kulcs L rszhalmaztl funkcionlisan fgg msodlagos attribtumok egy B halmaza: L B. Ekkor a tblban tbb olyan sor lehet, amelyek L-en megegyeznek, gy ezek szksgkppen B-n is megegyeznek, ami a B rtkek redundns trolst eredmnyezi. 2NF-re hozs: Ha valamely K kulcsra L K s L B, akkor a smt felbontjuk az L B fggsg szerint (itt B legyen az sszes L-tl fgg msodlagos attribtum halmaza). Legyen C = A (L B), ekkor az R(A) smt az R1(C L) s R2(L B) smkkal helyettestjk. A Heath ttel alapjn a felbonts hsges. Az eljrst addig ismteljk, amg az sszes relcisma 2NF-ben nem lesz. Plda: Tegyk fel, hogy egy vllalat dolgozi klnfle projekteken dolgoznak meghatrozott heti raszmban. Ezt a DOLGPROJ (Nv, Adszm, Projektkd, ra, Projektnv, Projekthely) smval tartjuk nyilvn; egy megfelel tbla a kvetkez:

Fggsgek: Adszm Nv Projektkd {Projektnv, Projekthely} {Adszm, Projektkd} ra A smban {Adszm, Projektkd} kulcs, mivel ettl minden attribtum fgg, ugyanakkor akr Adszm-ot, akr Projektkd-ot elhagyva ez mr nem teljesl. A sma nincs 2NF-ben, mert pl. Nv csak Adszm-tl fgg, vagyis nem fgg teljesen a kulcstl. 2NF-re hozs: 1. lps: Felbontssal az Adszm Nv fggsg levlasztsa: o DOLG (Nv, Adszm) o DPROJ (Adszm, Projektkd, ra, Projektnv, Projekthely)

38 o Az gy kialakult sma a Projektkd {Projektnv, Projekthely} fggsg miatt mg mindig nincs 2NF-ben. 2. lps: jabb felbonts a DPROJ smra: o DOLG (Nv, Adszm) o PROJ (Projektkd, Projektnv, Projekthely) o DP (Adszm, Projektkd, ra) o Itt mr mindhrom sma 2NF-ben van.

3. Normlforma (3NF): Legyen X, Z A, s X Z. Azt mondjuk, hogy X-tl tranzitvan fgg Z, ha van olyan Y A amelyre X Y s Y Z, X nem fgg Y-tl, az Y Z fggs teljesen nemtrivilis. Ellenkez esetben azt mondjuk, hogy Z kzvetlenl fgg X-tl. Az "X nem fgg Y-tl" s az "Y Z fggs teljesen nemtrivilis" kiegszt felttelek nem csak a trivilis esetek kiszrshez kellenek, hanem a ksbbi lltsok szempontjbl is lnyegesek. Azt mondjuk, hogy egy R(A,F) relcisma 3NF-ben van, ha minden msodlagos attribtuma kzvetlenl fgg brmely kulcstl. Ha a sma nincs 3NF-ben, akkor a tblban redundancia lphet fel.

Tegyk fel ugyanis, hogy valamely K kulcstl tranzitvan fgg a msodlagos attribtumok egy B halmaza, vagyis valamely Y attribtumhalmazra K Y s Y B, ahol K nem fgg Y-tl s Y B res. Mivel Y-tl nem fgg K, gy Y nem szuperkulcs, vagyis a tblban tbb olyan sor lehet, amelyek Y-on megegyeznek. Ezek a sorok az Y B fggsg miatt szksgkppen B-n is megegyeznek, ami a B rtkek redundns trolst eredmnyezi. 3NF-re hozs: Ha valamely K kulcsra K Y B tranzitv fggs fennll, akkor a smt felbontjuk az Y B fggsg szerint (itt B legyen az sszes Y-tl fgg msodlagos attribtum halmaza). Legyen C = A (Y B), ekkor az R(A) smt az R1(C Y) s R2(Y B) smkkal helyettestjk. Heath ttele alapjn a felbonts hsges. Az eljrst addig ismteljk, amg az sszes relcisma 3NF-ben nem lesz. Plda: Egy vllalat dolgozit s az osztlyokat tartjuk nyilvn az albbi, mr ismert smban: DOLGOZ (Nv, Adszm, Cm, Osztlykd, Osztlynv, VezAdszm). Fggsgek: Adszm {Nv, Cm, Osztlykd} Osztlykd {Osztlynv, VezAdszm} A sma 2NF-ben van, mert egyetlen kulcs az Adszm, amely egyelem. Ugyanakkor nincs 3NF-ben, mert pldul az Osztlynv tranzitvan fgg az Adszmtl: Adszm Osztlykd Osztlynv. 3NF-re hozs: felbonts az Osztlykd {Osztlynv, VezAdszm} fggsg szerint: DOLG (Nv, Adszm, Cm, Osztlykd) OSZT (Osztlykd, Osztlynv, VezAdszm) A kvetkez algoritmus tetszleges R(A,F) relcismt hsges s fggsgrz mdon felbont 3NF-ben lv relcismkra. Egy relcisma felbontst tbb smra, a felbonts hsgessgt, illetve fggsgrzst a kt smra trtn felbontsnl elmondottakhoz hasonlan definilhatjuk.

llts: Ha egy R(A,F) relcisma 3NF-ben van, akkor 2NF-ben is van. Bizonyts: Indirekt tegyk fel, hogy az R sma 3NF-ben van, s mg sincs 2NF-ben. Ez utbbi azt jelenti, hogy valamely Ai msodlagos attribtum nem teljesen fgg valamely K kulcstl,

vagyis van olyan L K, amelyre L Ai. Ekkor viszont K-tl tranzitven fgg Ai, ugyanis K L Ai, s L-tl nem fgg K (mivel K kulcs, teht minimlis), valamint Ai nem eleme L-nek (mivel msodlagos attribtum). A 3NF egy ekvivalens megfogalmazst jelenti a kvetkez llts: Egy R(A,F) relcisma akkor s csak akkor van 3NF-ben, ha brmely nemtrivilis L Ai fggs esetn vagy L szuperkulcs, vagy Ai elsdleges attribtum. Bizonyts: Indirekt tegyk fel, hogy az R sma 3NF-ben van, de van olyan nemtrivilis L Ai fggs, hogy L nem szuperkulcs, s Ai msodlagos attribtum. Ekkor viszont a K L Ai tranzitv fggs fennll (K kulcs), ami ellentmonds. Indirekt tegyk fel, hogy R-re teljesl a fenti felttel, de nincs 3NF-ben, vagyis valamely K kulcsra s Ai msodlagos attribtumra K L Ai tranzitv fggs teljesl. Mivel K nem fgg L-tl, gy L nem szuperkulcs, ezrt az L Ai fggs ellentmond a felttelnek. Boyce-Codd normlforma (BCNF): Azt mondjuk, hogy egy R(A,F) relcisma BCNF-ben van, ha brmely nemtrivilis L B fggs esetn L szuperkulcs. Megjegyzs: Ha R(A,F) relcisma attribtumhalmaza ktelem, akkor a sma BCNF-ben van. Legyen ugyanis A = {A1,A2}. Ekkor F-re a kvetkez lehetsgek vannak: , {A1A2}, {A2A1}, {A1A2, A2A1}. Vilgos, hogy egyik esetben sem srl a BCNF felttel. llts: Ha egy R(A,F) relcisma BCNF-ben van, akkor 3NFben is van. Bizonyts: Indirekt tegyk fel, hogy a sma BCNF-ben van, de nincs 3NF-ben, vagyis van olyan K L B tranzitv fggs, ahol K kulcs. A tranzitv fggs defincijbl addan ekkor L-tl nem fgg K (ezrt L nem szuperkulcs), tovbb L B nemtrivilis, ami ellentmond a BCNF felttelezsnek. Ha a sma nincs BCNF-ben, akkor a tblban redundancia lphet fel. Tegyk fel ugyanis, hogy L B s L nem szuperkulcs. Ekkor a tblban tbb olyan sor lehet, amelyek L-en megegyeznek, s a fggsg miatt szksgkppen B-n is megegyeznek, ami a B rtkek redundns trolst eredmnyezi. BCNF-re hozs: Ha L B teljesen nemtrivilis fggs s L nem szuperkulcs, akkor a smt felbontjuk az L B fggsg szerint (itt B legyen a szba jv legbvebb attribtumhalmaz). Legyen C = A (L B), ekkor az R(A) smt az R1(C L) s R2(L B) smkkal helyettestjk. Heath ttele alapjn a felbonts hsges. Az eljrst addig ismteljk, amg az sszes relcisma BCNF-ben nem lesz. Plda: A gyakorlatban ha egy sma 3NF-ben van, akkor ltalban BCNF-ben is van. Addnak azonban kivtelek, ilyen az albbi plda. Tegyk fel, hogy (nagy)vrosi lakcmeket tartunk nyilvn, irnytszmmal egytt. Ez azt jelenti, hogy egy vroshoz tbb irnytszm tartozhat, de egy adott irnytszmhoz csak egy vros. A relcisma CM(Vros, Utca, Hzszm, Irnytszm). Fggsgek: {Vros, Utca, Hzszm} Irnytszm Irnytszm Vros Belthat, hogy a sma kt kulccsal rendelkezik: {Vros, Utca, Hzszm} {Irnytszm, Utca, Hzszm} A sma 3NF-ben van, ugyanis nincs msodlagos attribtuma. Nincs azonban BCNF-ben az Irnytszm Vros fggs miatt. BCNF-re hozs: felbonts az Irnytszm Vros fggsg szerint: CM1 (Irnytszm, Utca, Hzszm) CM2 (Irnytszm, Vros)

A fenti felbonts taln erszakoltnak tnik, pedig trolhely megtakartst jelenthet, ha tbb szzezer cmet kell nyilvntartani viszonylag kevs vrosban. Az Irnytszm ugyanis csak 4 karakter, mg a Vros rszre legalbb 20 karaktert kell fenntartani. Ennek ellenre vitathat, hogy rdemes-e a felbontst elvgezni, mivel nehzkess teszi a cmek kezelst. Vgezetl megjegyezzk, hogy nem minden R(A,F) relcisma bonthat fel hsges s fggsgrz mdon BCNF-ben lv relcismkra. Tbbrtk fggsg: Tekintsnk egy RENDELHET (Nagyker, Kisker, ru) smt, ahol a tbla egy sora adott kiskereskednek adott nagykereskedtl beszerezhet rufajtjt jelenti. Ha egy kiskeresked adott nagykereskedvel kapcsolatban ll, akkor a nagykeresked sszes rujt nyilvntartsba vesszk. Ez azt jelenti, hogy ha valamely (Ni, Kj) s (Ni, Ak) prok szerepelnek a tblban, akkor az (Ni, Kj, Ak) hrmas is kell hogy szerepeljen.

A smban egyetlen kulcs van: az sszes attribtum. Mivel nincs nem trivilis funkcionlis fggsg, ezrt a sma BCNF-ben van, ugyanakkor a tbla lthat mdon erteljesen redundns. Legyen K, L A, s legyen M = A (K L). Azt mondjuk, hogy K-tl tbbrtken fgg L, ha brmely R feletti T tbla esetn ha a ti s tj sorokra ti(K) = tj(K), akkor van olyan t sor, amelyre az albbiak teljeslnek: t(K) = ti(K) = tj(K) t(L) = ti(L) t(M) = tj(M) Jells: K L. K L akkor teljesl, ha valahnyszor valamely ti, tj sorok megegyeznek K-n, akkor azok t kombincija is szerepel a tblban:

llts: Ha K L , akkor K llts: Ha K L, akkor K

M. Bizonyts: A szimmetribl nyilvnval. L. Bizonyts: t = tj vlasztssal nyilvnval.

A tbbrtk fggsgekhez is ltezik egy aximarendszer, hasonlan a funkcionlis fggsgek Armstrong aximihoz. A logikai kvetkezmny, illetve a levezethetsg fogalma is hasonlan definilhat. Legyen R egy relcisma s F tbbrtk fggsgek egy halmaza R-en. Azt mondjuk, hogy egy K L tbbrtk fggsg logikai kvetkezmnye az F tbbrtk fggsg halmaznak, ha minden olyan R feletti T tbla esetn, amelyre F minden fggsge teljesl, K L is igaz. Jells: F K L A funkcionlis s tbbrtk fggsgeket az albbi (kzs) aximarendszerrel jellemezhetjk:

Ttel: A fenti aximk segtsgvel egy adott fggsg halmazbl kvetkez brmely funkcionlis s tbbrtk fggsg formlisan levezethet. (Levezetsen az aximk vges sokszori alkalmazst rtjk a formlis logika szablyai szerint.) 4. Normlforma (4NF): A K L fggst nemtrivilisnak nevezzk, ha K L= s K L A. (Ugyanis K L = A esetn M res, s t = ti vlasztsval a felttel mindig teljesl.) Azt mondjuk, hogy egy relcisma 4NF-ben van, ha minden nemtrivilis K L fggs esetn K szuperkulcs. llts: Ha egy R(A,F) sma 4NF-ben van, akkor BCNF-ben is van. Bizonyts: Legyen K L nemtrivilis fggs, beltjuk, hogy K szuperkulcs. Kt eset lehetsges:

Ha K

L = A, akkor K

L miatt K szuperkucs.

Ha K L A, akkor legyen L' = L K. Ekkor K L'. Most K L' nemtrivilis, amibl a 4NF tulajdonsg miatt kvetkezik, hogy K szuperkulcs. Ha egy sma nincs 4NF-ben, akkor a tbla redundancit tartalmazhat. Ha ugyanis K L, s K nem szuperkulcs, akkor a tblban tbb olyan sor lehet, amely K-n megegyezik, s ezekben a sorokban az L- s M-rtkek redundnsan szerepelnek. A gyakorlatban rendszerint a Fagin albbi ttel alapjn vgznk felbontst: Ha az R(A) relcismnl A = B C D, ahol B, C, D diszjunktak s nem resek, tovbb C D, akkor az R1(B C) s R2(C D) felbonts hsges. Bizonyts: Legyen T egy tetszleges R feletti tbla, T1 s T2 pedig a megfelel sztbontott tblk. Nyilvn T T1 T2, ezrt csak azt kell megmutatni, hogy T1 T2 T.

4NF-re hozs: Ha K

L nemtrivilis fggs, s K nem szuperkulcs, akkor az R(A) smt

felbontjuk az R1(K L) s R2(K M) smkra. Ez hsges felbonts Fagin ttele szerint. Az eljrst addig ismteljk, amg az sszes relcisma 4NF-ben nem lesz. Plda: A RENDELHET(Nagyker, Kisker, ru) sma az albbi felbontssal hozhat 4NF-re: SZLLT (Nagyker, Kisker) KNL (Nagyker, ru)

sszefoglals: Az 1NF-re hozs a relcis modellnl ktelez. A tovbbi normlformk egyre szigorbb feltteleket rnak el, amelyek kikszblik a redundancit s az aktualizlsi anomlikat. Az ezek szerinti normalizls clszer, de nem ktelez. A gyakorlatban azt kell

mrlegelni, hogy a redundancia s az anomlik mennyire jelentenek slyos veszlyt, indokolt-e azok megszntetsvel a tblk szmt nvelni. Egyed-kapcsolat modell Grafikus ler eszkz, diagram segtsgvel szemlletesen adja meg az adatbzis struktrjt. Az adatbzis implementlshoz a diagramot transzformlni kell valamilyen nyelvi lersra. Plda: Tegyk fel, hogy egy knyvtr klcsnzsi nyilvntartst szeretnnk adatbzissal megoldani. Ehhez nyilvntartst kell vezetni: a knyvekrl, az olvaskrl, a klcsnzsekrl. Egyednek neveznk egy, a vals vilgban ltez dolgot, amit tulajdonsgokkal akarunk lerni. Esetnkben egyed lehet egy knyv a knyvtrban, illetve egy adott olvas. ltalnostott fogalmakat hasznlva beszlhetnk "knyv" egyedrl s "olvas" egyedrl is. Attribtumok: Tulajdonsgnak vagy attribtumnak nevezzk az egyed egy jellemzjt. Pldul a knyv mint egyed legfontosabb tulajdonsgai a cme s a szerz neve. Az attribtumok csak atomi tpusak lehetnek (pl. szm, sztring, dtum); struktrkat, halmazokat, listkat nem engednk meg. Az attribtumokat gy clszer megvlasztani, hogy azok egyrtelmen meghatrozzk az egyedet. Mivel adott szerz adott cm knyve tbb kiadsban is megjelenhet, st adott kiadsbl is tbb pldny lehet a knyvtrban, gy minden knyvhz egy egyedi azonostt, knyvszmot (knyvtri szmot) clszer felvenni. Ekkor a "knyv" egyed tulajdonsgai: knyvszm, szerz, cm. (Tovbbi tulajdonsgoktl, mint kiad, kiadsi v, stb. esetnkben eltekintnk.). Hasonl meggondolsok alapjn az "olvas" egyedhez olvasszm, nv, lakcm tulajdonsgokat rendelhetnk. Kulcsok: Egy egyed attribtumainak olyan minimlis rszhalmazt, amely egyrtelmen meghatrozza az egyedet, kulcsnak nevezzk s alhzssal jelljk. Esetnkben a "knyv" egyed kulcsa a knyvszm, az "olvas" egyed az olvasszm. Kapcsolatok: Knyvtri nyilvntartsunk azonban ezzel mg nincs ksz. A "knyv" s "olvas" egyedek kztt ugyanis egy sajtos kapcsolat lphet fel, amelyet klcsnzsnek neveznk. Egyed-kapcsolat modell: A vals vilg jelensgeit egyedekkel, tulajdonsgokkal s kapcsolatokkal ler modellt egyed-kapcsolat modellnek, az ezt brzol diagramot egyedkapcsolat diagramnak nevezik. Rvidtve az E-K modell s E-K diagram elnevezsek is hasznlatosak. Az egyed-kapcsolat diagramoknak sajtos jellsrendszerk van: az egyedeket tglalappal, az attribtumokat ellipszissel, a kapcsolatokat rombusszal szoktk jellni. Plda: Knyvtri nyilvntarts E-K diagramja.

Eddig kiss pontatlanul fogalmaztunk, ugyanis meg kell klnbztetni egyedpldnyt s egyedtpust. Pldnkban az elbbi egy adott knyvet, az utbbi a knyv fogalmat jelenti. Egy vals adatbzisban minden egyedtpusnak egy konkrt egyedhalmaz (egyedpldnyok halmaza) felel meg. A tovbbiakban az egyedpldny, egyedtpus s egyedhalmaz helyett egyszeren egyedet mondunk, ha ez nem rtelemzavar. Hasonlan beszlhetnk tulajdonsgpldnyrl, amely egy egyedpldny adott tulajdonsgt jelenti (pldul adott knyv szerzjnek nevt), s tulajdonsgtpusrl, amely adott egyed tpus adott tulajdonsgt, mint fogalmat jelli (pldul knyvek esetn a "szerz" fogalmat). Ugyangy meg lehet klnbztetni kapcsolatpldnyt, amely kt egyed pldny kztti konkrt kapcsolatot jelent (pldul X olvas kiklcsnzte Y knyvet), s kapcsolattpust amely kt egyedtpus kztti kapcsolatot, mint fogalmat jelli. Fontos az egyedtpus pontos meghatrozsa. Pldul, egy egyetemi oktatsi adatbzisnl a kurzus egyedtpus tbbflekppen rtelmezhet: Tbb flven keresztl tart kurzust egy egyednek tekintnk. Az sszetartoz eladst s gyakorlatot egy kurzusnak tekintjk. Adott helyen s idpontban tartott foglalkozst tekintnk kurzusnak. Ha tbb hallgati csoport van, akkor mindegyik csoport gyakorlati rja kln egyedpldnyt jelent. Kapcsolatok tpusai: Kt egyed kztti kapcsolat (E s F jelli a kt egyedtpust): 1:1 kapcsolat, amikor minden E-egyedhez csak legfeljebb egy F-egyed tartozhat, s fordtva. 1:N kapcsolat, amikor egy E-egyedhez tbb F-egyed tartozhat, azonban egy F-egyedhez csak legfeljebb egy E-egyed tartozhat. N:M kapcsolat, amikor mindkt fajta egyedhez tetszleges szm msik fajta egyed tartozhat. A knyvtri nyilvntarts mindhrom tpusra pldval szolglhat. 1. vltozat: Ttelezzk fel, hogy a knyvtros egy olvasnak egyszerre csak egy knyvet hajland kiadni. Ekkor a knyv s olvas egyedek kztt 1:1 kapcsolat lp fel, hiszen egy knyv egyszerre csak egy olvasnl lehet, illetve egy olvas egyszerre csak egy knyvet klcsnzhet ki. 2. vltozat: Most ttelezzk fel, hogy a knyvtros egy olvasnak egyszerre tbb knyvet is hajland kiadni. Ekkor a knyv s olvas egyedek kztt N:1 kapcsolat lp fel, ugyanis egy olvasnl egyszerre tbb knyv is lehet, viszont egy knyv egyszerre csak egy olvasnl lehet. 3. vltozat: Tegyk fel, hogy a knyvtros most csak azt akarja nyilvntartani, hogy egy adott knyvet eddig mely olvask klcsnztk ki. Ekkor mr egy knyv tbb knyvolvas kapcsolatban is rszt vehet, ezrt a kt egyed kztt N:M kapcsolat ll fenn.

Ltjuk, hogy a kapcsolat tpusa igen lnyeges az E-K modell szempontjbl, ezrt azt az E-K diagramon is jellni szoktk.

Egy egyedtpus teljesen rszt vesz egy kapcsolatban, ha minden egyedpldny kapcsolatban ll valamely msik egyeddel. Ezt az egyed s a kapcsolat kztti ketts vonallal jellik. A teljes rszvtel ltalban nem teljesl, pldul a knyvtri nyilvntarts 1. s 2. vltozatnl rendszerint nincs minden knyv kiklcsnzve, s nincs minden olvasnl knyv. A 3. vltozatnl viszont megkvetelhetjk, hogy egy olvast csak akkor vesznk nyilvntartsba, ha valamikor legalbb egy knyvet kiklcsnztt. Elfordul, hogy egy egyedtpus nmagval ll kapcsolatban. Az albbi bra egy hierarchikus felpts intzmny szervezeti egysgeit modellezi (pldul egyetemi karok, intzetek, tanszkek).

Itt 1:N kapcsolatrl van sz, ahol egy kapcsolatpldny azt jelenti, hogy X egysgnek Y egysg a fegysge. Megjegyzend, hogy ez a modell nem zrja ki a krkrs hivatkozsokat. Lehetsg van kettnl tbb egyed kztti kapcsolat definilsra is. Ez a tpus ritkbban lp fel, s szksg esetn visszavezethet binris kapcsolatokra. Nzznk egy pldt sokg kapcsolatra. A szerzdsek kapcsolatban filmstdik, filmek s sznszek vesznek rszt. Ez a kapcsolat mutatja, hogy egy stdi mely sznsszel melyik filmre kttt szerzdst.

Itt a stdikra mutat nyl azt jelenti, hogy adott (film, sznsz) pr legfeljebb egy stdival llhat kapcsolatban. Hasonl llts nem igaz a (film, stdi) s (stdi, sznsz) prokra.

Tegyk fel, hogy a modellben szeretnnk nyilvntartani a szerzdsekhez tartoz fizetseket is. Ez nem rendelhet a sznszhez, hisz egy sznsz klnbz filmek esetn valsznleg klnbz sszegeket kap. A stdihoz sem rendelhet, mert klnbz sznszeknek valsznleg klnbz sszegeket fizetnek, s a filmekhez sem, hisz egy adott film szerepli valsznleg klnbz sszegeket kapnak. Ha azonban a fizetst a (sznsz, film, stdi) hrmashoz rendelnnk a szerzdsek kapcsolathalmazban, az ppen j lenne. Az egyedkapcsolat modell lehetv teszi, hogy attribtumokat rendeljnk egy kapcsolathoz. Ehelyett termszetesen lehetsges egy j egyed felvtele is, amelynek attribtumai ppen a kapcsolathoz rendelt attribtumok.

Gyenge egyedek: Gyenge egyedek, amelyeket az attribtumaik nem hatroznak meg egyrtelmen; csak a kapcsolatai rvn lesz meghatrozott. Jele: ketts tglalap. Meghatroz kapcsolat jele: ketts rombusz. Plda: Egy szmtgp szerviz nem bajldik azzal, hogy egyedi azonostt rendeljen a javtott gpekhez, hanem azokat a tulajdonosaik szerint tartja nyilvn. Itt a szmtgp gyenge egyed, mivel a mszaki paramterek nem hatrozzk meg egyrtelmen a gpet.

Ha elfordulhat, hogy egy tulajdonosnak tbb, azonos paramterekkel rendelkez gpe van, akkor a szmtgp egyedhez egy sorszm attribtum felvtele is szksges a megklnbztetsre. Ez azonban knnyebben kezelhet, hisz itt csak adott tulajdonos gpeit kell egymstl megklnbztetni, nem az sszes gpet.

Specializl kapcsolatok: Ha valamely ltalnos egyednek bizonyos altpusait kln szeretnnk modellezni, akkor a ftpus s az altpusok viszonyt specializl kapcsolattal rhatjuk le. Jells: hromszg, amelynek cscsa a ftpus fel mutat. A hromszgbe "az egy" szveget szoktak rni, ezzel is hangslyozva a kapcsolat jellegt. Plda: Tekintsk egy oktatsi intzmny helyisg-nyilvntartst. Az egyes helyisgeket a tartalmaz plet azonostjval s az azon belli ajtszmmal azonostjuk. Tovbbi attribtumok a helyisg neve s alapterlete. A helyisg egyed altpusai: tanterem (attribtumai az lhelyek szma, a tbla s vett tpusa), szmtgpterem (attribtuma a gpek szma), iroda (attribtumai az irodban mkd telefon s fax szma; kapcsolatban ll az irodban dolgoz szemlyekkel).

Ltjuk, hogy az altpusoknak lehetnek sajt attribtumai s kapcsolatai, ugyanakkor rklik a ftpus attribtumait s esetleges kapcsolatait is. Pldul a tanterem teljes attribtumhalmaza: plet, ajtszm, nv, alapterlet, frhely, vett, tbla. A specializl kapcsolat az egyedek tbbszrs elfordulst eredmnyezi. Ha ugyanis egyedhalmazokat kpzelnk a ftpus s altpusok helyre, akkor egy egyedpldny tbb egyedhalmazban is szerepel, pldul egy konkrt eladterem egyarnt rsze a Helyisg s a Tanterem egyedhalmazoknak. A specializl kapcsolat lnyegben 1:1 kapcsolatot jelent egy ftpus s egy altpus kztt, de sajtos mdon nem klnbz egyedeket, hanem ugyanazon egyed kt elfordulst kapcsolja ssze. Az altpus mindig teljesen rszt vesz ebben a kapcsolatban, mg a ftpus ltalban nem. Egy egyed egyszerre kettnl tbb egyedhalmazban is elfordulhat; egy szmtgpes oktatterem pldul tanterem s gpterem egyszerre. Vgl az is lehet, hogy egy egyed csak a ftpushoz tartozik (pldul folyos, mosd, raktr, stb.). Plda: Tekintsnk egy banki adatbzist, amelyben a kvetkezket tartjuk nyilvn: fikok: nv, cm, tartalk, gyfelek: nv, gyflszm, cm, szmlk: szmlaszm, fik, tulajdonosok, egyenleg, hitelek: hitelszm, fik, adsok, sszeg. A fikokat a nevk azonostja. Az gyfeleket az gyflszmuk azonostja. A szmlkat a szmlaszm azonostja. A hiteleket a hitelszm azonostja. Mind a szmlk, mind a hitelek hozz vannak rendelve egy fikhoz. Mind a szmlk, mind a hitelek tbb gyflhez is tartozhatnak. Minden gyflnek tbb szmlja, illetve tbb hitele is lehet.

Relcis adatbzissma ksztse E-K diagrambl Az E-K modell minden egyedhez felrunk egy relcismt, amelynek neve az egyed neve, attribtumai az egyed attribtumai, kulcsa az egyed kulcs attribtumai. A sma feletti adattbla minden egyes sora egy egyedpldnynak felel meg.

Az bra szerinti knyvtri nyilvntarts esetn a knyveket egy KNYV tblban tarthatjuk nyilvn, amely az albbi sma szerint pl fel: KNYV(knyvszm, szerz, cm). Az olvask nyilvntartsra egy OLVAS nev tbla szolglhat, amelynek smja: OLVAS(olvasszm, nv, lakcm). A gyenge egyed relcismjt bvteni kell a meghatroz kapcsolat(ok)ban szerepl egyed(ek) kulcsval. Plda:

Az bra szerinti szmtgp nyilvntarts adatbzissmja a kvetkez: TULAJDONOS (szemlyiszm, nv, lakcm) SZMTGP (processzor, memria, merevlemez, szemlyiszm) Ha egy tulajdonosnak tbb, azonos gpe lehet, akkor ezeket egy sorszm attribtummal klnbztetjk meg: TULAJDONOS (szemlyiszm, nv, lakcm) SZMTGP (processzor, memria, merevlemez, szemlyiszm, sorszm) Plda:

Az brn lthat Szerzds egyed lekpezse: SZERZDS (fizets, filmcm, filmv, sznsznv) Kapcsolatok: ltalnos szably: Vegynk fel a kapcsolathoz egy j smt, amelynek neve a kapcsolat neve, attribtumai pedig a kapcsold egyedek kulcs attribtumai s a kapcsolat sajt attribtumai. Ha ezen sma kulcsa megegyezik valamely kapcsold egyed kulcsval, akkor a kapcsolat smja az egyed smjba beolvaszthat. Formlisan, ha az sszekapcsolt egyedeknek az R1(K1 B1), ..., Rn(Kn Bn) smk felelnek ... meg (Ki a kulcs, Bi a tovbbi attribtumok halmaza), akkor a kapcsolatnak egy R(K1

Kn B) smt feleltetnk meg, ahol B a kapcsolat sajt attribtumai. R-ben Ki kls kulcs hivatkozs az Ri smra. Az R feletti adattbla minden egyes sora egy kapcsolatpldnynak felel meg. Plda:

Az brn szerepl "klcsnzs" kapcsolat esetn az albbi smt kapjuk: KLCSNZS(knyvszm, olvasszm). Krds, hogy mi lesz a kulcs ebben a smban. Ehhez a kapcsolat tpust kell megvizsglni. Nzzk meg sorra a mr trgyalt hrom vltozatot! 1. vltozat: Ha egy olvasnak egyszerre csak egy knyvet adnak ki, akkor a klcsnzs 1:1 kapcsolatot jelent. Ilyenkor a KLCSN smban a knyvszm s az olvasszm egyarnt kulcs. Teht, a KLCSN (knyvszm, olvasszm) vagy a KLCSN (knyvszm, olvasszm) smt vehetjk fel a kapcsolathoz. Az els sma kulcsa a KNYV smval, a msodik az OLVAS smval egyezik meg. A KLCSN smt az azonos kulcs smba olvasztva a o KNYV (knyvszm, szerz, cm, olvasszm) o OLVAS (olvasszm, nv, lakcm) vagy a o KNYV (knyvszm, szerz, cm) o OLVAS (olvasszm, nv, lakcm, knyvszm) adatbzissmt kapjuk. Ha egy knyvet ppen senki sem klcsnztt ki, illetve ha egy olvasnl ppen nincs knyv, akkor a megfelel mez resen marad (azaz NULL rtk). A megfelel tblk a kvetkezk:

2. vltozat: Ha egy olvas tbb knyvet is kiklcsnzhet, akkor a knyv-olvas kapcsolat N:1 tpus. Ekkor a KLCSN smban csak a knyvszm lehet kulcs, ezrt a KLCSN smt csak a KNYV smba olvaszthatjuk: o KNYV (knyvszm, szerz, cm, olvasszm) o OLVAS (olvasszm, nv, lakcm) Most tbb knyvnl is szerepelhet ugyanazon olvas szma.

Az a lehetsg, hogy az OLVAS smt bvtjk knyvszm attribtummal, mr nem jrhat. Ekkor egy olvashoz tbb knyvszmot kellene bernunk, ami ellentmond a relcis adatmodell alapelvnek: az adattbla egy mezjbe csak atomi rtket lehet berni. 3. vltozat: Ha az egyes knyvek sszes eddigi kiklcsnzjt nyilvntartjuk, akkor nem csak egy olvashoz tartozhat tbb knyv, hanem egy knyvhz is tbb olvas (N:M kapcsolat). Ekkor a KLCSN smban {knyvszm, olvasszm} kulcs. A KLCSN smt most sem a KNYV, sem az OLVAS smba nem tudjuk beolvasztani. Az adatbzissma ezrt a kvetkez: o KNYV (knyvszm, szerz, cm) o OLVAS (olvasszm, nv, lakcm) o KLCSN (knyvszm, olvasszm)

A elzek alapjn az albbi szablyok fogalmazhatk meg kt egyed kztti kapcsolatok lekpezsre relcis modellbe: 1:1 kapcsolat esetn kivlasztjuk a kapcsolatban rsztvevev kt egyed valamelyikt (brmelyiket), s annak smjba j attribtumknt felvesszk a msik egyed meghatroz (kulcs) attribtumait, valamint a kapcsolat attribtumait. 1:N kapcsolat esetn az N oldali egyed smjba j attribtumknt felvesszk a msik egyed kulcs attribtumait, valamint a kapcsolat attribtumait. N:M kapcsolat esetn j smt vesznk fel, amelynek attribtumai o a kapcsold egyedek kulcs attribtumai, o a kapcsolat sajt attribtumai. Elfordul, hogy 1:1 illetve 1:N kapcsolat esetn sem rdemes a kapcsolat smjt beolvasztani a megfelel egyed smjba. Ha pldul a KNYV smt bvtjk az olvasszm attribtummal, de a knyveknek csak elenyszen kis szzalka van egy adott pillanatban kiklcsnzve, akkor az olvasszm attribtum rtke majdnem minden sorban NULL lesz. Ez a redundancia megsznik, ha a klcsnzseket egy kln KLCSN (knyvszm, olvasszm) smban tartjuk nyilvn. Plda: Az albbi diagram szerinti szervezeti egysg nyilvntarts nmagval kapcsolatban ll egyedet tartalmaz.

Lnyegben itt is a 2. szablyt alkalmazhatjuk, vagyis az EGYSG (egysgkd, megnevezs) smt kell bvteni egysgkd attribtummal. Mivel egy smban nem szerepelhet kt azonos attribtumnv, ezrt az j attribtumot fegysgkdnak nevezzk:

EGYSG (egysgkd, megnevezs, fegysgkd) ahol fegysg a flrendelt szervezeti egysg kdja.

Az ltalnos szably alapjn felrhatjuk az elbbi E-K diagram relcis adatbzissmjt: FILM (cm, v, hossz, szalagfajta) SZNSZ (nv, lakcm) STDI (nv, cm) SZERZDS (filmcm, filmv, sznsznv, stdinv, fizets) Az azonos nevek tkzsnek elkerlsre a SZERZDS smban mdostott attribtumneveket alkalmaztunk. Mivel a SZERZDS kapcsolatban a film s a sznsz mr meghatrozza a stdit (lsd a nyilat az brn), ezrt a stdinv mr nem rsze a kulcsnak. Megjegyezzk, hogy ha a sztbontott vltozatbl indulunk ki, akkor is a fenti adatbzissmhoz jutunk.

Specializl kapcsolatok:

1. vltozat: A ftpushoz s minden altpushoz kln sma felvtele, az altpusok rklik a ftpus attribtumait. Egy egyed csak egy tblban szerepel. o HELYISG (plet, ajtszm, nv, alapterlet) o TANTEREM (plet, ajtszm, nv, alapterlet, frhely, tbla, vett) o GPTEREM (plet, ajtszm, nv, alapterlet, gpszm) o IRODA (plet, ajtszm, nv, alapterlet, telefon, fax) o DOLGOZ (adszm, nv, lakcm, plet, ajtszm) Htrnyok: o Keresskor gyakran tbb tblt kell vizsglni (ha pldul a Kzponti plet 211. sz. terem alapterlett keressk). o Kombinlt altpus (pldul szmtgpes tanterem) csak j altpus felvtelvel kezelhet. 2. vltozat: A ftpushoz s minden altpushoz kln sma felvtele, az altpusok a ftpustl csak a kulcsattribtumokat rklik. Egy egyed tbb tblban is szerepelhet, a ftpus tbljban minden egyed szerepel, s annyi altpusban ahnynak megfelel. o HELYISG (plet, ajtszm, nv, alapterlet) o TANTEREM (plet, ajtszm, frhely, tbla, vett) o GPTEREM (plet, ajtszm, gpszm) o IRODA (plet, ajtszm, telefon, fax) o DOLGOZ (adszm, nv, lakcm, plet, ajtszm) Htrny: Itt is elfordulhat, hogy tbb tblban kell keresni (pldul ha a tantermek nevre s frhelyre vagyunk kvncsiak). 3. vltozat: Egy kzs sma felvtele, az attribtumok unijval. Az aktulisan rtkkel nem rendelkez attribtumok NULL rtkek. o HELYISG (plet, ajtszm, nv, alapterlet, frhely, tbla, vett, gpszm, telefon, fax) o DOLGOZ (adszm, nv, lakcm, plet, ajtszm) Htrnyok: o Az ilyen egyestett tblban ltalban sok NULL attribtumrtk szerepel. o Elveszthetjk a tpusinformcit (pldul ha a gpteremnl a gpszm nem ismert s ezrt NULL, akkor a gpterem lnyegben az egyb helyisgek kategrijba kerl).

Plda:

Fik(fik_nv, fik_vros, tartalk) gyfl(gyfl_szm, gyfl_nv, gyfl_cm) Szmla(szmla_szm, fik_nv, egyenleg) Hitel(hitel_szm, fik_nv, sszeg) Szmlatulajdonos(gyfl_szm, szmla_szm) Ads(gyfl_szm, hitel_szm) Az SQL nyelv I ltalnos jellemzs: A legszlesebb krben hasznlt adatbziskezel rendszerek egy SQL-nek nevezett nyelv segtsgvel krdezik le s mdostjk az adatbzist. Az SQL = Structured Query Language (struktrlt lekrdez nyelv). Nem algoritmikus nyelv, de bepthet algoritmikus nyelvekbe (begyazott SQL). Trtneti ttekints: 1976: SEQUEL, az SQL eredeti vltozata, az IBM-nl fejlesztettk ki. 1981: ORACLE 2 (SQL alap, nagygpre). 1983: IBM DB2 (SQL alap, nagygpre). 1986: els SQL szabvny, az ANSI (American National Standards Institute) definilta. 1992: SQL92 (vagy SQL2) szabvny. 1999: SQL99 (vagy SQL3) szabvny. 2003: SQL2003 szabvny. 2008: SQL2008 szabvny. Szintaxis: Kisbet s nagybet a nyelv alapszavaiban egyenrtk. Utastsok sorfolytonosan rhatk, lezrs pontosvesszvel. Vltoz nincs, csak tbla- s oszlopnevekre lehet hivatkozni. Kifejezsben hivatkozs egy tbla adott oszlopra: tbla.oszlop (ha a tbla egyrtelm, akkor elhagyhat). Szvegkonstans: 'szveg' Dtum: DATE '1968-05-12' (v, hnap, nap). Id: TIME '15:31:02.5' (ra, perc, msodperc, trtmsodperc). Aritmetikai mveletek: +, -, *, /

Relcijelek: =, , =, != vagy Logikaimveletek: AND, OR, NOT. Egy logikai kifejezs rtke ISMERETLEN (UNKNOWN) is lehet, ha benne NULL rtk szerepel (hromrtk logika). Kliensek s szerverek: Az adatbziskezel rendszerek, sok ms szoftverfajthoz hasonlan kliens-szerver felptst hasznlnak. Ez azt jelenti, hogy az egyik folyamat (a kliens) krseit egy msik folyamat (a szerver) hajtja vgre. A legegyszerbb kliens-szerver felptsben az egsz adatbziskezel egyetlen szerver, eltekintve a lekrdez interfszektl, amelyek a felhasznlkkal kommuniklnak, s a lekrdezseket, ill. egyb utastsokat eljuttatjk a szerverhez. Az adatbzisszerver a vlaszt ltalban egy tbla formjban kldi vissza a kliensnek. Olyan szmtgpen tudunk csak SQL alkalmazsokat futtatni, amelyen elrhet SQL kliens. Egy SQL szerverrel a kvetkez utasts segtsgvel teremthetnk kapcsolatot: CONNECT TO szervernv AS kapcsolatnv AUTHORIZATION felhasznlnv s jelsz A szerver neve az installlstl fgg, a legtbb esetben a DEFAULT kulcssz bersval az alaprtelmezs szerint elrhet szerverhez kapcsoldhatunk. A CONNECT utastsban megadott kapcsolatnevet hasznlhatjuk a ksbbiekben a kapcsolat azonostsra. Erre azrt van szksg, mert az SQL egyidejleg tbb kapcsolat felptst is tmogatja, azonban ezek kzl mindig csak egy aktv (a tbbi alv kapcsolat). Egy kapcsolatot az albbi utastssal tehetnk aktvv: SET CONNECTION kapcsolatnv; Egy korbban felptett kapcsolatot a DISCONNECT kapcsolatnv; utastssal szntethetnk meg. Lekrdezsek: Lekrdezsre a SELECT utasts szolgl, amely egy vagy tbb adattblbl egy eredmnytblt llt el. Az eredmnytbla a kpernyn listzsra kerl, vagy ms mdon hasznlhat fel. Egyetlen SELECT akr egy komplex felhasznli programot helyettesthet! A SELECT utasts alapvltozata: SELECT [DISTINCT] oszloplista FROM tblanvlista [WHERE felttel]; A fenti SELECT A1,...,An FROM T1,...,Tm WHERE felttel utasts egyenrtk a kvetkez relcis algebrai kifejezssel: A1,...,An (felttel (T1 ... Tm )). Vagyis, a felsorolt tblk Descartes-szorzatbl szelektljuk a felttelnek eleget tv sorokat, majd ezekbl projekcival vlasztjuk ki az eredmnytbla oszlopait. A DISTINCT opcit akkor kell kirni, ha az azonos sorokbl csak egyet kvnunk megtartani (a SELECT utasts alaprtelmezsben nem sznteti meg az ismtldseket). Ha az oszloplista helyre * karaktert runk, ez valamennyi oszlop felsorolsval egyenrtk. A SELECT legegyszerbb vltozatval adattbla listzst rhetjk el: SELECT * FROM T; Relcis algebrai mveletek: Projekci: SELECT [DISTINCT] A1, ..., An FROM T; Plda: o SELECT DISTINCT szerz, cm FROM Knyv; Szelekci: SELECT * FROM T WHERE felttel; Plda: o SELECT * FROM Knyv WHERE szerz = 'Jeffrey Ullman'; Karaktersorozatok illesztse: Kt karakterlnc egyenl, ha a karaktereknek ugyanabbl az egyms utn kvetkez sorozatbl ll. Az SQL lehetv teszi, hogy mintkkal is sszehasonlthassunk karakterlncokat: o x LIKE minta: igaz, ha az x karaktersorozat megfelel a megadott mintnak. Ha a mintban "%" illetve "_" jel szerepel, az tetszleges karaktersorozatot illetve tetszleges karaktert jelent. Plda: szerz LIKE '%Jeffrey%' igaz minden olyan nvre, amelyben szerepel a "Jeffrey" rszlet.

Descartes-szorzat (T1 T2): SELECT * FROM T1 CROSS JOIN T2; Mskppen: SELECT * FROM T1, T2; Termszetes sszekapcsols: lltsuk el pldul az o RU (cikkszm, megnevezs) o VSRLS (cikkszm, mennyisg) tblk termszetes sszekapcsolst: o SELECT * FROM ru NATURAL JOIN Vsrls; Mskppen: o SELECT ru.cikkszm, megnevezs, mennyisg FROM ru, Vsrls WHERE ru.cikkszm = Vsrls.cikkszm; Thta sszekapcsols: SELECT * FROM T1 JOIN T2 ON felttel; Mskppen: o SELECT * FROM T1, T2 WHERE felttel; Uni: (SELECT * FROM T1) UNION (SELECT * FROM T2); Metszet: (SELECT * FROM T1) INTERSECT (SELECT * FROM T2); Klnbsg: (SELECT * FROM T1) EXCEPT (SELECT * FROM T2); A SELECT utastssal ellenttben, amely csak akkor sznteti meg az ismtldseket, ha jelen van a DISTINCT kulcssz, az egyests, metszet s klnbsg opertorok alaprtelmezsben megszntetik az ismtldseket. Ha az ismtldseket meg akarjuk tartani, akkor az UNION, INTERSECT s EXCEPT kulcsszavak utn az ALL kulcsszt kell rni. Ilyenkor az opertorok a kvetkezkppen mkdnek: o R UNION ALL S eredmnyben egy t sor elfordulsainak szma egyenl a t sor R-beli s S-beli elfordulsi szmnak az sszegvel. o R INTERSECT ALL S eredmnyben egy t sor elfordulsainak szma egyenl a t sor R-beli s S-beli elfordulsi szmnak a minimumval. o R EXCEPT ALL S eredmnyben egy t sor elfordulsainak szma egyenl a t sor R-beli elfordulsi szmbl kivonva a t sor S-beli elfordulsi szmt, ha az eredmny pozitv (klnben termszetesen 0). Plda: Tekintsk az albbi helyisg-adatbzist: o HELYISG (plet, ajtszm, nv, alapterlet) o TANTEREM (plet, ajtszm, frhely, tbla, vett) o GPTEREM (plet, ajtszm, gpszm) Ekkor az oktatsi cl gptermek listja: (SELECT plet, ajtszm FROM Tanterem) INTERSECT (SELECT plet, ajtszm FROM Gpterem); Alias nevek: A SELECT utn megadott oszloplista nem csak oszlopneveket, hanem tetszleges kifejezseket, st konstansokat is tartalmazhat. Az eredmnytbla oszlopainak elnevezsre pedig alias neveket adhatunk meg. Plda: A RAKTR(cikkszm, nv, egysgr, mennyisg) tblbl egy (ru, rtk, pnzegysg) tbla ltrehozsa: SELECT nv AS ru, egysgr * mennyisg AS rtk, Ft AS pnzegysg FROM Raktr; A FROM utn megadott tblk esetn is hasznlhatk alias nevek, pldul akkor, ha egy tblnak nmagval val Descartes-szorzatt kpezzk. Plda: Azonos nev dolgozk lekrse a DOLGOZ (adszm, nv, lakcm, osztlykd, fizets) tblbl: SELECT d1.nv, d1.adszm, d2.adszm FROM Dolgoz AS d1, Dolgoz AS d2 WHERE d1.nv=d2.nv AND d1.adszm < d2.adszm; Az adszmokra elrt felttel azrt kell, hogy nmagval ne prostson rekordot, illetve, hogy egy azonos nev dolgozpr cs