Plene funkcia dependeco estas stato de datumbazo normala, kiu egaligas al normala normo de Dua Normala Formo (2NF) . Mallonge, tio signifas, ke ĝi plenumas la kondiĉojn de Unua Normala Formo (1NF), kaj ĉiuj ne-klaraj atributoj tute funkcias dependa de la ĉefa ŝlosilo.
Ĉi tio ne estas tiel komplika kiel ĝi povas soni. Ni rigardu ĉi tion pli detale.
Resumo de Unua Normala Formo
Antaŭ datumbazo povas esti plene funkcie dependa, ĝi devas unue plenumi Unua Normala Formo .
Ĉio tio signifas, ke ĉiu atributo devas teni solan atoman valoron.
Ekzemple, la sekva tabulo ne plenumas kun 1NF, ĉar la oficisto Tina estas ligita al du lokoj, ambaŭ en unu ĉelo:
Dungito | Loko |
---|---|
Johano | Los-Anĝeleso |
Tina | La Anĝeloj, Ĉikago |
Permesante ĉi tiu dezajno povus negative efiki datumajn ĝisdatigojn aŭ enirojn. Por certigi 1NF-plenumon, reordigi la tablon por ke ĉiuj atributoj (aŭ kolumnaj ĉeloj) tenu unu valoron:
Dungito | Loko |
---|---|
Johano | Los-Anĝeleso |
Tina | Los-Anĝeleso |
Tina | Ĉikago |
Sed 1NF ankoraŭ ne sufiĉas por eviti problemojn kun la datumoj.
Kiel funkcias 2NF por certigi plenan dependecon
Esti plene dependa, ĉiuj ne-kandidaj ŝlosilaj atributoj devas dependi de la ĉefa ŝlosilo. (Memoru, kandidata ŝlosila atributo estas iu ajn ŝlosilo (ekzemple, primara aŭ fremda ŝlosilo) uzita por identigi unikan registron de datumbazo.
Database-diseñistoj uzas notacion por priskribi la dependajn interrilatojn inter atributoj:
Se la atributo A determinas la valoron de B, ni skribas ĉi tiun A -> B - signifante, ke B funkcie dependas de A. En ĉi tiu rilato, Fiksas la valoron de B, dum B dependas de A.
Ekzemple, en la sekva tablo de Oficialaj Fakoj , EmployeeID kaj DeptID estas ambaŭ kandidataj klavoj: EmployeeID estas la ĉefa ŝlosilo de la tablo dum DeptID estas fremda ŝlosilo.
Ajna alia atributo - en ĉi tiu kazo, EmployeeName kaj DeptName - devas dependi de la ĉefa ŝlosilo por akiri ĝian valoron.
EmployeeID | DungitoName | DeptID | DekretaName |
---|---|---|---|
Emp1 | Johano | Dept001 | Financo |
Emp2 | Tina | Dept003 | Vendoj |
Emp3 | Karolo | Dept001 | Financo |
En ĉi tiu kazo, la tablo ne plene dependas ĉar, dum la EmployeeName dependas de la ĉefa ŝlosilo EmployeeID, la DekretaName dependas anstataŭe de la DeptID. Ĉi tio nomas parcial dependeco .
Por ke ĉi tiu tablo laŭigas 2NF, ni devas disigi la datumojn en du tabulojn:
EmployeeID | DungitoName | DeptID |
---|---|---|
Emp1 | Johano | Dept001 |
Emp2 | Tina | Dept003 |
Emp3 | Karolo | Dept001 |
Ni forigas la atributon DeptName de la Oficistoj de la tablo kaj kreas novan tablon Fakoj :
DeptID | DekretaName |
---|---|
Dept001 | Financo |
Dept002 | Homaj rimedoj |
Dept003 | Vendoj |
Nun la rilatoj inter la tabloj estas plene dependaj, aŭ en 2NF.
Kial Plena Dependo Estas Grava
Plena dependeco inter datumbazoj atribuas helpojn por certigi la integrecon de datumoj kaj eviti datumajn anomaliojn.
Ekzemple, konsideru la tablon en la sekcio supre, kiu aliĝas nur al 1NF. Jen, denove:
Dungito | Loko |
---|---|
Johano | Los-Anĝeleso |
Tina | Los-Anĝeleso |
Tina | Ĉikago |
Tina havas du rekordojn. Se ni ĝisdatigas unu sen rimarki, ke ekzistas du, la rezulto estus nekonsistenta datumo.
Aŭ, kio se ni volas aldoni oficiston al ĉi tiu tablo, sed ni ankoraŭ ne konas la lokon? Oni ne rajtas aldoni novan oficiston, se la atributo de Loko ne permesas alvaloraj valoroj.
Plena dependeco ne estas la tuta bildo, tamen, kiam temas pri normaligo. Vi devas certigi, ke via datumbazo estas en Tria Normala Formo (3NF).