Når man udvikler et softwareprojekt, er et af de vigtigste, grundlæggende og iboende aspekter et korrekt struktureret databaseskema. Det svarer til, når man bygger et hus, skal man sikre, at fundamentet er ordentligt lagt, ellers reduceres chancerne for at bygge et kvalitetshus drastisk.

Overraskende lettere end man skulle tro, lad os lære de forskellige facetter, der bruges til at skrive et godt arkitekteret databaseskema.

OPRET TABEL Syntaks

For at begynde skal du åbne din favorit teksteditor. Oprettelse af et databaseskema kræver intet andet end en almindelig tekstfil. En database består af flere tabeller, der hver består af kolonner, og CREATE TABLE-syntaksen bruges til at oprette en enkelt tabel. Her er et grundlæggende eksempel:


Opret TABLE-brugere (
id INT IKKE NULL
is_active TINY INT IKKE NULL,
fuldnavn VAR CHAR (100) IKKE NULL,
e-mail VARCHAR (100) IKKE NULL
);

Som du kan se, opretter dette en databasetabel med navnet brugere som består af fire kolonner. Dette skal være en ret ligefrem SQL-sætning, der begynder med

instagram viewer
Opret TABELefterfulgt af navnet på databasetabellerne og derefter inden for parenteser kolonnerne i tabellen adskilt med et komma.

Brug korrekte kolonnetyper

Som vist ovenfor adskilles kolonnerne, som tabellen består af, med kommaer. Hver søjledefinition består af de tre samme dele:

COL_NAME TYPE [OPTIONS]

Navnet på kolonnen efterfulgt af kolonnetypen og derefter eventuelle valgfrie parametre. Vi kommer ind på de valgfri parametre senere, men koncentreret om kolonnetypen nedenfor viser de mest anvendte kolonnetyper til rådighed:

Ovenstående kolonnetyper er alt hvad du behøver for at skrive velkonstruerede mySQL-databaseskemaer.

Definer kolonneindstillinger

Når du definerer kolonner, er der også forskellige muligheder, du kan angive. Nedenfor er et andet eksempel på Opret TABEL udmelding:


Opret TABLE-brugere (
id INT IKKE NULL PRIMÆR NØGLE AUTO_INCREMENT,
brugernavn VARCHAR (100) IKKE NULL UNIK,
status ENUM ('aktiv', 'inaktiv') IKKE NULL STANDARD 'aktiv',
balance DECIMAL (8,2) IKKE NULL STANDARD 0,
dato_fødsel DATETIME,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

Ovenstående kan se lidt skræmmende ud, men bekymre dig ikke, det er ret simpelt. Opdelt, her er hvad der sker i ovenstående udsagn:

  • Du skal altid bruge IKKE NUL på alle mulige kolonner for at hjælpe med hastigheden og ydeevnen for tabellen. Dette angiver simpelthen, at kolonnen ikke kan efterlades tom / nul, når en række indsættes.
  • Forsøg altid at holde søjlestørrelsen så lille som realistisk muligt, da det hjælper med at forbedre hastighed og ydeevne.
  • Det id kolonne er et heltal, er også den primære nøgle i tabellen, hvilket betyder, at den er unik, og forøges med en hver gang en post indsættes. Dette skal normalt bruges på alle tabeller, du opretter, så du nemt kan henvise til en enkelt række i tabellen.
  • Det status kolonne er ENUM og skal enten have værdien "aktiv" eller "inaktiv". Hvis der ikke er angivet nogen værdi, begynder en ny række med status "aktiv".
  • Det balance kolonne starter ved 0 for hver nye række og er et beløb, der er formateret med to decimaler.
  • Det fødselsdato kolonne er simpelthen en DATO, men tillader også en nulværdi, da fødselsdatoen muligvis ikke er kendt ved oprettelsen.
  • Sidst, den oprettet_på kolonne er en TIMESTAMP og er som standard det aktuelle tidspunkt, hvor rækken blev indsat.

Ovenstående er et eksempel på en pænt struktureret databasetabel og skal bruges som et eksempel fremover.

En af de største fordele ved at bruge relationsdatabaser som f.eks mySQL er dens fremragende understøttelse af udenlandske nøglebegrænsninger og kaskader. Dette er, når du forbinder to tabeller sammen ved en kolonne og danner et forældrebarnsforhold, så når den overordnede række slettes, slettes også de nødvendige underordnede rækker automatisk.

Her er et eksempel:


Opret TABLE-brugere (
id INT IKKE NULL PRIMÆR NØGLE AUTO_INCREMENT,
brugernavn VARCHAR (100) IKKE NULL UNIK,
fuldnavn VARCHAR (100) IKKE NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) motor = InnoDB;
OPRET TABELordrer (
id INT IKKE NULL PRIMÆR NØGLE AUTO_INCREMENT,
userid INT IKKE NULL,
beløb DECIMAL (8,2) IKKE NULL,
produktnavn VARCHAR (200) IKKE NULL,
UDENLANDSK KEY (brugerid) REFERENCER brugere (id) PÅ SLET KASKADE
) motor = InnoDB;

Du vil bemærke den UDENLANDSKE NØGLE-klausul som den sidste linje. Denne linje angiver ganske enkelt, at denne tabel indeholder underordnede rækker, der er knyttet til bruger ID kolonne til deres overordnede række, som er id kolonne i brugere bord. Hvad dette betyder er, når som helst en række slettes fra brugere tabel, vil mySQL automatisk slette alle tilsvarende rækker fra Ordre:% s tabel, der hjælper med at sikre strukturel integritet i din database.

Bemærk også motor = InnoDB i slutningen af ​​ovenstående erklæring. Selvom InnoDB nu er standard mySQL-bordtypen, var det ikke altid, så dette skal tilføjes bare for at forblive på den sikre side, da kaskadering kun fungerer med InnoDB-tabeller.

Design med tillid

Du er nu godt på vej til at konstruere solide, velstrukturerede mySQL-databaseskemaer. Ved hjælp af ovenstående viden kan du nu skrive velorganiserede skemaer, der giver både ydeevne og strukturel integritet.

Med dit skema på plads, skal du sikre dig, at du ved, hvordan du bruger det med disse vigtige SQL-kommandoer.

E-mail
Sådan spørges flere databasetabeller på én gang med SQL-sammenføjninger

Lær, hvordan du bruger SQL-sammenføjninger til at strømline forespørgsler, spare tid og få dig til at føle dig som en SQL-strømbruger.

Relaterede emner
  • Uspecificeret
Om forfatteren
Matt Dizak (18 artikler offentliggjort)Mere fra Matt Dizak

Abonner på vores nyhedsbrev

Deltag i vores nyhedsbrev for tekniske tip, anmeldelser, gratis e-bøger og eksklusive tilbud!

Et trin mere !!!

Bekræft venligst din e-mail-adresse i den e-mail, vi lige har sendt dig.

.