När man utvecklar ett mjukvaruprojekt är en av de viktigaste, grundläggande och inneboende aspekterna ett korrekt strukturerat databasschema. Det motsvarar när du bygger ett hus du behöver för att se till att grunden läggs ordentligt, annars minskas chanserna att bygga ett kvalitetshus drastiskt.
Överraskande lättare än man skulle tro, låt oss lära oss de olika aspekterna som används för att skriva ett välarkitekterat databasschema.
SKAPA TABELL Syntax
Till att börja med, öppna din favorit textredigerare. Att skapa ett databasschema kräver inget annat än en vanlig textfil. En databas består av flera tabeller, var och en består av kolumner, och syntaxen CREATE TABLE används för att skapa en enda tabell. Här är ett grundläggande exempel:
SKAPA TABELLanvändare (
id INT INTE NULL,
is_active TINY INT INTE NULL,
fullnamn VAR CHAR (100) INTE NULL,
e-post VARCHAR (100) INTE NULL
);
Som du kan se kommer detta att skapa en databastabell med namnet användare som består av fyra kolumner. Detta bör vara ett ganska enkelt SQL-uttalande som börjar med
SKAPA BORD, följt av namnet på databastabellerna, sedan inom parentes kolumnerna i tabellen åtskilda med ett komma.Använd korrekta kolumntyper
Som visas ovan, separeras kolumnerna i tabellen med kommatecken. Varje kolumndefinition består av tre samma delar:
COL_NAME TYP [OPTIONS]
Namnet på kolumnen följt av kolumntypen och sedan valfria parametrar. Vi kommer in på de valfria parametrarna senare, men koncentrerar oss på kolumntypen nedan, listar de mest använda kolumntyperna tillgängliga:
Oavsett kolumntyper är allt du behöver för att skriva välkonstruerade mySQL-databasscheman.
Definiera kolumnalternativ
När du definierar kolumner finns det också olika alternativ du kan ange. Nedan följer ett annat exempel på SKAPA BORD påstående:
SKAPA TABELLanvändare (
id INT INTE NULL PRIMÄR NYCKEL AUTO_INCREMENT,
användarnamn VARCHAR (100) INTE NULL UNIK,
status ENUM ('aktiv', 'inaktiv') INTE NULL STANDARD 'aktiv',
balans DECIMAL (8,2) INTE NULL STANDARD 0,
datum_födsel DATETIME,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
Ovanstående kan se lite skrämmande ut, men oroa dig inte, det är ganska enkelt. Nedbruten, här är vad som händer i ovanstående uttalande:
- Du bör alltid använda INTE NULL på alla möjliga kolumner för att hjälpa till med hastighet och prestanda för tabellen. Detta anger helt enkelt att kolumnen inte kan lämnas tom / null när en rad infogas.
- Försök alltid att hålla kolumnstorleken så liten som möjligt, eftersom det hjälper till att förbättra hastighet och prestanda.
- De id kolumn är ett heltal, är också den primära nyckeln i tabellen, vilket betyder att den är unik, och kommer att öka med en varje gång en post sätts in. Detta bör vanligtvis användas på alla tabeller du skapar så att du enkelt kan referera till en rad i tabellen.
- De status kolumnen är ENUM och måste antingen ha värdet "aktiv" eller "inaktiv". Om inget värde anges, börjar en ny rad med statusen "aktiv".
- De balans kolumnen börjar vid 0 för varje ny rad och är ett belopp som formateras med två två decimaler.
- De födelsedatum kolumn är helt enkelt en DATUM men tillåter också ett nullvärde eftersom födelsedatumet kanske inte är känt vid skapandet.
- Sist, den skapad vid kolumnen är en TIMESTAMP och är som standard den aktuella tiden när raden infogades.
Ovanstående är ett exempel på en snyggt strukturerad databastabell och bör användas som ett exempel framöver.
En av de största fördelarna med att använda relationsdatabaser som mySQL är dess utmärkta stöd för utländska nyckelbegränsningar och kaskad. Det är när du länkar två tabeller tillsammans med en kolumn och bildar ett föräldrabarnsförhållande, så när föräldraraden tas bort raderas också de nödvändiga underordnade raderna automatiskt.
Här är ett exempel:
SKAPA TABELLanvändare (
id INT INTE NULL PRIMÄR NYCKEL AUTO_INCREMENT,
användarnamn VARCHAR (100) INTE NULL UNIK,
fullständigt namn VARCHAR (100) INTE NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) motor = InnoDB;
SKAPA TABELLbeställningar (
id INT INTE NULL PRIMÄR NYCKEL AUTO_INCREMENT,
userid INT INTE NULL,
belopp DECIMAL (8,2) INTE NULL,
produktnamn VARCHAR (200) INTE NULL,
UTLÄNDSK NYCKEL (användar-ID) HÄNVISAR användare (id) PÅ RADERA KASKAD
) motor = InnoDB;
Du kommer att märka utländsk nyckelklausul som den sista raden. Denna rad anger helt enkelt att denna tabell innehåller underordnade rader som är länkade av användar ID kolumn till sin överordnade rad, som är id kolumn i användare tabell. Vad detta betyder är när som helst en rad raderas från användare MySQL raderar automatiskt alla motsvarande rader från order tabell som hjälper till att säkerställa strukturell integritet i din databas.
Observera också motor = InnoDB i slutet av ovanstående uttalande. Även om InnoDB nu är mySQL-standardtabellen, var det inte alltid, så detta bör läggas till bara för att vara på den säkra sidan, eftersom kaskadering bara fungerar med InnoDB-tabeller.
Design med förtroende
Du är nu på god väg att bygga solida, välstrukturerade mySQL-databasscheman. Med hjälp av ovanstående kunskaper kan du nu skriva välorganiserade scheman som ger både prestanda och strukturell integritet.
Med ditt schema på plats, se till att du vet hur du använder det med dessa viktiga SQL-kommandon.
Lär dig hur du använder SQL-kopplingar för att effektivisera frågor, spara tid och få dig att känna dig som en SQL-kraftanvändare.
- Ospecificerad
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!
Ett steg till…!
Bekräfta din e-postadress i e-postmeddelandet som vi just skickade till dig.