Andmebaasi disain

**Andmebaasi disain** on andmete korraldamine andmebaasi mudeli kohaselt. 

Andmebaasi disainer määrab, milliseid andmeid tuleb säilitada ja kuidas on nad omavahel seotud. Selle info abil saab andmeid andmebaasi mudelisse sobitada. Andmebaasi disain hõlmab andmete liigitamist ja nendevaheliste seosete määramist.

## Andmete valimine andmebaasi
Enamikul juhtudel on andmebaasi disaineriks isik (või isikud), kes on ekspert andmebaaside loomises, mitte valdkonnas, mille tarbeks andmebaasi luuakse. Seega määratakse andmebaasi salvestatav informatsioon andmebaasi disaineri ja töö tellija koostöös. Andmete valik on üks osa nõuete analüüsi protsessist, mille käigus selgitatakse koos andmebaasi tellijaga välja, missuguseid andmeid on tarvis talletada. Alustuseks tuleb välja selgitada, milliste objektide kohta infot vajatakse ning milliseid andmeid on iga objekti kohta vaja. Seejuures peab silmas pidama, et andmebaas rahuldaks nii hetke- kui ka tulevikuvajadusi. Korrektne andmete valik tagab, et andmebaasis ei oleks korduvaid andmeid, kuid kõik vajalik oleks efektiivselt kättesaadav.

## Andmetevaheliste seoste kindlakstegemine
Kui andmebaasi disainer on teinud kindlaks, missuguseid andmeid peaks andmebaasis hoidma, tuleb määrata ka nendevahelised seosed ehk relatsioonid.

Relatsioonide määramine on oluline, kuna muutus ühes andmeobjektis võib mõjutada ka teiste andmete atribuute (näiteks seos kahe olemi "tudeng" ja "registreerimine" vahel, kus üks tudeng võib end õppeainetele registreerida mitmel korral, kuid ühele registreerimisele vastab alati vaid üks tudeng).

## Andmete loogiline struktureerimine
Et kasutada andmeid andmebaasi juhtimissüsteemis, on tarvis seada andmed vastava loogilise struktuuri kohaselt. Relatsioonilise andmebaasi puhul hoitakse infot tabelites, mis koosnevad kirjetest ehk ridadest ja väljadest ehk veergudest. Andmeväljadele lisatakse välja nimi, välja tüüp (tekst, number jne) ja kirjeldus. Iga tabeli rida peab vähemalt ühe välja abil olema teistest eristatav – seda välja nimetatakse võtmeks. Objektorienteeritud andmebaasi korral vaadeldakse iga kirjet kui objekti ning neid andmeobjekte kasutatakse ka andmete haldamiseks kasutatavas objektorienteeritud programmeerimiskeeles.

## ER mudel

ER mudel on diagramm, mis aitab disainerit andmebaasi loomisel. ER mudel koosneb olemitest *(entity)* ehk objektidest ning olemite vahelistest seostest (*relationship*), mis ühendavad olemeid. Olemiks võib olla näiteks õpilane, raamat jne. Seos on näiteks õpilane ja tema poolt sooritatud eksamid.

Olemit kirjeldavad tunnused on atribuudid (näiteks õpilase nimi, vanus jne). Nii olemite, seoste kui ka atribuutide valik sõltub konkreetsest ülesandest.

Et olemeid omavahel eristada, on üks olemi atribuutidest (või atribuutide kogum) olemi võtmeks. Näiteks andes igale õpilasele võtmeks unikaalse ID, on võimalik eristada kaht nimekaimudest üliõpilast.

## Normaliseerimine
Andmebaaside kontekstis nimetatakse normaliseerimiseks andmebaasis olevate andmete korrastamist, et vältida andmete kordumist ja andmetevahelisi vastuolusid. Normaalkujude tasemed on 1NF, 2NF, 3NF, 3.5NF ehk Boyce-Codd NF, 4NF ja 5NF. Iga normaalkuju tase eeldab temast eelmise normaalkuju kehtimist. Enamasti piisab, kui viia andmemudel kolmandale normaalkujule (3NF).

## Vaata ka
*Klassifikaator

## Viited