• Nu S-Au Găsit Rezultate

G˘ asirea cheilor candidat utilizˆ and dependent¸ele funct¸ionale

N/A
N/A
Protected

Academic year: 2022

Share "G˘ asirea cheilor candidat utilizˆ and dependent¸ele funct¸ionale"

Copied!
41
0
0

Text complet

(1)

Baze de date relat¸ionale Normalizarea bazelor de date

Nicolae-Cosmin Vˆarlan

November 11, 2019

(2)

2/ 41

Modelul relat¸ional - chei (recapitulare de la primul curs)

I Supercheie- un atribut sau o mult¸ime de atribute care identific˘a unic un tuplu ˆıntr-o relat¸ie

I Cheie candidat - o supercheie cu proprietatea c˘a nici o submult¸ime proprie a sa nu este supercheie

I Cheie primar˘a- o cheie candidat selectat˘a pentru a identifica ˆın mod unic tuplele ˆıntr-o relat¸ie

I Cheie alternativ˘a - Chei candidat care nu au fost selectate pentru a juca rolul de cheie primar˘a

I Cheie str˘ain˘a- un atribut sau o submult¸ime de atribute dintr-o relat¸ie care face referint¸˘a la o cheie candidat a altei relat¸ii

(3)

G˘ asirea cheilor candidat utilizˆ and dependent¸ele funct¸ionale

Intuitiv: Cheia candidat, este de fapt format˘a dintr-o combinat¸ie de atribute care pot determina unic linia. Dac˘a pot determina unic linia (deci oricare dintre valorile celorlalte atribute), atunci putem considera c˘a avem o dependent¸a funct¸ionala de laX⊆U c˘atre toate atributele dinU atunciX este cheie ˆın orice relat¸ier construit˘a peste R[U].

Formal: FieR[U]o schem˘a de relat¸ie ¸si Σo mult¸ime de dependent¸e funct¸ionale satisf˘acute deR[U]. X⊆U este cheie candidat d.dac˘aX+=U ¸si∀X0 ⊆X, X0+6=U

Un atribut se nume¸steprim dac˘a face parte dintr-o cheie candidat.

Un atribut esteneprim dac˘a nu este parte din nicio cheie candidat.

(4)

4/ 41

. . . reminder (din cursul 2)

FieX⊆U siRAregulile de inferent¸˘a ale lui Armstrong. Not˘am cu XR+

A ={A|Σ`RA X→A}

Regulile de inferent¸˘a ale lui Armstrong:

A1: A

1...An→Ai, i= 1, n A2: A1,...AA m→B1,...Br

1...Am→Bj , j = 1, r

A1,...Am→Bj, j=1,r A1...Am→B1,...Br

A3: A1,...Am→BA1,...Br, B1,...Br→C1,...Cp

1...Am→C1,...Cp

(5)

Revenim - Exemplul 1:

S˘a consider˘am U ={A, B, C}¸siΣ ={A→B, B →C}. Vom construi mult¸imeaXR+

A pentru fiecare dintre atribute:

A+R

A ={A, B, C} (Adin A1,B dinA→B,

C dinA→B,B →C ¸si folosind A3) BR+

A ={B, C} (B din A1,C din B→C) CR+

A ={C} (C dinA1)

Se observ˘a c˘a A este cheie candidat pentru c˘a de el depind (funct¸ional) celelalte atribute.

Atribute prime: {A}

Atribute neprime: {B, C}

(6)

6/ 41

S˘a consider˘am U ={A, B, C}si Σ ={A→B, B →C}. Vom construi mult¸imeaXR+

A pentru fiecare dintre atribute:

Putem organiza atributele t¸inˆand cont de locul unde apar ele ˆın cadrul dependent¸elor dinΣ:

I Stˆanga: Apar numai ˆın partea stang˘a a dependent¸elor dinΣ.

I Mijloc: Apar ¸si ˆın stˆanga ¸si ˆın dreapta dependent¸elor din Σ.

I Dreapta: Apar numai ˆın partea dreapt˘a ˆın dependet¸ele dinΣ.

Stˆanga Mijloc Dreapta

A B C

Regul˘a: ˆıntotdeauna atributele din Stˆanga sunt atribute prime, cele din Dreapta sunt neprime. Cele din Mijloc pot fi ˆın oricare dintre categorii.

(7)

Exemplul 2:

FieU ={A, B, C, D, E, F}¸si

Σ ={A→BD, B→C, DE →F}. Care sunt cheile candidat ?

(8)

8/ 41

Exemplul 2:

FieU ={A, B, C, D, E, F}¸si

Σ ={A→BD, B→C, DE →F}. Care sunt cheile candidat ? Stˆanga Mijloc Dreapta

A, E B, D C, F A+R

A ={A, B, C, D}- nu e cheie (nu cont¸ine F), dar cu sigurant¸˘a apare ˆın orice cheie.

De fapt, am stabilit c˘a fiecare cheie candidat va cont¸ine toate atributele din “Stˆanga” - ˆın cazul nostru pe A¸si pe E:

AER+

A ={A, B, C, D, E, F}

AE =cheie multivaluat˘a(este compus˘a din mai multe atribute).

(9)

Exemplul 3:

FieU ={A, B}¸siΣ ={A→B, B→A}. Care sunt cheile candidat ?

(10)

10/ 41

Exemplul 3:

FieU ={A, B}¸siΣ ={A→B, B→A}. Care sunt cheile candidat ?

Stˆanga Mijloc Dreapta A, B

A+R

A ={A, B}

BR+

A ={A, B}

Ambele sunt chei candidat.

Atribute prime: {A, B}

Atribute neprime: ∅

(11)

Dependent¸e pline

FieR[U]o schema de relat¸ie peste o mult¸ime de atributeU ¸siΣo mult¸ime de dependent¸e funct¸ionale ce au loc ˆınR[U]. O

dependent¸aX →A∈Σ+ se nume¸steplin˘adac˘a @X0⊂X astfel ˆıncˆatX0 →A∈Σ+.

Exemplu:

R[A, B, C, D]

Σ ={AB→C, B→D, BC →A}

Toate dependent¸ele dinΣsunt pline (e.g. nu avem ˆınΣ+ nici una dintre dependent¸ele: A→C,B →C,B →A,C →A).

AB→D nu este plin˘a pentru c˘aB ⊂AB ¸si avemB →D∈Σ+

(12)

12/ 41

Atribut tranzitiv dependent

FieR[U]o schem˘a de relat¸ie peste o mult¸ime de atribute U ¸siΣo mult¸ime de dependent¸e funct¸ionale ce au loc ˆınR[U]. Un atribut A∈U se nume¸ste tranzitiv dependent de X (X⊂U, A6∈X) dac˘a∃Y ⊂U astfel ˆıncˆat:

I A∈U−Y I X →Y ∈Σ+ I Y →A∈Σ+ I Y →X6∈Σ+ Exemplu:

R[A, B, C, D, E]

Σ ={AB→C, AB →D, CD→E}

E este tranzitiv dependent de AB (X =AB, Y =CD).

(13)

Dependent¸e triviale

O dependent¸˘a funct¸ional˘a X→Y este trivial˘a dac˘a ¸si numai dac˘a Y ⊆X

O dependent¸˘a multivaluat˘aXY este trivial˘a dac˘a Y ⊆X sau dac˘aZ =∅(X∪Y =U)

(14)

14/ 41

Normalizarea schemelor bazelor de date

Normalizarea este necesar˘a din dou˘a motive:

I Pentru eliminarea redundant¸elor.

I Pentru a p˘astra datele ˆıntr-o manier˘a consistent˘a.

Normalizarea trebuie f˘acut˘a ˆınc˘a din faza de proiectare a bazei de date ¸si din acest motiv este firesc s˘a vorbim despre

NORMALIZAREA SCHEMEIbazei de date ¸si nu despre normalizarea anumitor relat¸ii.

Exist˘a mai multe forme normale (clasice), fiecare aducˆand ceva ˆın plus fat¸˘a de forma precedent˘a: 1NF, 2NF, 3NF, BCNF, 4NF.

S˘a vedem ˆın ce constau. . .

(15)

1NF (1971)

FieU o mult¸ime de atribute ¸siR[U]o schema de relat¸ie.

Spunem c˘a schema de relat¸ieR[U]este ˆın Forma Normala 1 (1NF) dac˘a ¸si numai dac˘a domeniile atributelor sunt indivizibile ¸si fiecare valoare a fiec˘arui atribut este atomic˘a.

Pentru a avea o relat¸ie ˆın 1NF, trebuie efectuate urm˘atoarele operat¸ii:

I Eliminarea grupurilor repetitive din fiecare relat¸ie.

I Identificarea tuplelor ce ar putea avea duplicate ˆın coloan˘a printr-o cheie.

I Crearea unei noi scheme de relat¸ie avˆand ca atribute:

identificatorul de la punctul precedent ¸si valoarea repetat˘a ca atribut atomic.

(16)

16/ 41

1NF

Exemplu:

Avem schema: Studenti[nr matricol, nume, prenume, an] ˆın care student¸ii ar putea avea cˆate dou˘a prenume:

r :

nr matricol nume prenume an

1 Ionescu Maria Ioana 1

2 Popescu Vasile 1

3 Vasilescu Vali Cristi 2 Pasul 1: Elimin˘am grupul repetitiv:

r:

nr matricol nume an

1 Ionescu 1

2 Popescu 1

3 Vasilescu 2

(17)

1NF

Pasul 2: Identificam cheia:

r:

nr matricol nume an

1 Ionescu 1

2 Popescu 1

3 Vasilescu 2

Pasul 3: Creare relat¸ie ˆın care fiecare valoare apare pe un rˆand nou

¸si e legat˘a de relat¸ia principal˘a prin intermediul cheii:

r0:

nr matricol prenume

1 Maria

1 Ioana

2 Vasile

3 Vali

3 Cristi

(18)

18/ 41

1NF

De¸si ar putea p˘area c˘a am utilizat efectiv relat¸ia care este construita pesteR[U], ˆın fapt nu am facut decˆat s˘a modific˘am schema de realat¸ieR[U]¸si s˘a construim o nou˘a schem˘a de relat¸ie ˆın schema bazei noastre de date denumita R0[U].

Pasul 1: de fapt a eliminat atributul “prenume” din mult¸imeaU. Pasul 2: de fapt a identificat o cheie candidat (ce se poate face direct din schem˘a - vezi cum am gasit o cheie candidat din dependent¸ele funct¸ionale).

Pasul 3: de fapt a construit o nou˘a schem˘a de relat¸ie R0[U] S-ar putea ca ˆın unele locuri s˘a ˆıntˆalnit¸i ideea c˘a relat¸ia este ˆıntr-o anumit˘a form˘a normal˘a. Aceasta idee este incorect˘a datorit˘a faptului c˘a normalizarea se realizeaz˘a ˆınainte de a crea baza de date, ˆın stadiul de proiectare a acesteia !

(19)

2NF (1971)

O schema de relat¸ieR[U]care este ˆın 1NF, ˆımpreun˘a cu o mult¸ime de dependent¸e funct¸ionaleΣeste ˆın a doua form˘a normal˘a (2NF) dac˘a orice atribut neprim dinR[U]este dependent plin de orice cheie a luiR[U].

S˘a relu˘am exemplul de la dependent¸e pline:

R[A, B, C, D]

Σ ={AB→C, B→D, BC →A}

1. Gasit¸i cheile

2. Gasit¸i atributele neprime

3. Atributele neprime sunt dependente plin de cheile g˘asite ?

(20)

20/ 41

2NF

Sa reluam exemplul de la dependent¸e pline:

R[A, B, C, D]

Σ ={AB→C, B→D, BC →A}

Posibilele chei: AB,BC Atribute prime: A, B, C Atribute neprime: D

B→D∈Σ+. D nu este dependent plin de AB pentru c˘a, de¸si avemAB→D∈Σ+, avem ¸si B →D∈Σ+ rezult˘a c˘a R[U] ˆımpreun˘a cu Σnu este ˆın 2NF.

Observat¸ie: dac˘a nu avem chei multivaluate, cu sigurant¸˘aR[U] este ˆın 2NF (pentru c˘a avem numai dependent¸e pline de la chei - nu putem g˘asi submult¸imi de atribute atunci cˆand cheia este format˘a dintr-un singur atribut).

(21)

2NF

Avˆand o schem˘a de relat¸ie R[U]care nu este ˆın 2NF, putem s˘a o ducem ˆın 2NF urmˆand urm˘atorii pa¸si:

Pasul 1: Identific˘am cheile candidat.

Pasul 2: G˘asim atributele neprime.

Pasul 3: Pentru fiecare din atributele neprimeA identific˘am care sunt atributele dintr-o cheie de care depindeA.

Pasul 4: Cre˘am o nou˘a relat¸ieR0 peste acele atribute identificate la pasul anterior ˆımpreun˘a cu atributul neprim pentru care s-a g˘asit dependent¸a.

Urmat¸i cei patru pa¸si pentru exemplul anterior care nu era ˆın 2NF.

(22)

22/ 41

2NF

Exemplu: Dac˘a avem schema de relat¸ie OS[nume, versiune, an, companie]

nume versiune an companie

Windows XP 2001 Microsoft

MacOS Sierra 2017 Apple

Ubuntu Bionic Beaver 2018 Ubuntu

Windows 7 2009 Microsoft

MacOS Mojave 2018 Apple

De obicei, cand ne exprim˘am, spunem c˘a Windows XP este facut de Microsoft. Avem dependent¸a: nume,versiune → companie. ˆIn acela¸si timp, ¸stim c˘a Windows este f˘acut numai de Microsoft ¸si MacOS numai de Apple. Deci avem ¸sinume → companie. Fiecare versiune este f˘acut˘a ˆıntr-un anumit an. Avem: versiune→ an.

(23)

2NF

dependent¸e:

I nume,versiune → companie I nume → companie

I versiune→ an

Cheie: (nume, versiune) (apar ˆın stˆanga dependent¸elor) Atribute neprime: companie

companienu este dependent plin pentru c˘a, de¸si avem

nume,versiune→ companie, totodat˘a avem ¸sinume→ companie.

Vom elimina din schema OS atributul companie ¸si vom ad˘auga o schem˘a de relat¸ieR0[nume, companie].

Vom avea a¸sadar. . .

(24)

24/ 41

2NF

nume versiune an

Windows XP 2001

MacOS Sierra 2017

Ubuntu Bionic Beaver 2018

Windows 7 2009

MacOS Mojave 2018

¸si

nume companie Windows Microsoft

MacOS Apple

Ubuntu Ubuntu

Este ˆın 2NF ? Mai avem de verificat dac˘a an este dependent plin sau nu. . . s˘a vedem cum facet¸i asta voi :D

(25)

3NF (1971)

Schema de relat¸ie R[U] ˆımpreun˘a cu mult¸imea de dependent¸e funct¸ionaleΣeste ˆın forma a treia normal˘a (3NF) dac˘a este ˆın 2NF ¸si orice atribut neprim din RNU este tranzitiv dependent de nici o cheie a lui R.

(Adic˘a e ˆın 2NF ¸si orice atribut neprim depinde de chei ¸si nu de un alt atribut neprim sau grupare de atribute neprime)

Exemplu:

Consider˘am schema de relat¸ieR[A, B, C]¸si Σ ={AB→C, C →A}

Chei: AB, BC

Atribute neprime: ∅ - deci este ˆın 2NF ¸si ˆın 3NF.

(26)

26/ 41

3NF - glumit¸a de pe wikipedia. . . .

An approximation of Codd’s definition of 3NF, paralleling the traditional pledge to give true evidence in a court of law, was given by Bill Kent: [Every] non-key [attribute] must provide a fact about the key, the whole key, and nothing but the key. 1

A common variation supplements this definition with the oath: so help me Codd2.

1Kent, William - A Simple Guide to Five Normal Forms in Relational Database Theory, Communications of the ACM 26 (2), Feb. 1983, pp. 120 125.

2Diehr, George. Database Management (Scott, Foresman, 1989), p. 331.

(27)

3NF

Exemplu de normalizare 3NF

Fie schema: Concursuri[materie, an, castigator, IQ], prin IQ referindu-ne la IQ-ul cˆastig˘atorului.

Se observ˘a c˘a avem dependent¸ele funct¸ionale:

Σ ={(materie, an)→castigator, castigator→IQ}

Cheie primara: (materie, an) Atribute neprime: IQ Se observ˘a c˘a (materie, an)→IQ∈Σ+, ¸si ˆın acela¸si timp materie→IQ6∈Σ+ respectivan→IQ6∈Σ+. Deci schema de relat¸ie se afl˘a ˆın 2NF (atributele neprime fiind dependente plin de chei).

Vom normaliza schema pentru

Concursuri[materie, an, castigator, IQ]prin construirea a dou˘a scheme diferite: Concursuri[materie, an, castigator]¸si

(28)

28/ 41

BCNF (Boyce-Codd Normal Form) ≡ 3.5NF (1975)

O schem˘a de relat¸ieR[U]ˆımpreuna cu o mult¸ime de dependent¸eΣ este ˆın BCNF dac˘a este ˆın 1NF ¸si pentru orice dependent¸a

funct¸ional˘a netrivial˘aX→A∈Σ+,X estesupercheie ˆınR[U].

Observat¸ie: O schem˘a de relat¸ie ce este ˆın BCNF este ˆın 3NF.

(29)

Obs: O schem˘ a ce este ˆın BCNF este ¸si ˆın 3NF.

Consideram(R,Σ)ˆın BCNF - ˆın 1NF este sigur din definit¸ie.

a)PP (RA) c˘a nu e ˆın 2NF, adic˘a exist˘a un atribut neprimA ¸si o cheieK ¸siA nu este dep. plin de K. Adic˘a exist˘aX⊂K a.i.

X→A∈Σ+. Deoarece nu consider˘am dep. triviale avem c˘a A6∈K. Atunci X este cheie (pentru c˘a (R,Σ) este ˆın BCNF).

Ceea ce ˆınseamn˘a c˘aK nu este cheie (pentru c˘a trebuia s˘a fie minimal˘a).

b) Deci(R,Σ)ce este ˆın BCNF trebuie s˘a fie ˆın 2NF.PP (RA) c˘a nu ar fi ˆın 3NF: adic˘a exist˘a un atributA tranzitiv dependent de o cheieX. Adica exist˘aY a.ˆı. A6∈X,A6∈Y ¸si avem c˘a:

X→Y ∈Σ+,Y →A∈Σ+¸siY →X6∈Σ+. Y nu cont¸ine nicio cheie pentru c˘a altfel am avea Y → ∀ ∈Σ+ deci ¸siY →X∈Σ+. Deoarece Y nu este cheie ¸si totusi amY →A∈Σ+ avem c˘a

(30)

30/ 41

Descompunerea de tip join f˘ ar˘ a pierdere

Consider˘am o schem˘a de relat¸ie R[A1, A2, . . . An]. Spunem despre o mult¸imeρ={R1[Ai1

1, Ai1

2, . . . Ai1

k1

], R2[Ai2

1, Ai2

2, . . . Ai2

k2

]. . . Rt[Ait

1, Ait

2, . . . Ait

kt]} c˘a este odescompunere de tip join a lui R[A1, A2, . . . An]dac˘a:

t

[

p=1 kp

[

r=1

Aipr ={A1. . . An}

ρeste o descompunere de tip join f˘ar˘a pierdere cu privire la o multime de dependente functionaleΣdac˘a∀r peste R ce satisface mult¸imea de dependent¸e funct¸ionaleΣ, avem c˘a

r=r[Ai1

1, Ai1

2, ..Ai1

k1

]./ r[Ai2

1, Ai2

2, ..Ai2

k2

]./.. r[Ait

1, Ait

2, ..Ait

kt].

(31)

Descompunerea de tip join f˘ ar˘ a pierdere

Teorem˘a: Dac˘aρ={R1, R2} este o descompunere a luiR¸siΣ o mult¸ime de dependent¸e funct¸ionale, atunciρ este o decompunere de tip join f˘ar˘a pierdere cu privire la Σdac˘a ¸si numai dac˘a R1∩R2→R1−R2 ∈Σ+ sauR1∩R2 →R2−R1∈Σ+ (operat¸iile sunt de fapt pe atributele peste care sunt construite schemele)

Exemplu: Consider˘am R[A, B, C]¸siΣ ={A→B}.

ρ1 ={R1[A, B], R2[A, C]}este f˘ar˘a pierdere deoarece:

AB∩AC =A, AB−AC =B ¸siA→B ∈Σ+ ρ2 ={R1[A, B], R2[B, C]}este cu pierdere deoarece:

AB∩BC =B, AB−BC =A¸siB →A 6∈Σ+ AB∩BC =B, BC−AB=C ¸siB →C 6∈Σ+

Testati cele doua desc. pentrur={(1,1,2),(1,1,3),(2,1,2)}.

(32)

32/ 41

Descompunerea de tip join f˘ ar˘ a pierdere

Putem calculaΣi pentruRi[Ui]¸si continua procesul de

descompunere pˆan˘a cˆand ajungem la scheme de relat¸ie ce sunt ˆın BCNF.Σi={X→Y|X, Y ∈Ui} - adic˘a, pentru Ri[Ui]ce este un element al descompuneriiρ lu˘am acele dependent¸e din Σcare sunt peste atributele ce sunt ˆınUi.

Pentru exemplul precedent:

Consider˘amR[A, B, C]¸siΣ ={A→B}.

ρ1 ={R1[A, B], R2[A, C]}este f˘ar˘a pierdere deoarece:

AB∩AC =A, AB−AC =B siA→B ∈Σ+ avem c˘aΣ1 ={A→B}¸siΣ2 =∅

(33)

Alg. pt. descompunerea ˆın join f˘ ar˘ a pierdere de tip BCNF

Intrare: (R,Σ)

Ie¸sire: ρ={(R11), . . .(Rtt)}= descompunere f˘ar˘a pierdere a lui R cu privire laΣ. Unde (Rii)ˆın BCNF, ∀i∈ {1..t}

Pas 1: ρ=R=R1; se caculeaz˘a Σ+ ¸si cheile dinR (necesare verificarii formei BCNF).

Pas 2: Cˆat timp exist˘a ˆın ρun cuplu (Rii) ce nu e ˆın BCNF (daca nu e in BCNF atunci existaX→A si X nu esupercheie):

Pas 2.1: AlegeX→A dinΣi a.i. A6∈X ¸si X nu cont¸ine cheie Pas 2.2: S1 =X∪ {A}; S2=Ri−A;

Pas 2.3: ρ=ρ−Ri; ρ=ρ∪S1∪S2; Pas 2.4: Se caculeaz˘aΣ+S

1+S

2 ¸si cheile pentruS1 ¸siS2.

(34)

34/ 41

Exemplu

Schema de relat¸ie:

Absolvent(CNP, aNume, adresa,lCod, lNume, lOras, medie, prioritate)

Σ={CNP → aNume,adresa,medie medie→ prioritate lCod→ lNume, lOras}

Se descompune ˆın:

. . . calculati

(35)

Exemplu

Schema de relat¸ie:

Absolvent(CNP, aNume, adresa,lCod, lNume, lOras, medie, prioritate)

Σ={CNP → aNume,adresa,medie medie→ prioritate lCod→ lNume, lOras}

Se descompune ˆın:

ρ={R1[lCod, lNume, lOras], R2[medie, prioritate], R3[CNP, aNume, adresa, medie], R4[CNP, lCol]}

(36)

36/ 41

Dependente multivaluate (quick reminder)

Definition

Relat¸iar pesteU satisface dependent¸a multivaluat˘aXY dac˘a pentru oricare dou˘a tuple t1, t2∈r satisf˘acˆandt1[X] =t2[X], exist˘a tuplele t3 ¸sit4 din r, astfel ˆıncˆat:

I t3[X] =t1[X], t3[Y] =t1[Y], t3[Z] =t2[Z];

I t4[X] =t2[X], t4[Y] =t2[Y], t4[Z] =t1[Z]

undeZ=U−XY (Z mai este denumit˘a ¸sirest).

Relat¸iar pesteU satisface dependent¸a multivaluat˘aXY, dac˘a pentru oricet1, t2 ∈r cu t1[X] =t2[X]avem c˘a

MY(t1[XZ]) =MY(t2[XZ])

undeMY(t[XZ]) ={t0[Y]|t0 ∈r, t0[XZ] =t[XZ]} .

(37)

Dependente multivaluate (exercitiu)

Aratati caACBD:

r:

A B C D E

8 1 2 0 4

8 9 2 2 9

9 3 2 4 9

8 1 2 0 9

8 9 2 2 4

9 3 2 4 4

Candr[AC] ={(8,2)}avemr[BD] ={(1,0),(9,2)}si

r[E] ={(4),(9)}. Gasim toate produsele carteziene dintre cele 3 ? Candr[AC] ={(9,2)}avemr[BD] ={(3,4)} si

r[E] ={(4),(9)}. Gasim toate produsele carteziene ? DA (este MVD)

(38)

38/ 41

4NF (Ronald Fagin) (1977)

O schem˘a de relat¸ie Rˆımpreuna cu o mult¸ime de dependent¸e multivaluate∆(delta) este ˆın 4NF dac˘a este ˆın 1NF ¸si pentru orice dependent¸a multivaluat˘a netrivial˘aX A∈∆+,X este supercheie pentru R.

Observat¸ie: O schem˘a de relat¸ie ce este ˆın 4NF este ˆın BCNF.

Putem presupune ca nu este in BCNF ceea ce inseamna ca exista d.f. a.i. X →A∈Σ+ si X nu este cheie. Atunci exista aceeasi dependenta si multivaluata (X A∈∆+ ) si X nu este cheie:

deci nu este 4NF

(39)

Descompunere in 4NF

Intrare: (R,Σ,∆)

Ie¸sire: ρ={R1, . . . , Rt} = descompunere f˘ar˘a pierdere a lui R cu privire laΣ. Unde (Rii,∆i)ˆın 4NF,∀i∈ {1..t}

Pas 1: ρ=R=R1; se caculeaz˘a Σ+.∆+ ¸si cheile dinR (necesare verificarii formei 4NF).

Pas 2: Cˆat timp exist˘a ˆın ρun triplet (Rii,∆i) ce nu e ˆın 4NF (daca nu e in 4NF atunci existaXA si X nu esupercheie):

Pas 2.1: AlegeXA dinΣi a.i. A6∈X ¸si X nu e supercheie Pas 2.2: S1 =X∪ {A}; S2=Ri−A;

Pas 2.3: ρ=ρ−Ri; ρ=ρ∪S1∪S2; Pas 2.4: Cacul˘amΣ+S

1,∆+S

1+S

2,∆+S

2 ¸si cheile pentru S1 ¸siS2.

(40)

40/ 41

Exemplu de descompunere in 4NF

Consideram schema: Student[cnp, nume, facultate, pasiune]

Studentul poate fi la doua facultati si sa aiba mai multe pasinui:

cnp→ nume;

cnp,nume facultate;

Se descompune in:

ρ= {S1[cnp, nume], S2[cnp, facultate], S3[cnp, pasiune]}.

(41)

Bibliografie

I Further Normalization of the Data Base Relational Model. - Frank Edgar Codd; IBM Research Report RJ909 (August, 1971)

I Baze de date relat¸ionale. Dependent¸e - Victor Felea; Univ. Al.

I. Cuza, 1996

Referințe

DOCUMENTE SIMILARE

, Slack convexity with respect to a given set, in Seminarul itinerant de ecuat¸ii funct¸ionale, aproximare ¸si convexitate, 1985, Cluj-Napoca, “Babe¸s-Bolyai” University

• Totusi eager fetching nu este bun atunci cand este nevoie doar de tabela cu angajati (aduce si date irelevante) – nu am nevoie de vanzari pentru a face o carte de telefoane

• Totusi eager fetching nu este bun atunci cand este nevoie doar de tabela cu angajati (aduce si date irelevante) – nu am nevoie de vanzari pentru a face o carte de telefoane

De¸si ˆıntreb˘arile au un caracter general, ˆın sensul c˘a ¸si le poate pune orice profesor de matematic˘a (sau om de ¸stiint¸a, sau ¸si mai general, orice om) r˘aspunsurile

De¸si ˆın ambele cazuri de mai sus (S ¸si S ′ ) algoritmul Perceptron g˘ ase¸ste un separator liniar pentru datele de intrare, acest fapt nu este garantat ˆın gazul general,

vectoriale tangente la S, se nume¸ste tensorul de curbur˘a a lui S.. Consider˘am ˆın U o submult¸ime B care este interiorul unei curbe ˆınchise de clas˘a C 2 notat˘a prin

Pentru a suprprinde acest aspect, cuvintele care apar m˘ acar de 5 ori ˆın datele de antrenament ¸si dac˘ a apar de 5 ori mai des ˆın glume decˆ at ˆın non-glume sunt p˘

Am ar˘ atat c˘ a orice ¸sir Cauchy este m˘ arginit ¸si c˘ a orice ¸sir m˘ arginit de numere reale cont¸ine un sub¸sir convergent... Num˘ arul inf M este cel mai mare minorant