• Nem Talált Eredményt

Adatbázisok elmélete 23. el ˝ oadás

N/A
N/A
Protected

Academic year: 2022

Ossza meg "Adatbázisok elmélete 23. el ˝ oadás"

Copied!
6
0
0

Teljes szövegt

(1)

Adatbázisok elmélete 23. el ˝ oadás

Katona Gyula Y.

Budapesti M ˝uszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz.

I. B. 137/b

kiskat@cs.bme.hu

http://www.cs.bme.hu/˜kiskat

2004

ADATBÁZISOK ELMÉLETE23.EL ˝OADÁS 1/22

Összefüggések az adategységek között

Eddig nem néztük azt, hogy mik azok az adategységek, amikre a zárakat lehet kérni és kapni.

Hallgatólagosan feltettük, hogy ezeket egymástól függetlenül lehet zárolni, nincs közöttük semmi szervezettség, semmi összefüggés.

A valóságban két különböz ˝o esetben sem alkalmazható ez a megközelítés:

1. Ha az adategységek egymásba ágyazottak (pl. reláció, blokk, rekord), ekkor még további megkötéseket szeretnénk a zárolásra, az eddigi módszereket ki kell egészíteni.

2. Ha tudjuk, hogy egymáshoz képest hogyan helyezkednek el az adategységek a tárolási struktúrában, akkor jobb módszereket találhatunk, mint az eddigiek, illetve láthatjuk, hogy valamilyen eddig tanult módszer biztosan el ˝onytelen lesz. Ez lesz például a B-fában tárolt adatok esete.

Adatbáziselemekb ˝ ol álló hierarchiák

A valóságban zárolhatunk teljes relációkat, de zárolhatjuk külön-külön ezek egyes blokkjait, s ˝ot sorait is.

Minél nagyobb egységre rakunk zárat, annál könnyebb lesz a záradminisztráció, de annál több lesz a zárfeloldásra várás is és ezzel együtt a holtpont.

Alkalmazástól függ, hogy mi éri meg jobban, de egy valami mindig közös: Elvárjuk azt, hogy ha azAadategység egy reláció,Bpedig ennek egy blokkja, akkor azA-ra rakott zár zárolja B-t is,azazpl. az egyszer ˝u tranzakciómodellben ne lehessenlj(B)-t kapni, hali( A)után még nem voltui( A).Ezt az eddigi technika még nem biztosítja, eddig ilyen összefüggéseket nem is vettünk figyelembe.

Egy ilyen lehetséges hierarchikus helyzet:

D E

A B C

F G

B,C: blokkjai D,E,F,G: sorai

A: reláció

ADATBÁZISOK ELMÉLETE23.EL ˝OADÁS 3/22

Figyelmeztet ˝ o zármodell

Cél:olyan sorosítható ütemezés kikényszerítése, ami még az adategységek közötti hierarchiát is figyelembe veszi. Ez a hierarchia egy fával adott.

Egyszer ˝u változat esetén háromféle zárm ˝uvelet lesz:(lényegében az egyszer ˝u tranzakciómodellnek felel meg):

LOCKi( A):TizároljaA-t (explicit lock) és minden leszármazottját (implicit lock), kizárólagosan, azaz ezek után más tranzakció seA-ra, se ennek leszármazottjára nem kaphat zárat.

W ARNi( A):Tifigyelmeztetést rakA-ra(gyerekeire nem), ez annak jelzésére szolgál, hogy Timajd zárat akar kapniAvalamely leszármazottjára

UNLOCKi( A):felszabadítja azA-ra rakottLOCK-ot ésW ARN-t, az implicit zár is lekerül Aleszármazottjairól

(2)

A zárak használata

1. Azi-edik tranzakció,Ti, csak akkor olvashatja vagy írhatja azAadategységet, ha el ˝otte zárat kért és kapott rá (LOCKi( A)vagyLOCKi Avalamelyik ˝osén) és ezt a zárat még azóta nem engedte fel.

2. LOCKi( A)ésW ARNi( A)után mindig vanUNLOCKi( A).

3. HaLOCKivanA-n, akkor seW ARNjseLOCKjnem kerülhet már rá (haj,i), de két különböz ˝o tranzakciónak lehetW ARN-ja ugyanott.Vagyis a kompatibilitási mátrix:

LOCK WARN

LOCK N N

WARN N I

ADATBÁZISOK ELMÉLETE23.EL ˝OADÁS 5/22

A figyelmeztet ˝ o protokoll

ATitranzakció követi a figyelmeztet ˝o protokollt, ha zárkérései a fentieken kívül még a következ ˝oket is tudják:

(a) Tiels ˝o zárkéréseW ARNivagyLOCKia gyökérre

(b) EzutánLOCKivagyW ARNicsak akkor kérhet ˝o egy adategységre, haW ARNimár van az apján.

(c) UNLOCKicsak akkor kérhet ˝o egy adategységre, ha már nincs sem explicitLOCKi, sem W ARNiaz adategység leszármazottjain

(d) Kétfázisú zárkérés van:UNLOCKiután nincs seLOCKi, seW ARNi.

Az (a) és (b) pontok miatt a zárkérések felülr ˝ol lefelé kúsznak a fában, a zárelengedések pedig a (c) miatt alulról felfele mennek az egyes tranzakciók esetén.

Példa

Az adategységek hierarchiája legyen (mint el ˝obb):

D E

A B C

F G

B,C: blokkjai D,E,F,G: sorai

A: reláció

Az alábbi zárkérésekb ˝ol és zárelengedésekb ˝ol álló sorozat legális és mindhárom tranzakció követi a figyelmeztet ˝o protokollt.

W ARN1( A), W ARN2( A), W ARN3( A), W ARN1(B), LOCK2(C), LOCK1( D),

UNLOCK2(C), UNLOCK1( D), UNLOCK2( A), UNLOCK1(B), LOCK3(B), W ARN3(C), LOCK3(F), UNLOCK1( A), UNLOCK3(B), UNLOCK3(F), UNLOCK3(C), UNLOCK3( A)

Azért legális, mert minden LOCK és WARN fel van engedve kés ˝obb és egyszerre csak több WARN van ugyanott, más nem.

A tranzakciók zárkérései pedig egyrészt 2PL szerint mennek, másrészt a zárkérések a fában felülr ˝ol lefele mennek, a zárelengedések pedig alulról felfele.

ADATBÁZISOK ELMÉLETE23.EL ˝OADÁS 7/22

Figyelmeztet ˝ o protokoll II.

A figyelmeztet ˝o protokollra igaz az alábbi tétel:

Tétel.Ha a figyelmeztet ˝o zármodellben, egy legális ütemezésben minden tranzakció követi a figyelmeztet ˝o protokollt, akkor az ütemezés sorosítható és soha nem lesz egyszerre két különböz ˝o tranzakciónak zárja(se explicit, se implicit)ugyanazon az adategységen.

Bizonyítás: A sorosíthatóságot a kétfázisúság biztosítja (pontosabban nem bizonyítjuk).

Zárkonfliktus pedig azért nem lesz, mert

• Két különböz ˝o tranzakciónak explicit LOCK-ja nem lehet soha ugyanott, ha az ütemezés legális.

• Egy explicit és egy implicit LOCK (két különböz ˝o tranzakciótól) nem lehet ugyanott: nem lehet, hogy egyAadatelemenLOCKivan és ezzel egyidej ˝uleg egy leszármazottján(akin így implicitTilock van)vanLOCKjis, mert ekkorA-nW ARNj-nek is kell lennie, de az nem lehet egy legális ütemezésben.

• Két különböz ˝o tranzakciónak implicit LOCK-ja sem lehet ugyanazon aCadategységen, mert ekkorCkét különböz ˝o felmen ˝ojén a két különböz ˝o tranzakció két LOCK-jának kellene lennie, ami az el ˝oz ˝o pont értelmében nem lehet.

Megjegyzés:Lehetne bonyolultabb zármód esetén is nézni figyelmeztet ˝o zárolást és figyelmeztet ˝o protokollt(az RLOCK/WLOCK modelnek megfelel ˝oen):lenne külön írási és olvasási figyelmeztetés is.

(3)

B-fában tárolt adategységek

Tekintsük most azt a helyzetet, amikor a zárolható adategységek egy fa csúcsaiban helyezkednek el, de a fa most nem az adategységek egymásba ágyazottságát mutatja (az adategységek most diszjunktak), hanem azt, hogy hogyan lehet elérni az adatokat.

Például a B-fa esetén a levelekhez csak úgy juthatunk el, ha a gyökért ˝ol indulva végigjárunk egy lefele vezet ˝o utat. Ahhoz, hogy beolvashassuk azt a levelet, ami nekünk kell, el ˝otte be kell olvasnunk az összes felmen ˝ojét (és ha csúcsvágás vagy csúcsösszevonás úgy kívánja, írnunk is kell ˝oket).

Ilyenkor a szokásos technikák mennek ugyan, de nagyon el ˝onytelenek lehetnek. Például a 2PL esetén egész addig kell tartani a zárat a gyökéren, amíg le nem értünk a levélhez, ami indokolatlanul sok várakozáshoz vezet.

Kéne másik módszer, ami ebben a speciális esetben biztosítja a sorosíthatóságot, de nem olyan szigorú, mint a 2PL. Ez lesz a faprotokoll.

ADATBÁZISOK ELMÉLETE23.EL ˝OADÁS 9/22

Faprotokoll

Egyszer ˝u tranzakciómodellben vagyunk(de ezt is lehetne RLOCK/WLOCK modellre kib ˝ovíteni), azaz

• egy zár van csak, ezt meg kell kapni íráshoz és olvasáshoz is

• zár után mindig van UNLOCK

• nincs két különböz ˝o tranzakciónak zárja ugyanott

ATitranzakció követi a faprotokollt, ha 1. Az els ˝o zárat bárhova elhelyezheti.

2. A kés ˝obbiekben azonban csak akkor kaphat záratA-n, ha ekkor zárja vanAapján.

3. Zárat bármikor fel lehet oldani(nem 2PL).

4. Nem lehet újrazárolni, azaz haTielengedte egyAadategység zárját, akkor kés ˝obb nem kérhet rá újra(még akkor sem, haAapján még megvan a zárja).

Tétel. (Bizonyítás nélkül)Ha minden tranzakció követi a faprotokollt egy legális ütemezésben, akkor az ütemezés sorosítható lesz, noha nem feltétlenül lesz 2PL.

Példa

A

B C

D E F G H

I J K L S

Tekintsük ezt a B3-fát. Az A-tól H-ig lev ˝o adategységek a fa bels ˝o csúcsai, itt mutatók és keresést segít ˝o kulcsok vannak, a levelekben (I-t ˝ol S-ig) pedig a keresési kulcs szerint rendezetten vannak a tárolt adatok, amik között keresünk. Most feltesszük, hogy egy levélben egy tárolt elem van.

Ha mondjuk azI-ben,J-ben ésK-ban tárolt elemek keresési kulcsa1,3és10, és be akarunk szúrni egy olyan elemet, ahol a kulcs értéke 4, akkor el ˝oször olvasni kellA-t,B-t ésD-t, majd írni is kellD-t.

Ekkor a megfelel ˝o(faprotokoll szerinti, legális)ütemezés eleje

LOCKi( A), LOCKi(B), UNLOCKi( A)mertBbeolvasása után látjuk, hogy neki csak két gyereke van, ha kell is csúcsvágás, azA-t biztos nem érinti,A-t nem kell majd írni. Csak addig kellett fogniA-n a zárat, amígB-re is megkaptuk.

EzutánLOCKi( D), UNLOCKi(B), mert látjuk, hogyD-nek csak két gyereke van, ezértB-t biztos nem kell írni.

Innen tovább:UNLOCKi( D), amikor már megtörtént az új levél beszúrása ésD-ben is beállítottuk a mutatókat.

ADATBÁZISOK ELMÉLETE23.EL ˝OADÁS 11/22

Példa II.

Tanulság:

• Faprotokoll szerint ment az ütemezés =⇒jó lesz

• Nem 2PL és ezzel nyertünk is sokat, mert amint megvoltUNLOCKi( A), akkor rögtön indulhat a következ ˝o beszúrás, ha az a fa jobb oldali ágán fut le. Ha 2PL lett volna, akkor LOCKi( D)-ig kellene várni ezzel.

(4)

Sorosíthatóság id ˝ obélyegekkel

Eddig a zárakat vizsgáltuk, mint egy lehetséges technikát a sorosíthatóság kikényszerítésére.

Másik lehet ˝oség:id ˝obélyeges tranzakciókezelés.

Ez optimistább, illetve agresszívabb, mint a zárak használata: hagyja a tranzakciókat szabadon futni (ellentétben a záraknál látott protokollokkal), de ha baj lenne, akkor agresszívan közbelép (ABORT).

Akkor jó, ha ritkán lesz ABORT, ha valószín ˝uleg kevés lesz a sorosítási probléma.

F ˝o elv:minden tranzakciónak van egy id ˝obélyege: t(Ti)aTitranzakcióé. Az id ˝obélyegek egyediek, növ ˝o sorrendben adja ki ˝oket az ütemez ˝o, ahogy indulnak a tranzakciók.

Az ütemez ˝o célja:az id ˝obélyegek növ ˝o sorrendjéhez tartozó soros ütemezéssel azonos hatású ütemezést enged csak lefutni, minden olyan kérést letilt (és a megfelel ˝o tranzakciót ABORT-álja), ami ez ellen tesz.

Például, hat(T1)=120,t(T2)=90ést(T3)=130, akkor a cél aT2T1T3soros sorrenddel azonos hatású ütemezés.

ADATBÁZISOK ELMÉLETE23.EL ˝OADÁS 13/22

Az id ˝ obélyeges tranzakciókezelés szabályai

Megkülönböztetünk írás és olvasás m ˝uveletet, továbbá mindenAadatelemhez hozzárendelünk egy olvasási és egy írási id ˝ot(r( A),w( A)), melyek jelentése:

• r(A)= a legnagyobb olyant(Ti), amire igaz, ahogyTiolvasta márA-t

• w(A)= a legnagyobb olyant(Ti), amire igaz, ahogyTiírta márA-t

Az ütemez ˝o mit csinál, hogy kikényszerítse az id ˝obélyegek szerinti növ ˝o soros ütemezés hatását?

• minden induló tranzakciónak legenerál egy id ˝obélyeget, egyedit, növ ˝oen, ez lesz a tranzakció egész futása alatt az ˝o id ˝obélyege

• ha aTtranzakció bármit csinálni szeretne egyAadategységgel, akkor miel ˝ott ezt megengedné, megvizsgáljat(T), ésr( A)illetvew( A)kapcsolatát és a következ ˝oképpen cselekszik.

Szabályok

1. HaTolvasnáA-t, det(T)<w( A), akkor ABORT T(mert egy nagyobb id ˝obélyeg ˝u, azazT után következ ˝o tranzakciónak már megengedte, hogy írja)

2. HaTírnáA-t, det(T)<r( A), akkor ABORT T(mert egy nagyobb id ˝obélyeg ˝u, azazTután következ ˝o tranzakciónak már megengedte, hogy olvassa)

3. HaTolvasnáA-t,t(T)w( A), det(T)<r( A), akkorTolvashatjaA-t és r(A) marad, ami volt és persze w(A) is(mert ugyan egy nagyobb id ˝obélyeg ˝u tranzakciónak már

megengedtük, hogy olvassaA-t, de ez nem baj, ett ˝ol még kijöhet a kívánt soros ütemezés hatása)

4. HaTírnáA-t,t(T)r( A), det(T)<w( A), akkor nem történik meg az írás, de nem is lesz ABORT T se és r(A) és w(A) marad, ami volt(mivel egy nagyobb id ˝obélyeg ˝u tranzakciónak már megengedtük, hogy írjaA-t, ezért a kívánt soros hatásban úgyse látszódik ez az írás) 5. HaTolvasná vagy írnáA-t, ést(T)w( A)ést(T)r( A), akkor engedjük és r(A) illetve

w(A) változik, attól függ ˝oen, hogy írás vagy olvasás történt

ADATBÁZISOK ELMÉLETE23.EL ˝OADÁS 15/22

Példa

Legyenek a tranzakciók id ˝obélyegeit(T1)=20, t(T2)=10(vagyis cél aT2T1hatása) és tekintsük az alábbi kéréssorozatot:

RE A D2( A), RE A D1( A), W RITE1(C), W RITE2(C), W RITE2( A)

Hogyan változnak az olvasási és írási id ˝ok (kezdetben nullák) és mit csinál az ütemez ˝o?

Lesz-e ABORT?

Kérés r(A) w(A) r(C) w(C) Magyarázat

0 0 0 0 kezdetben minden nulla

RE A D2( A) 10 0 0 0 5. eset=⇒mehet RE A D1( A) 20 0 0 0 5. eset=⇒mehet W RITE1(C) 20 0 0 20 5. eset=⇒mehet

W RITE2(C) 20 0 0 20 4. eset=⇒nem mehet, de nincs ABORT se W RITE2( A) 20 0 0 20 2. eset=⇒ABORTT2

(5)

Megjegyzések

1. A szabályok 4. pontjánál(ahol nem volt se ABORT, se írás) egyes források ABORT-ot rendelnek el. Ennek oka, hogy az általunk definált szabályok alkalmazása esetén el ˝ofordulhat a következ ˝o kellemetlen jelenség:

Ha az aTitranzakció, aki beállítottaw( A)értékét (aminél az írni akaróTtranzakció id ˝obélyege kisebb) esetleg ABORT-ál és emiatt vissza kell csinálniTiösszes hatását, akkorThatásának látszania kellene, de nem fog, pedigTlefutott hiba nélkül. Ha a 4.pont esetén ABORT-ot rendelünk el, akkor ez a gond nincsen. Vannak azonban technikák, amikkel akkor is meggátolható ez a jelenség, ha úgy járunk el, ahogy megadtuk a 4.

pontnál a tennivalókat(most nem nézzük, hogy mik ezek a technikák), ezért nem kell az ABORT ebben az esetben.

2. Az id ˝obélyeges módszer a zárhasználat alternatívája.Az id ˝obélyeges módszernél ha sok az ABORT, akkor sokat kell majd dolgoznunk a visszaállítással(ezért akkor javasolt, ha kevés a közös elemeken történ ˝o írás); a zárak hátránya pedig az, hogy karban kell tartani a zártáblát és a korlátozások miatt sok lehet a várakozás és a holtpont.

3. Vannak még más módszerek is a sorosíthatóság elérésére,pl. érvényesítés.

ADATBÁZISOK ELMÉLETE23.EL ˝OADÁS 17/22

Id ˝ obélyegek↔ zárak

Egyik se jobb egyértelm ˝uen, mint a másik. Van, hogy mind a kett ˝o ugyanazokat a kéréseket hagyja lefutni:

(a) HaT2el ˝obb indul, mintT1, akkor aRE A D2(B), RE A D1( A), W RITE1(C), W RITE2(C) m ˝uveletsort egy id ˝obélyegesen dolgozó ütemez ˝o nem hagyja lefutni, mert aT2T1soros sorrenddel ez nem lesz azonos hatású. Viszont RLOCK/WLOCK zárolás esetén van olyan legális zárkérés, amit az ütemez ˝o sorosíthatónak fog találni.

(b) ARE A D1( A), W RITE2( A), W RITE1( A), W RITE1(B), W RITE2(B), W RITE3( A) m ˝uveletsort, bárhogy is kérjük a zárakat legálisan, nem hagyja lefutni egy

RLOCK/WLOCK zárakat használó ütemez ˝o (T2ésT1között mindkét irányban lesz él a sorosítási gráfban), de id ˝obélyeggel lefut ez a m ˝uveletsor.

Védekezés hibák ellen, helyreállítás

Alapprobléma:nem fut le valamelyik tranzakció(sérül az atomiság)és emiatt inkonzisztens lesz az adatbázis.

Ennek okai lehetnek:

1. tranzakcióhiba, programhiba

2. ütemez ˝o által elrendelt ABORT(holtpont vagy sorosíthatóság miatt) 3. rendszerhiba:bels ˝o tár sérül

4. médiahiba:háttértár is sérül

Cél mindegyik esetben az, hogy újra konzisztens állapotba hozzuk az adatbázist

(visszacsinálás vagy befejezés)úgy, hogy a tartósság megmaradjon: ha egy tranzakció már befejezte a munkáját, akkor annak hatása ne vesszen el.

Az utolsó fajta hibával nem foglalkozunk, erre a szokásos eljárások mennek (archiválás, duplikálás).

ADATBÁZISOK ELMÉLETE23.EL ˝OADÁS 19/22

Alapfogalmak

Feltevés, hogy a végig lefutott tranzakciók konzisztens állapotból konzisztens állapotba viszik az adatbázist, ezért baj csak akkor lehet, ha félbemaradnak.

Fontos eszköz a hiba utáni helyreállításban:

COMMIT pont:az a pont, amikor a tranzakció minden érdemi munkával megvan, programhiba vagy ütemez ˝o miatt ABORT már biztos nem lehet. Nem biztos, hogy ekkor minden hatása látszik is már a tranzakciónak, lehet, hogy nincs minden írása véglegesítve, de minden készen áll már erre.

Fontos fogalom még:

Piszkos adat:Olyan adat, amit még nem COMMIT-ált tranzakció(azaz olyan, aki még meghalhat)írt az adatbázisba. Ha ilyet olvas egy másik tranzakció, akkor baj lehet, ha az els ˝o ABORT-ál, de a második nem.

(6)

T1 T2

LOCK(A) READ(A) A:=A+100 WRITE(A) LOCK(B) UNLOCK(A)

LOCK(A) READ(A) A :=A·25 READ(B)

WRITE(A) COMMIT UNLOCK(A) B := BA

⇓ ABORT

Példa piszkos adatból ered ˝o hibára zárolásos ütemezés esetén (persze id ˝obélyegekkel is van ilyen):

Ha az osztáskorAértéke éppen 0, akkorT1ABORT- ál, és emiatt sok baj lesz:

B-n zár marad, ezt fel kell oldani

T1 félig futott csak le, amit eddig számolt, azt vissza kell csinálni

T2 rossz adatot olvasott (mert a T1 által A-ba beleírt értéket visszavontuk), ígyT2-t is vissza kell csinálni

Összességében ebben az esetbenT1ésT2minden hatását ki kell irtani a DB-b ˝ol.

Ha esetleg közben még mások is olvasták aT1vagy aT2 által írt értékeket, akkorlavina: egymás után kell ABORT-okat elrendelni a tranzakcióknál piszkos adatból ered ˝o hiba miatt.

ADATBÁZISOK ELMÉLETE23.EL ˝OADÁS 21/22

Megoldások piszkos adat és lavina ellen

Különböz ˝o megoldások a tranzakcióhibákból(programhiba vagy rendszer általi ABORT) származó problémákra:

• Olyan tranzakciótól, aki nem COMMIT-ált, nem olvasunk.(Nem olvasunk olyan értéket, amit olyan tranzakció írt, akinek még nem volt COMMIT).

• Hagyjuk, hogy minden tranzakció azt csináljon, amit akar, ha lavina lesz, akkor majd megoldjuk(UNDO protokoll, nem lesz részletesen, de létezik)

• Zárolási protokollt kényszerítünk a tranzakciókra, ami biztosítja, hogy nem lesz piszkos adatból probléma, lavina:

szigorú 2PL:

? 2PL

? DB-be írás csak COMMIT után

? zárak elengedése csak írás után

Szigorú 2PL protokoll

Tétel.Ha mindegyik tranzakció a szigorú 2PL protokollt követi, akkor az ütemezés sorosítható lesz és lavinamentes.

Bizonyítás: Mivel a tranzakciók követik a 2PL protokollt, ezért az ütemezés sorosítható lesz.

Azért lesz lavinamentes is, mert egyTitranzakció csak akkor olvashatja egy másikTj tranzakció írását, haTjmár elengedte a zárakat, de az meg csak COMMIT után lehet, amikor Tjmár biztos nem száll el.

Megjegyzések:

1.Elég az írások, a COMMIT és a zárkérések sorrendjét figyelni, ahhoz hogy jó ütemezés legyen és ráadásul ezt minden tranzakció meg tudja maga tenni, nem kell a többire figyelnie.

2.Mivel írás csak COMMIT után van, nem kell azzal sem bajlódni, hogy visszagörgessük az elszállt tranzakciókat, mert ezeknek még úgysem látszik semmi hatásuk.

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

(Azaz hogyan követik egymást a zárkiadások és zárelengedések?) Sorosítható-e az így kapott ütemezés, ha a sorosíthatóságról a zárolási sorozat alapján döntünk?. Ha igen,

Az adatbázis fogalmi keretének megadására jók, tervet lehet velük készíteni, amit aztán majd át kell alakítani az adatbáziskezel ˝o által használt formális megadási

Cél: Adott (R, F) sémából anomáliát nem tartalmazó olyan felbontás el ˝oállítása, amib ˝ol ugyanaz az információ nyerhet ˝o, mint az eredetib

Ez BCNF, de mégis redundáns, mert ha valamelyik tárgynál szerepel egy gyereknév, akkor az összes többinél is szerepelnie kell. beszúrni nehéz, mert amikor egy sort

Azok, amik csak véletlenül, csak egy pillanatban állnak fenn = ⇒ eseti függés (ezek nem érdekelnek, például lehetséges hogy egy adott pillanatban minden ár csak egyszer

• relációs algebra (LEAP, letölthet ˝o, SIGMOD-ról link), ISBL nehezen emészthet ˝obb, algebrai alapú; ez volt: láttuk, hogy relációs algebrával jól meg lehet adni

• relációs algebra (LEAP, letölthet ˝o, SIGMOD-ról link), ISBL nehezen emészthet ˝obb, algebrai alapú; ez volt: láttuk, hogy relációs algebrával jól meg lehet

• relációs algebra (LEAP, letölthet ˝o, SIGMOD-ról link), ISBL nehezen emészthet ˝obb, algebrai alapú; ez volt: láttuk, hogy relációs algebrával jól meg lehet