V očakávaní zahájenia ďalšej dávky kurzu sme pripravili malý autorský materiál s dôležitými radami na konštruovanie databáz. Dúfame, že vám tento materiál bude užitočný.

Databázy sú všade: od najjednoduchších blogov a adresárov po spoľahlivé informačné systémy a veľké sociálne siete. Nie je až tak dôležité, či je databáza jednoduchá alebo zložitá, ako dôležité je ju správne navrhnúť. Keď je databáza navrhnutá bezhlavo a bez jasného pochopenia cieľa, nie je len neefektívna, ale ďalšia práca s databázou bude skutočným trápením, nepriechodným lesom pre používateľov. Tu je niekoľko rád na konštruovanie databázy, ktoré pomôžu vytvoriť užitočný a užívateľsky príjemný produkt.
1. Určte, na čo je tabuľka a aká je jej štruktúra

Dnes také metódy vývoja ako Scrum alebo RAD (rýchly vývoj aplikácií) pomáhajú IT tímom rýchlo vyvíjať databázy. Avšak, v honbe za časom je veľmi veľký pokušenie vrhnúť sa priamo do výstavby databázy, mlhavě predstaviac si, v čom spočíva samotný cieľ, aké by mali byť konečné výsledky.
Akoby tím smeroval k efektívnej, rýchlej práci, ale to je len fatamorgána. Čím hlbšie a rýchlejšie sa vrháš do projektu, tým viac času bude potrebné na odhaľovanie a zmenu chýb v návrhu databázy.
Preto prvé, čo je potrebné určiť, je definovať cieľ vašej databázy. Pre aký typ aplikácie sa databáza vyvíja? Bude používateľ len pracovať s záznamami a je potrebné venovať pozornosť transakciám, alebo ho viac zaujíma analýza údajov? Kde by mala byť databáza nasadená? Bude sledovať správanie zákazníkov alebo len spravovať vzťahy medzi nimi?
Čím skôr dizajnérsky tím odpovie na tieto otázky, tým hladšie a plynulejšie prebehne proces návrhu databázy.
2. Aké údaje vybrať na ukladanie?

Plánujte dopredu. Premýšľajte o tom, čo v budúcnosti bude robiť web alebo systém, pre ktorý sa navrhuje databáza. Je dôležité prekročiť rámec jednoduchých požiadaviek technickej špecifikácie. Len prosím, nezačnite hneď rozmýšľať o všetkých možných typoch údajov, ktoré by používateľ mohol kedykoľvek uložiť. Radšej sa zamyslite nad tým, či budú môcť používatelia písať príspevky, nahrávať dokumenty alebo fotografie, alebo si vymieňať správy. Ak áno, tak v databáze by malo byť vyhradené miesto pre ne.
Pracujte s tímom, oddelením alebo organizáciou, pre ktorú bude v budúcnosti projektovaná databáza podporovaná. Komunikujte s ľuďmi rôznych úrovní, od špecialistov na zákaznícku podporu po vedúcich oddelení. Takto prostredníctvom spätných väzieb získate jasnú predstavu o požiadavkách spoločnosti.
Nezvrátne sa potreby používateľov v rámci jedného oddelenia budú navzájom konfliktovať. Ak sa s tým stretnete, nebojte sa opierať o vlastné skúsenosti a nájsť kompromis, ktorý uspokojí všetky strany a bude vyhovovať konečnému cieľu databázy. Buďte si istí: v budúcnosti vám to prinesie +100500 do karmy a kopu sušienok.
3. Modelujte dáta opatrne

Existuje niekoľko kľúčových aspektov, na ktoré by ste sa mali zamerať pri modelovaní dát. Ako sme už spomínali, od účelu databázy závisí, aké metódy sa majú pri modelovaní použiť. Ak navrhujeme databázu pre operatívne spracovanie záznamov (OLTP), inými slovami na ich vytváranie, úpravy a odstraňovanie, použijeme modelovanie transakcií. Ak by však databáza mala byť relačná, najlepšie je použiť viacdimenzionálne modelovanie.
Počas modelovania sa vytvárajú konceptuálne (CDM), fyzické (PDM) a logické (LDM) modely dát.
Konceptuálne modely popisujú entity a typy údajov, ktoré zahŕňajú, ako aj vzťahy medzi nimi. Rozdeľte svoje údaje na logické časti — takto je život oveľa jednoduchší.
Hlavné je mierne, nepreháňajte to.
Ak je entita veľmi ťažko klasifikovateľná jedným slovom alebo frázou, je čas použiť podtypy (podriadené entity).
Ak entity žije vlastným životom, má atribúty, ktoré opisujú jej správanie a vzhľad, ako aj vzťahy s inými objektmi, môžete bez váhania použiť nielen podtyp, ale aj supertyp (rodičovskú entitu).
Ak na toto pravidlo zabudnete, ostatní vývojári sa v vašej modelovej štruktúre zamotajú a nebudú úplne rozumieť údajom a pravidlám, ako ich zhromažďovať.
Koncepčné modely sa realizujú prostredníctvom logických modelov. Tieto modely fungujú ako mapa na navrhnutie fyzickej databázy. V logickom modeli sú identifikované entity obchodných údajov, definované typy údajov, status kľúča a pravidlá, ktoré regulujú vzťahy medzi údajmi.
Potom sa logický model údajov mapuje na vopred vybranú platformu DBMS (systému databázového manažmentu) správy databáz) a vytvára sa fyzický model. Ten popisuje spôsob fyzického ukladania údajov.
4. Používajte vhodné typy údajov

Použitie nesprávneho typu údajov môže viesť k menej presným údajom, ťažkostiam pri spojovaní tabuliek, synchronizácii atribútov a zväčšovaniu veľkosti súborov.
Aby ste zabezpečili integritu informácií, atribút by mal obsahovať iba akceptovateľné typy údajov. Ak do databázy vkladáte vek, uistite sa, že v stĺpci sú uložené celé čísla s maximálne 3 číslicami.
Vytvárajte minimálne prázdne stĺpce s hodnotou NULL. Ak vytvárate všetky stĺpce ako NULL, je to hrubá chyba. Ak však potrebujete prázdny stĺpec na vykonanie konkrétnej biznis funkcie, keď údaje nie sú známe alebo ešte nemajú zmysel, pokojne ho vytvorte. Predsa nemôžeme vopred vyplniť stĺpce „Dátum úmrtia“ alebo „Dátum ukončenia“, nie sme predpovedatelia, ktorí by iba tak hádali :-).
Väčšina softvérov na modelovanie (ER/Studio, MySQL Workbench, SQL DBM, gliffy.com) údajov umožňuje vytvárať prototypy oblastí údajov. Takto je zaručený nielen správny typ údajov, logika aplikácie a dobrá výkonnosť, ale aj povinné zadanie hodnoty.
5. Uprednostnite prirodzené

Keď sa rozhodujete, ktorý stĺpec v tabuľke zvoliť ako kľúč, vždy venujte pozornosť tomu, ktoré polia môže používateľ upravovať. Nikdy ich nevyberajte ako kľúč — je to zlý nápad. Môže sa stať čokoľvek a vy musíte zaručiť jedinečnosť.
Najlepšie je použiť prirodzený alebo obchodný kľúč (natural key). Ten má významové hodnoty, takže sa vyhnete duplicite v databáze.
Ak nie je obchodný kľúč jedinečný (meno, priezvisko, pozícia) a opakuje sa v rôznych riadkoch tabuľky, alebo ak sa musí meniť, potom by ste primárnym kľúčom mali zvoliť generovaný umelecký, surrogate key (artificial key).
6. Normalizujte s mierou

Aby ste efektívne usporiadali dáta v DB, musíte dodržiavať súbor odporúčaní a normalizovať databázu. Existuje päť normálnych foriem, ktorým treba dodržiavať.
S pomocou normalizácie sa vyhnete redundancii a zabezpečíte integritu údajov používaných v aplikácii alebo na stránke.
Ako vždy, všetkého by malo byť s mierou, aj normalizácie. Ak je v DB príliš veľa tabuliek s rovnakými jedinečnými kľúčmi, prehnali ste to a databázu ste priehliadli. Nadmerná normalizácia má negatívny vplyv na výkon databázy.
7. Testujte skôr, testujte častejšie

Testovací plán a riadne testovanie by mali byť súčasťou návrhu databázy.
Najlepšie je testovať databázu pomocou continuous integration (nepretržitej integrácie). Modelujte scenár "Jeden deň v živote databázy" a kontrolujte, či sú všetky okrajové prípady spracovávané, aké interakcie používateľov sú pravdepodobné. Čím skôr nájdete chyby, tým viac ušetríte času aj peňazí.
Toto sú len siedme rady, pomocou ktorých môžete navrhnúť vynikajúcu databázu z pohľadu výkonu a efektivity. Ak ich budete dodržiavať, vyhnete sa väčšine budúcich problémov. Tieto rady sú len špičkou ľadovca v modelovaní databáz. Existuje obrovské množstvo tipov. Ktoré používate vy?
Zdroj: habr.com
