A fullur hagnýtur ósjálfstæði er ástand af stöðluðum gagnagrunni sem jafngildir eðlilegum staðli Second Normal Form (2NF) . Í stuttu máli þýðir þetta að það uppfylli kröfur fyrsta eðlisforms (1NF), og allir eiginleikar sem ekki eru lykilatriði eru að fullu virkir háð aðalatriðum.
Þetta er ekki eins flókið og það hljómar. Við skulum skoða þetta ítarlega.
Yfirlit yfir fyrsta eðlilegu eyðublað
Áður en gagnagrunnur getur verið fullkomlega virkni háð verður hann fyrst að uppfylla fyrstu eðlilegu eyðublaðið .
Allt þetta þýðir að hver eiginleiki verður að halda einum, atómagildi.
Til dæmis er eftirfarandi tafla ekki í samræmi við 1NF, vegna þess að starfsmaðurinn Tina er tengdur við tvær staðsetningar, bæði í einum reit:
| Starfsmaður | Staðsetning |
|---|---|
| John | Los Angeles |
| Tina | Los Angeles, Chicago |
Leyfa þessari hönnun gæti haft neikvæð áhrif á gagnasendingar eða færslur. Til að tryggja samræmi við 1NF, endurstilltu töfluna þannig að allir eiginleikar (eða dálkurfrumur) halda einu gildi:
| Starfsmaður | Staðsetning |
|---|---|
| John | Los Angeles |
| Tina | Los Angeles |
| Tina | Chicago |
En 1NF er ennþá ekki nóg til að koma í veg fyrir vandamál með gögnin.
Hvernig 2NF vinnur að því að tryggja fullan tilhneigingu
Til að vera fullkomlega háð skal öll lykilatriði sem ekki eru frambjóðandi vera háð aðal takkanum. (Mundu að eiginleiki frambjóðandi lykill er hvaða lykill (til dæmis aðal eða erlend lykill) sem notaður er til að bera kennsl á gagnasöfn.
Gagnasafnshönnuðir nota merkingu til að lýsa háð samböndum milli eiginleika:
Ef eigindi A ákvarðar gildi B skrifum við þetta A -> B - sem þýðir að B er virkni háð A. Í þessu sambandi ákvarðar A gildi B, en B fer eftir A.
Til dæmis, í eftirfarandi töflu starfsmanna deildar eru starfsmenn og DeptID bæði frambjóðandi lyklar: StarfsmaðurID er aðal lykill borðsins en DeptID er erlent lykill.
Allir aðrir eiginleiki - í þessu tilviki, Starfsmaður og DeptName - verður að vera háð aðal takkanum til að fá gildi þess.
| Starfsmaður | Nafn starfsmanns | DeptID | DeptName |
|---|---|---|---|
| Emp1 | John | Dept001 | Fjármál |
| Emp2 | Tina | Dept003 | Sala |
| Emp3 | Carlos | Dept001 | Fjármál |
Í þessu tilviki er borðið ekki að fullu háð því að starfsmaðurinn veltur á aðal lykilatriðum Starfsmaður, fer DeptName í staðinn á DeptID. Þetta er kallað að hluta til háðs .
Til að gera þetta borð í samræmi við 2NF, þurfum við að skilja gögnin í tvær töflur:
| Starfsmaður | Nafn starfsmanns | DeptID |
|---|---|---|
| Emp1 | John | Dept001 |
| Emp2 | Tina | Dept003 |
| Emp3 | Carlos | Dept001 |
Við fjarlægjum DeptName eiginleiki úr starfsmannatöflunni og búið til nýtt borð Deildir :
| DeptID | DeptName |
|---|---|
| Dept001 | Fjármál |
| Dept002 | Mannauður |
| Dept003 | Sala |
Nú eru samböndin milli borðanna að fullu háð eða í 2NF.
Af hverju er full ástæða mikilvægt
Full áreiðanleiki milli eiginleika gagnagrunns hjálpar til við að tryggja gagnkvæmni og forðast galla frávikum.
Tökum dæmi um borð í töflunni hér fyrir ofan sem fylgir aðeins 1NF. Hér er það, aftur:
| Starfsmaður | Staðsetning |
|---|---|
| John | Los Angeles |
| Tina | Los Angeles |
| Tina | Chicago |
Tina hefur tvær færslur. Ef við uppfærum einn án þess að átta sig á að það séu tveir, myndi niðurstaðan vera ósamræmi gögn.
Eða, hvað ef við viljum bæta starfsmanni við þessa töflu, en við þekkjum ekki staðsetninguna ennþá? Við gætum verið útilokað að jafnvel bæta við nýjum starfsmanni ef staðsetningaraðgangurinn leyfir ekki NULL gildi.
Fullur tilhneiging er þó ekki allur myndin, þegar kemur að eðlilegu. Þú verður að ganga úr skugga um að gagnagrunnurinn þinn sé í þriðja eðlilegu formi (3NF).