Nybegynnerguide for å skrive mySQL -databaseskjemaer

Nybegynnerguide for å skrive mySQL -databaseskjemaer

Når du utvikler et programvareprosjekt, er et av de viktigste, grunnleggende og iboende aspektene et godt strukturert databaseskjema. Det tilsvarer når du skal bygge et hus for å sikre at grunnlaget er riktig lagt, ellers reduseres sjansene for å bygge et kvalitetshus drastisk.





Overraskende lettere enn man skulle tro, la oss lære de forskjellige fasettene som brukes til å skrive et godt arkitektert databaseskjema.





nettsteder for å kjøpe og selge varer

LAG TABELL Syntaks

For å begynne, åpne din favoritt tekstredigerer. Å lage et databaseskjema krever ikke mer enn en ren tekstfil. En database består av flere tabeller, som hver består av kolonner, og syntaksen CREATE TABLE brukes til å lage en enkelt tabell. Her er et grunnleggende eksempel:




CREATE TABLE users (
id INT NOT NULL,
is_active TINY INT NOT NULL,
full_name VAR CHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL
);

Som du kan se vil dette opprette en databasetabell med navnet brukere som består av fire kolonner. Dette bør være en ganske rett frem SQL -setning som begynner med LAG BORD , etterfulgt av navnet på databasetabellene, og innenfor parentes er kolonnene i tabellen atskilt med et komma.

Bruk riktige kolonnetyper

Som vist ovenfor er kolonnene tabellen vil bestå av atskilt med kommaer. Hver kolonnedefinisjon består av de tre samme delene:



COL_NAME TYPE [OPTIONS]

Navnet på kolonnen, etterfulgt av kolonnetypen, deretter eventuelle valgfrie parametere. Vi kommer inn på de valgfrie parameterne senere, men konsentrerer oss om kolonnetypen nedenfor, viser de mest brukte kolonnetypene som er tilgjengelige:

For alle formål er kolonnetypene ovenfor alt du trenger for å skrive godt konstruerte mySQL -databaseskjemaer.





Definer kolonnealternativer

Når du definerer kolonner, er det også forskjellige alternativer du kan angi. Nedenfor er et annet eksempel på LAG BORD uttalelse:


CREATE TABLE users (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(100) NOT NULL UNIQUE,
status ENUM('active','inactive') NOT NULL DEFAULT 'active',
balance DECIMAL(8,2) NOT NULL DEFAULT 0,
date_of_birth DATETIME,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

Ovenstående kan se litt skremmende ut, men ikke bekymre deg, det er ganske enkelt. Brutt ned, her er det som skjer i uttalelsen ovenfor:





  • Du bør alltid bruke NOT NULL på alle kolonner som er mulig for å hjelpe med tabellens hastighet og ytelse. Dette spesifiserer ganske enkelt at kolonnen ikke kan stå tom / null når en rad settes inn.
  • Prøv alltid å holde kolonnestørrelsen så liten som realistisk mulig, da det bidrar til å forbedre hastighet og ytelse.
  • De id kolonne er et heltall, er også hovednøkkelen i tabellen som betyr at den er unik, og vil øke med en hver gang en post settes inn. Dette bør vanligvis brukes på alle tabellene du lager, slik at du enkelt kan referere til hver enkelt rad i tabellen.
  • De status kolonnen er et ENUM og må enten ha verdien 'aktiv' eller 'inaktiv'. Hvis ingen verdi er angitt, begynner en ny rad med statusen 'aktiv'.
  • De balansere kolonne starter med 0 for hver nye rad, og er et beløp som er formatert to to desimaler.
  • De fødselsdato kolonne er rett og slett en DATO, men tillater også en nullverdi, siden fødselsdatoen kanskje ikke er kjent ved opprettelsen.
  • Sist, opprettet_at -kolonnen er en TIDSSTEMPEL og som standard til gjeldende tid da raden ble satt inn.

Ovenstående er et eksempel på en pent strukturert databasetabell, og bør brukes som et eksempel fremover.

En av de største fordelene med å bruke relasjonsdatabaser som f.eks mySQL er dens utmerkede støtte for utenlandske nøkkelbegrensninger og kaskader. Dette er når du kobler to tabeller sammen med en kolonne og danner et overordnet barneforhold, så når den overordnede raden slettes, blir de nødvendige underradene også automatisk slettet.

Her er et eksempel:


CREATE TABLE users (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(100) NOT NULL UNIQUE,
full_name VARCHAR(100) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) engine=InnoDB;
CREATE TABLE orders (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
userid INT NOT NULL,
amount DECIMAL(8,2) NOT NULL,
product_name VARCHAR(200) NOT NULL,
FOREIGN KEY (userid) REFERENCES users (id) ON DELETE CASCADE
) engine=InnoDB;

Du vil legge merke til FOREIGN KEY -leddet som den siste linjen. Denne linjen sier ganske enkelt at denne tabellen inneholder underordnede rader som er knyttet sammen med bruker-ID kolonnen til overordnet rad, som er id kolonnen i brukere bord. Dette betyr at når en rad slettes fra brukere tabell, vil mySQL automatisk slette alle tilsvarende rader fra ordrene tabell for å sikre strukturell integritet i databasen.

Legg også merke til motor = InnoDB på slutten av uttalelsen ovenfor. Selv om InnoDB nå er standard mySQL -bordtype, var det ikke alltid, så dette bør legges til bare for å være på den sikre siden, ettersom kaskader bare fungerer med InnoDB -tabeller.

hvordan du installerer ram på macbook pro

Design med tillit

Du er nå godt i gang med å bygge solide, godt strukturerte mySQL -databaseskjemaer. Ved å bruke kunnskapen ovenfor kan du nå skrive godt organiserte skjemaer som gir både ytelse og strukturell integritet.

Med skjemaet ditt på plass, må du sørge for at du vet hvordan du bruker det med disse viktige SQL -kommandoer .

Dele Dele kvitring E -post Hvordan spørre flere databasetabeller samtidig med SQL -koblinger

Lær hvordan du bruker SQL -joins for å effektivisere søk, spare tid og få deg til å føle deg som en SQL -bruker.

Les neste
Relaterte temaer Om forfatteren Matt Dizak(18 artikler publisert) Mer fra Matt Dizak

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere