Inför starten av den kommande omgÄngen av kursen har vi förberett ett litet originalmaterial med viktiga tips för databaskonstruktion. Vi hoppas att detta material kommer att vara till nytta för dig.

Databaser finns överallt: frÄn enklaste bloggar och kataloger till robusta informationssystem och stora sociala nÀtverk. Det spelar inte sÄ stor roll om databasen Àr enkel eller komplex, sÄ lÀnge den Àr korrekt designad. NÀr en databas designas slarvigt och utan en tydlig förstÄelse för syftet, blir den inte bara ineffektiv, utan det kommer ocksÄ att bli ett verkligt lidande för anvÀndare att arbeta med den. HÀr Àr nÄgra tips för att konstruera en databas som kan hjÀlpa till att skapa en anvÀndbar och lÀttanvÀnd produkt.
1. BestÀm vad tabellen Àr till för och vilken dess struktur ska vara

Idag hjÀlper utvecklingsmetoder som Scrum eller RAD (snabb applikationsutveckling) IT-team att snabbt utveckla databaser. Men i jakten pÄ tid Àr det lÀtt att fÄ för sig att börja bygga databasen utan att riktigt förstÄ syftet och vilka slutresultat som bör uppnÄs.
Â
Teamet kan tyckas sikta pÄ effektiv och snabb arbetsprocess, men det Àr en illusion. Ju lÀngre och snabbare man gÄr in i projektet, desto mer tid krÀvs för att identifiera och rÀtta till fel i databasdesignen.
SĂ„ det första som behöver faststĂ€llas Ă€r syftet med din databas. För vilken typ av applikation utvecklas databasen? Kommer anvĂ€ndaren bara att arbeta med poster och behöva fokus pĂ„ transaktioner eller Ă€r det mer dataanalys som intresserar dem? Var ska databasen implementeras? Ska den spĂ„ra kundbeteenden eller bara hantera relationer mellan dem?Â
Ju tidigare designteamet kan svara pÄ dessa frÄgor, desto smidigare kommer processen att bli för databasen design.
2. Vilka data ska vÀljas för lagring?

Planera i förvÀg. TÀnk pÄ vad webbplatsen eller systemet kommer att göra i framtiden för vilket databasen designas. Det Àr viktigt att tÀnka bortom de enkla kraven i den tekniska specifikationen. Men snÀlla, börja inte omedelbart tÀnka pÄ alla möjliga typer av data som anvÀndaren nÄgonsin kan lagra. TÀnk istÀllet pÄ om anvÀndarna kan skriva inlÀgg, ladda upp dokument eller foton eller skicka meddelanden. Om sÄ Àr fallet, mÄste det finnas utrymme för dem i databasen.
Arbeta med teamet, avdelningen eller organisationen som i framtiden kommer att stödja den designade databasen. Kommunicera med mĂ€nniskor pĂ„ olika nivĂ„er, frĂ„n kundtjĂ€nstspecialister till avdelningschefer. Genom Ă„terkoppling fĂ„r du en tydlig bild av företagets krav.Â
AnvÀndarnas behov, Àven inom en avdelning, kommer ofrÄnkomligen att krocka. Om du stöter pÄ detta, tveka inte att lita pÄ din egen erfarenhet och hitta en kompromiss som tillfredsstÀller alla parter och uppfyller databassystemets slutmÄl. Var sÀker: i framtiden kommer du att fÄ +100500 i karma och en hög med kakor.
3. Modellera data med försiktighet

Det finns nÄgra viktiga punkter att tÀnka pÄ nÀr du modellerar data. Som vi tidigare har nÀmnt beror vilka metoder som anvÀnds vid modellering pÄ databasens syfte. Om vi designar en databas för operationell bearbetning av poster (OLTP), det vill sÀga för att skapa, redigera och ta bort dem, anvÀnder vi transaktionsmodellering. Om databasen dÀremot ska vara relationsbaserad, Àr det bÀst att tillÀmpa flerdimensionell modellering.
Under modelleringen skapas konceptuella (CDM), fysiska (PDM) och logiska (LDM) datamodeller.Â
Konceptuella modeller beskriver entiteter och datatyper som de omfattar, samt relationerna mellan dem. Dela upp dina data i logiska bitar - det blir mycket enklare att hantera.
Det viktigaste Àr mÄttfullhet, överdriv inte.
Om en entitet Àr mycket svÄr att klassificera med ett enda ord eller fras, Àr det dags att anvÀnda underkategorier (barnentiteter).
Om en enhet lever ett eget liv, har attribut som beskriver dess beteende och dess typ, samt relationer med andra objekt, kan bĂ„de under- och supertyp (förĂ€ldraanordning) anvĂ€ndas utan tvekan.Â
Om man bortser frÄn denna regel kommer andra utvecklare att bli förvirrade över din modell och inte helt förstÄ datan och reglerna för hur de ska samlas.
Konceptuella modeller implementeras med hjÀlp av logiska modeller. Dessa modeller fungerar som en vÀgkarta för att designa en fysisk databas. I den logiska modellen identifieras affÀrsdatens enheter, datatyper definieras, nyckelstatus regleras och relationer mellan data anges.
Den logiska datamodellen kopplas sedan till den i förvÀg valda DBMS-plattformen (databashanteringssystemet för databashantering) och en fysisk modell erhÄlls. Den beskriver sÀttet att fysiskt lagra data.
4. AnvÀnd lÀmpliga datatyper

AnvÀndning av fel datatyp kan leda till mindre exakta data, svÄrigheter att sammanfoga tabeller, synkronisera attribut och uppblÄsta filstorlekar.
För att garantera dataintegritet bör ett attribut endast innehÄlla accepterade datatyper. Om Älder matas in i databasen, se till att kolumnen lagrar heltal med högst 3 siffror.
Skapa sÄ fÄ tomma kolumner med NULL-vÀrde som möjligt. Om du skapar alla kolumner som NULL, Àr det ett grovt misstag. Om du dÀremot behöver en tom kolumn för att utföra en specifik affÀrsfunktion nÀr data Àr okÀnda eller inte meningsfulla, skapa den utan rÀdsla. Vi kan ju inte fylla i kolumner som "Dödsdatum" eller "UppsÀgningdatum" i förvÀg, vi Àr ju inte spÄdomsvisare som pekar pÄ himlen :-).
De flesta mjukvaror för modellering (ER/Studio, MySQL Workbench, SQL DBM, gliffy.com) tillÄter skapandet av prototyper av datadomÀner. Detta sÀkerstÀller inte bara korrekt datatyp, applikationslogik och bra prestanda, utan ocksÄ ett obligatoriskt vÀrde.
5. Föredra naturlig

NĂ€r du bestĂ€mmer vilken kolumn i tabellen som ska vĂ€ljas som nyckel, bör du alltid ta hĂ€nsyn till vilka fĂ€lt anvĂ€ndaren kan redigera. VĂ€lj dem aldrig som nyckel â det Ă€r en dĂ„lig idĂ©. Vad som helst kan hĂ€nda, och du mĂ„ste garantera unikhet.
Det Ă€r bĂ€st att anvĂ€nda en naturlig eller affĂ€rsnystartnyckel (natural key). Den har en meningsfull innebörd, sĂ„ att du undviker dubbletter i databasen.Â
Om inte affÀrsnystartnyckeln Àr unik (namn, efternamn, befattning) och upprepas i olika rader i tabellen eller mÄste Àndras, bör en genererad artificiell nyckel (artificial key) utses som primÀr nyckel.
6. Normalisera i mÄttlig omfattning

För att effektivt organisera data i databasen mÄste du följa en uppsÀttning rekommendationer och normalisera databasen. Det finns fem normalformer som du mÄste följa.
Genom normalisering undviker du överflöd och sÀkerstÀller dataintegritet som anvÀnds i applikationen eller pÄ webbplatsen.
Som alltid bör allt göras med mĂ„tta, Ă€ven normalisering. Om databasen har för mĂ„nga tabeller med samma unika nycklar har du blivit för ivrig och normaliserat databasen för mycket. Ăverdriven normalisering pĂ„verkar databasens prestanda negativt.
7. Testa tidigt, testa ofta

Testplanen och korrekt testning bör vara en del av databasen design.
Det Àr bÀst att testa databasen genom Continuous Integration (kontinuerlig integrering). Modellera scenariot "En dag i databasen liv" och kontrollera om alla grÀnsfall hanteras, samt vilka anvÀndarinteraktioner som Àr sannolika. Ju tidigare du hittar buggar, desto mer tid och pengar sparar du.
Detta Àr bara sju rÄd som du kan anvÀnda för att designa en fantastisk databas i frÄga om prestanda och effektivitet. Genom att följa dem undviker du de flesta huvudvÀrk i framtiden. Dessa rÄd Àr bara toppen av isberget inom databasmodellering. Det finns mÄnga livshackar. Vilka anvÀnder du?
KĂ€lla: habr.com
