Täysi toimintojen riippuvuus tietokannan normalisoinnissa

Täydellinen funktionaalinen riippuvuus on tietokannan normalisoinnin tila, joka vastaa toisen normaalimuodon (2NF) normalisointistandardia. Lyhyesti sanottuna tämä tarkoittaa, että se täyttää ensimmäisen normaalimuodon (1NF) vaatimukset ja kaikki ei-avainmääritteet ovat täysin toiminnallisista riippuvaisia ​​ensisijaisesta avaimesta.

Tämä ei ole niin monimutkainen kuin saattaa kuulostaa. Tarkastellaan tätä yksityiskohtaisemmin.

Yhteenveto ensimmäisestä normaalimuodosta

Ennen kuin tietokanta voi olla täysin toimintakykyinen, sen on ensin noudatettava ensimmäisen normaalin lomakkeen .

Kaikki tämä tarkoittaa, että jokaisella attribuutilla on oltava yksi atominen arvo.

Esimerkiksi seuraava taulukko ei ole 1NF: n mukainen, koska työntekijä Tina on linkitetty kahteen paikkaan, jotka molemmat ovat samassa solussa:

Ensimmäinen normaalimuotoinen vaatimustenvastaisuus
Työntekijä Sijainti
Johannes Los Angeles
tina Los Angeles, Chicago

Tämän mallin salliminen voisi vaikuttaa kielteisesti päivityksiin tai tietueisiin. Jotta varmistat 1NF: n noudattamisen, järjestä taulukon uudelleenjärjestely niin, että kaikki attribuutit (tai sarakennoilla) ovat yhtä arvoa:

Ensimmäinen normaali muodon noudattaminen
Työntekijä Sijainti
Johannes Los Angeles
tina Los Angeles
tina Chicago

Mutta 1NF ei vieläkään riitä välttämään tietojen ongelmia.

Kuinka 2NF toimii varmistaakseen täydellisen riippuvuuden

Täysin riippuvainen, kaikki ehdokkaat, jotka eivät ole ehdokkaita, riippuvat ensisijaisesta avaimesta. (Muista, että ehdokkaan avainattribuutti on mikä tahansa avain (esimerkiksi ensisijainen tai ulkomainen avain), jota käytetään yksilöimään tietokannan tietue.

Tietokannan suunnittelijat käyttävät notaatiota kuvaamaan riippuvaisia ​​suhteita attribuuttien välillä:

Jos attribuutti A määrittää B: n arvon, kirjoitamme tämän A -> B -, mikä tarkoittaa, että B on toiminnallisesti riippuvainen A: sta. Tässä suhteessa A määrittää B: n arvon, kun taas B riippuu A: sta.

Esimerkiksi seuraavassa Työntekijöiden osastot -taulukossa Työntekijän tunnus ja DeptID ovat molemmat ehdokasavaimia: Työntekijä-ID on taulukon ensisijainen avain, kun taas DeptID on ulkomaalainen avain.

Jokin muu attribuutti - tässä tapauksessa Työntekijän nimi ja DeptName - riippuu ensisijaisesta avaimesta sen arvon saavuttamiseksi.

Työntekijöiden osastot
Henkilöstökortti Työntekijän nimi DeptID DeptName
Emp1 Johannes Dept001 Rahoittaa
Emp2 tina Dept003 Myynti
Emp3 Carlos Dept001 Rahoittaa

Tällöin taulukko ei ole täysin riippuvainen, koska työntekijän nimi riippuu ensisijaisen avaimen työntekijän ID: stä, mutta DeptName riippuu DeptID: stä. Tätä kutsutaan osittaiseksi riippuvuudeksi .

Jotta tämä taulukko olisi 2NF: n mukainen, meidän on erotettava tiedot kahteen taulukkoon:

Työntekijät
Henkilöstökortti Työntekijän nimi DeptID
Emp1 Johannes Dept001
Emp2 tina Dept003
Emp3 Carlos Dept001

Poistamme DeptName-attribuutin Työntekijät- taulukosta ja luodaan uusi taulukko Osastot :

osastot
DeptID DeptName
Dept001 Rahoittaa
Dept002 henkilöstöhallinto
Dept003 Myynti

Taulukoiden väliset suhteet ovat täysin riippuvaisia ​​tai 2NF: ssä.

Miksi koko riippuvuus on tärkeä

Täysi riippuvuus tietokantaominaisuuksien välillä auttaa varmistamaan tietojen eheyden ja välttämään tietojen poikkeavuuksia.

Katso esimerkiksi edellä olevan taulukon taulukko, joka noudattaa vain 1 NF. Tässä se on taas:

Ensimmäinen normaali muodon noudattaminen
Työntekijä Sijainti
Johannes Los Angeles
tina Los Angeles
tina Chicago

Tinnalla on kaksi kirjaa. Jos päivitämme ilman, että huomaat, että on olemassa kaksi, tulos olisi epäjohdonmukaista tietoa.

Tai mitä jos haluamme lisätä työntekijän tähän taulukkoon, mutta emme vielä tunne sijaintia? Voimme olla esteenä jopa lisätä uusi työntekijä, jos sijainti-attribuutti ei salli NULL-arvoja.

Täysi riippuvuus ei kuitenkaan ole koko kuva, vaikka se normalisoituu. Sinun on varmistettava, että tietokanta on kolmannessa normaalimuodossa (3NF).