Tietokannan asettaminen ensimmäiseen normaalimuotoon

First Normal Form (1NF) sisältää kaksi perussääntöä a normalisoitu ja järjestetty tietokanta. Ensimmäinen on poistaa päällekkäiset sarakkeet samasta taulukosta. Toinen on luoda erilliset taulukot kullekin liittyvien tietojen ryhmälle ja tunnistaa jokainen rivi yksilöivällä sarakkeella (ensisijainen avain). Mitä nämä säännöt tarkoittavat tietokannan käytännön suunnittelua harkittaessa?

Poista päällekkäisyys

Ensimmäinen sääntö määrää, että emme saa kopioida tietoja samalla taulukon rivillä. Tietokantayhteisössä tätä käsitettä kutsutaan taulukon atomisuudeksi. Tämän säännön mukaisten taulukoiden sanotaan olevan atomisia.

Tutkitaan tätä periaatetta klassisella esimerkillä: henkilöstötietokannan taulukko, joka tallentaa esimies-alaisen suhteen. Esimerkkiämme varten asetamme liiketoimintasäännön, jonka mukaan jokaisella johtajalla voi olla yksi tai useampi alainen, kun taas kullakin alaisuudella voi olla vain yksi johtaja.

Kun luomme luetteloa tai laskentataulukkoa näiden tietojen seuraamiseksi, saatamme intuitiivisesti luoda taulukon, jossa on seuraavat kentät:

  • johtaja
  • Alainen1
  • Alainen 2
  • Alainen 3
  • Alainen 4

Muista kuitenkin ensimmäinen 1NF: n asettama sääntö: Poista päällekkäiset sarakkeet samasta taulukosta. On selvää, että Aliste1-Aliste4-sarakkeet ovat päällekkäisiä. Ota hetki ja pohdi tämän skenaarion aiheuttamia ongelmia.

Jos johtajalla on vain yksi alainen, Alainen2–Alainen4-sarakkeet ovat hukkaan heitettyä tallennustilaa (arvokas tietokanta). Kuvittele lisäksi tapaus, jossa johtajalla on neljä alaista. Mitä tapahtuu, jos he ottavat toisen työntekijän? Taulukon rakenne vaatisi muutoksia.

Tässä vaiheessa tietokanta-aloittelijoille tulee yleensä toinen valoisa idea: Emme halua olla enempää kuin yksi sarake ja haluamme sallia joustavan määrän dataa; kokeillaan jotain tällaista:

  • johtaja
  • Alaiset

Ja Alaiset-kenttä sisältää useita merkintöjä muodossa "Mary, Bill, Joe".

Tämä ratkaisu on lähempänä, mutta se myös jää jäljelle. Alisteinen sarake on edelleen päällekkäinen ja ei-atominen. Mitä tapahtuu, kun meidän on lisättävä tai poistettava alainen? Meidän on luettava ja kirjoitettava koko taulukon sisältö. Se ei ole iso juttu tässä tilanteessa, mutta entä jos yhdellä johtajalla olisi sata työntekijää? Lisäksi se vaikeuttaa tietojen valintaa tietokannasta tulevissa kyselyissä.

Tässä on taulukko, joka täyttää 1NF: n ensimmäisen säännön:

  • johtaja
  • Alisteinen

Tässä tapauksessa jokaisella alaisuudella on yksi merkintä, mutta esimiehillä voi olla useita merkintöjä.

Tunnista ensisijainen avain

Entä sitten toinen sääntö: Tunnista jokainen rivi ainutlaatuisella sarakkeella tai sarakejoukolla ( pääavain). Voit katsoa yllä olevaa taulukkoa ja ehdottaa Alisteinen-sarakkeen käyttöä ensisijaisena avaimena. Itse asiassa Alainen-sarake on hyvä ehdokas ensisijaiseksi avaimeksi, koska liiketoimintasäännöissämme määrättiin, että jokaisella alaisuudella voi olla vain yksi johtaja.

Kuitenkin tiedot, jotka päätimme tallentaa taulukkoomme, tekevät tästä vähemmän kuin ihanteellisen ratkaisun. Mitä tapahtuu, jos palkkaamme toisen työntekijän nimeltä Jim? Kuinka tallennamme hänen esimiehen ja alaisen suhteen tietokantaan?

On parasta käyttää yksilöllistä tunnistetta, kuten henkilöstökortti ensisijaisena avaimena. Finaalipöytämme näyttäisi tältä:

  • Esimiehen tunnus
  • Alisteinen tunnus

Nyt pöytämme on ensimmäisessä normaalimuodossa, tämän lisäksi on vaihtoehtoja laittaa omasi tietokanta toisessa normaalimuodossa, sekä sisällä Kolmas normaalimuoto jos olet innostunut järjestäytymisestä.