Një varësi e plotë funksionale është një gjendje e normalizimit të bazës së të dhënave që përputhet me standardin e normalizimit të Formës së Dytë Normal (2NF) . Shkurtimisht, kjo do të thotë se i plotëson kërkesat e Formës së Parë Normal (1NF), dhe të gjitha atributet jo-kyçe varen plotësisht funksionalisht nga çelësi kryesor.
Kjo nuk është aq e komplikuar sa mund të tingëllojë. Le të shohim këtë në më shumë detaje.
Përmbledhje e formës së parë normale
Përpara se baza e të dhënave të mund të varet plotësisht funksionalisht, duhet së pari të përputhet me Formën e Parë të Përgjithshme .
E gjithë kjo do të thotë se çdo atribut duhet të mbajë një vlerë të vetme atomike.
Për shembull, tabela në vijim nuk përputhet me 1NF, sepse punonjësi Tina është i lidhur me dy lokacione, të dy në një qelizë të vetme:
punonjës | vend |
---|---|
nevojtore | Los Angjelos |
tina | Los Anxheles, Çikago |
Leja e këtij modeli mund të ndikojë negativisht në përditësimet e të dhënave ose hyrjet. Për të siguruar pajtueshmërinë me 1NF, riorganizoni tabelën në mënyrë që të gjitha atributet (ose qelizat e kolonës) të mbajnë një vlerë të vetme:
punonjës | vend |
---|---|
nevojtore | Los Angjelos |
tina | Los Angjelos |
tina | Çikago |
Por 1NF ende nuk mjafton për të shmangur problemet me të dhënat.
Si punon 2NF për të siguruar një varësi të plotë
Për të qenë plotësisht i varur, të gjitha atributet kryesore jo kandidatësh duhet të varen nga çelësi kryesor. (Mos harroni, një atribut kyç i kandidatit është çdo çelës (për shembull një çelës primar ose i huaj) që përdoret për të identifikuar një regjistër të bazës së të dhënave në mënyrë unike.
Dizajnerët e bazës së të dhënave përdorin një notim për të përshkruar marrëdhëniet e varur midis atributeve:
Nëse atributi A përcakton vlerën e B, ne shkruajmë këtë A -> B - do të thotë se B varet funksionalisht nga A. Në këtë marrëdhënie, A përcakton vlerën e B, ndërsa B varet nga A.
Për shembull, në tabelën e Departamenteve të Punonjësve në vijim, EmployeeID dhe DeptID janë të dy çelësat e kandidatëve: EmployeeID është çelësi kryesor i tabelës ndërsa DeptID është një çelës i jashtëm.
Çdo atribut tjetër - në këtë rast, EmployeeName dhe DeptName - duhet të varet nga çelësi primar për të marrë vlerën e tij.
EmployeeID | Emri i punonjësit | DeptID | DeptName |
---|---|---|---|
Emp1 | nevojtore | Dept001 | financë |
Emp2 | tina | Dept003 | Sales |
Emp3 | Carlos | Dept001 | financë |
Në këtë rast, tabela nuk është plotësisht e varur sepse, ndërkohë që emri i punonjësit varet nga EmployeeID kryesore kyçe, DeptName varet nga DeptID. Kjo quhet varësia e pjesshme .
Për ta bërë këtë tabelë në përputhje me 2NF, ne duhet t'i ndajmë të dhënat në dy tabela:
EmployeeID | Emri i punonjësit | DeptID |
---|---|---|
Emp1 | nevojtore | Dept001 |
Emp2 | tina | Dept003 |
Emp3 | Carlos | Dept001 |
Ne heqim atributin DeptName nga tabela e Punonjësve dhe krijojmë një tabelë të re. Departamentet :
DeptID | DeptName |
---|---|
Dept001 | financë |
Dept002 | Burimet njerëzore |
Dept003 | Sales |
Tani marrëdhëniet midis tabelave janë plotësisht të varura, ose në 2NF.
Pse Varësia e plotë është e rëndësishme
Varësia e plotë midis atributeve të bazës së të dhënave ndihmon në sigurimin e integritetit të të dhënave dhe shmangies së anomalive të të dhënave.
Për shembull, konsideroni tabelën në seksionin e mësipërm që përputhet vetëm me 1NF. Këtu është përsëri:
punonjës | vend |
---|---|
nevojtore | Los Angjelos |
tina | Los Angjelos |
tina | Çikago |
Tina ka dy rekorde. Nëse e përditësojmë një, pa e kuptuar se ka dy, rezultati do të ishte të dhëna të paqëndrueshme.
Ose, çka nëse duam të shtojmë një punonjës në këtë tryezë, por ende nuk e njohim Vendndodhjen? Mund të mos lejojmë që të shtojmë edhe një punonjës të ri nëse Atributi i Vendit nuk lejon vlerat NULL.
Varësia e plotë nuk është e gjithë fotografia, edhe pse, kur është fjala për normalizimin. Duhet të siguroheni që baza juaj e të dhënave të jetë në formën e tretë normale (3NF).