Bij het ontwikkelen van een softwareproject is een van de belangrijkste, fundamentele en intrinsieke aspecten een goed gestructureerd databaseschema. Het is het equivalent van wanneer u een huis bouwt, u moet ervoor zorgen dat de fundering goed wordt gelegd, anders wordt de kans op het bouwen van een huis van hoge kwaliteit drastisch verminderd.
Verrassend eenvoudiger dan je zou denken, laten we eens kijken naar de verschillende facetten die worden gebruikt om een goed ontworpen databaseschema te schrijven.
CREATE TABLE Syntaxis
Open om te beginnen uw favoriet teksteditor. Voor het maken van een databaseschema is niets meer nodig dan een gewoon tekstbestand. Een database bestaat uit meerdere tabellen, elk bestaande uit kolommen, en de CREATE TABLE-syntaxis wordt gebruikt om een enkele tabel te maken. Hier is een eenvoudig voorbeeld:
MAAK TABEL gebruikers (
id INT NOT NULL,
is_active TINY INT NOT NULL,
volledige_naam VAR CHAR (100) NOT NULL,
e-mail VARCHAR (100) NOT NULL
);
Zoals u kunt zien, wordt hierdoor een databasetabel gemaakt met de naam
gebruikers die bestaat uit vier kolommen. Dit zou een redelijk ongecompliceerde SQL-instructie moeten zijn die begint met MAAK EEN TABEL, gevolgd door de naam van de databasetabellen en vervolgens tussen haakjes de kolommen van de tabel gescheiden door een komma.Gebruik de juiste kolomtypen
Zoals hierboven weergegeven, worden de kolommen waaruit de tabel zal bestaan, gescheiden door komma's. Elke kolomdefinitie bestaat uit drie dezelfde delen:
COL_NAME TYPE [OPTIONS]
De naam van de kolom, gevolgd door het kolomtype en eventuele optionele parameters. We zullen later ingaan op de optionele parameters, maar ons concentreren op het kolomtype, hieronder staan de meest gebruikte kolomtypen die beschikbaar zijn:
In alle opzichten zijn de bovenstaande kolomtypen alles wat u nodig hebt om goed opgebouwde mySQL-databaseschema's te schrijven.
Definieer kolomopties
Bij het definiëren van kolommen zijn er ook verschillende opties die u kunt specificeren. Hieronder staat nog een voorbeeld van de MAAK EEN TABEL uitspraak:
MAAK TABEL gebruikers (
id INT NOT NULL PRIMAIRE SLEUTEL AUTO_INCREMENT,
gebruikersnaam VARCHAR (100) NOT NULL UNIQUE,
status ENUM ('actief', 'inactief') NOT NULL DEFAULT 'actief',
saldo DECIMAAL (8,2) NIET NULL STANDAARD 0,
geboortedatum DATETIME,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
Het bovenstaande ziet er misschien een beetje ontmoedigend uit, maar maak je geen zorgen, het is vrij eenvoudig. Uitgesplitst, dit is wat er gebeurt in de bovenstaande verklaring:
- U moet altijd NOT NULL gebruiken voor alle mogelijke kolommen om de snelheid en prestaties van de tabel te verbeteren. Dit geeft eenvoudig aan dat de kolom niet leeg / null mag worden gelaten wanneer een rij wordt ingevoegd.
- Probeer altijd de kolomgrootte zo klein en realistisch mogelijk te houden, omdat dit de snelheid en prestaties helpt verbeteren.
- De ID kaart kolom is een geheel getal, is ook de primaire sleutel van de tabel, wat betekent dat deze uniek is, en wordt met één verhoogd telkens wanneer een record wordt ingevoegd. Dit moet over het algemeen worden gebruikt voor alle tabellen die u maakt, zodat u gemakkelijk naar een enkele rij in de tabel kunt verwijzen.
- De toestand kolom is een ENUM en moet de waarde "actief" of "inactief" hebben. Als er geen waarde is opgegeven, begint een nieuwe rij met de status "actief".
- De balans kolom begint bij 0 voor elke nieuwe rij en is een bedrag dat is opgemaakt met twee decimalen.
- De geboortedatum kolom is gewoon een DATUM, maar staat ook een nulwaarde toe, aangezien de geboortedatum mogelijk niet bekend is bij het maken.
- Als laatste, de gemaakt bij kolom is een TIMESTAMP en wordt standaard ingesteld op de huidige tijd waarop de rij werd ingevoegd.
Het bovenstaande is een voorbeeld van een mooi gestructureerde databasetabel en moet als voorbeeld worden gebruikt.
Een van de grootste voordelen van het gebruik van relationele databases zoals mySQL is de uitstekende ondersteuning voor beperkingen en cascadering van externe sleutels. Dit is wanneer u twee tabellen aan elkaar koppelt door middel van een kolom, waardoor een ouder-kindrelatie wordt gevormd, dus wanneer de bovenliggende rij wordt verwijderd, worden de noodzakelijke onderliggende rijen ook automatisch verwijderd.
Hier is een voorbeeld:
MAAK TABEL gebruikers (
id INT NOT NULL PRIMAIRE SLEUTEL AUTO_INCREMENT,
gebruikersnaam VARCHAR (100) NOT NULL UNIQUE,
volledige_naam VARCHAR (100) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) motor = InnoDB;
CREATE TABLE orders (
id INT NOT NULL PRIMAIRE SLEUTEL AUTO_INCREMENT,
userid INT NOT NULL,
bedrag DECIMAAL (8,2) NIET NULL,
product_name VARCHAR (200) NOT NULL,
BUITENLANDSE SLEUTEL (userid) REFERENTIES gebruikers (id) BIJ VERWIJDEREN CASCADE
) motor = InnoDB;
U ziet de clausule FOREIGN KEY als laatste regel. Deze regel geeft eenvoudig aan dat deze tabel onderliggende rijen bevat die zijn gekoppeld door de gebruikersnaam kolom naar hun bovenliggende rij, de ID kaart kolom van de gebruikers tafel. Dit betekent dat elke keer dat een rij wordt verwijderd uit het gebruikers tabel, zal mySQL automatisch alle corresponderende rijen verwijderen uit de bestellingen tabel helpen om de structurele integriteit binnen uw database te waarborgen.
Let ook op de engine = InnoDB aan het einde van de bovenstaande verklaring. Hoewel InnoDB nu het standaard mySQL-tabeltype is, was dit niet altijd het geval, dus dit zou alleen voor de zekerheid moeten worden toegevoegd, aangezien cascadering alleen werkt met InnoDB-tabellen.
Ontwerp met vertrouwen
U bent nu goed op weg om solide, goed gestructureerde mySQL-databaseschema's te ontwerpen. Met behulp van de bovenstaande kennis kunt u nu goed georganiseerde schema's schrijven die zowel prestaties als structurele integriteit bieden.
Zorg ervoor dat u, met uw schema op zijn plaats, weet hoe u het hiermee kunt gebruiken essentiële SQL-opdrachten.
Leer hoe u SQL-joins gebruikt om query's te stroomlijnen, tijd te besparen en u het gevoel te geven dat u een SQL-hoofdgebruiker bent.
- Niet gespecificeerd
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Nog een stap…!
Bevestig uw e-mailadres in de e-mail die we u zojuist hebben gestuurd.