Når du utvikler et programvareprosjekt, er et av de viktigste, grunnleggende og iboende aspektene et riktig strukturert databaseskjema. Det tilsvarer når du bygger et hus du trenger for å sikre at fundamentet legges riktig, ellers reduseres sjansene for å bygge et kvalitetshus drastisk.
Overraskende lettere enn man skulle tro, la oss lære de forskjellige fasettene som ble brukt til å skrive et godt arkitektert databaseskema.
OPPRETT TABELL Syntaks
For å begynne, åpne favoritten din tekstredigerer. Å lage et databaseskjema krever ikke mer enn en ren tekstfil. En database består av flere tabeller, hver bestående av kolonner, og CREATE TABLE-syntaksen brukes til å lage en enkelt tabell. Her er et grunnleggende eksempel:
OPPRETT TABELLbrukere (
id INT IKKE NULL,
is_active TINY INT IKKE NULL,
fullnavn VAR CHAR (100) IKKE NULL,
e-post VARCHAR (100) IKKE NULL
);
Som du kan se vil dette opprette en databasetabell med navnet brukere som består av fire kolonner. Dette skal være en ganske rett frem SQL-setning som begynner med
LAG TABELL, etterfulgt av navnet på databasetabellene, deretter innenfor parentes kolonnene i tabellen atskilt med komma.Bruk riktige kolonnetyper
Som vist ovenfor er kolonnene tabellen vil bestå av atskilt med komma. Hver kolonnedefinisjon består av de tre samme delene:
COL_NAME TYPE [OPTIONS]
Navnet på kolonnen, etterfulgt av kolonnetypen og deretter eventuelle valgfrie parametere. Vi kommer inn på de valgfrie parametrene senere, men konsentrert om kolonnetypen nedenfor viser de mest brukte kolonnetypene som er tilgjengelige:
I det hele tatt er de ovennevnte kolonnetypene alt du trenger for å skrive godt konstruerte mySQL-databaseskjemaer.
Definer kolonnealternativer
Når du definerer kolonner, er det også forskjellige alternativer du kan spesifisere. Nedenfor er et annet eksempel på LAG TABELL uttalelse:
OPPRETT TABELLbrukere (
id INT IKKE NULL PRIMÆRE NØKKEL AUTO_INCREMENT,
brukernavn VARCHAR (100) IKKE NULL UNIK,
status ENUM ('aktiv', 'inaktiv') IKKE NULL STANDARD 'aktiv',
balanse DEKIMAL (8,2) IKKE NULL STANDARD 0,
fødselsdato DATETIME,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
Ovennevnte kan se litt skremmende ut, men bekymre deg ikke, det er ganske enkelt. Nedbrutt, her er hva som skjer i utsagnet ovenfor:
- Du bør alltid bruke IKKE NULL på alle mulige kolonner for å hjelpe til med hastigheten og ytelsen til tabellen. Dette spesifiserer bare at kolonnen ikke kan være tom / null når en rad er satt inn.
- Forsøk alltid å holde kolonnestørrelsen så liten som mulig, da det bidrar til å forbedre hastighet og ytelse.
- De id kolonnen er et helt tall, er også den viktigste nøkkelen til tabellen, noe som betyr at den er unik, og vil øke med en hver gang en post settes inn. Dette bør vanligvis brukes på alle tabeller du oppretter, slik at du enkelt kan referere til en enkelt rad i tabellen.
- De status kolonnen er ENUM og må enten ha verdien "aktiv" eller "inaktiv". Hvis ingen verdi er spesifisert, begynner en ny rad med statusen "aktiv".
- De balansere kolonnen starter ved 0 for hver nye rad, og er et beløp som er formatert med to desimaltegn.
- De fødselsdato kolonnen er ganske enkelt en DATO, men tillater også en nullverdi, da fødselsdatoen kanskje ikke er kjent ved opprettelsen.
- Sist, den opprettet_på kolonnen er en TIMESTAMP og er standard til gjeldende tid da raden ble satt inn.
Ovennevnte er et eksempel på en pent strukturert databasetabell, og bør brukes som et eksempel fremover.
En av de største fordelene ved å bruke relasjonsdatabaser som f.eks mySQL er den utmerkede støtten for utenlandske nøkkelbegrensninger og kaskader. Dette er når du kobler to tabeller sammen ved en kolonne, og danner et foreldrebarnsforhold, så når foreldreraden slettes, slettes også de nødvendige underordnede radene.
Her er et eksempel:
OPPRETT TABELLbrukere (
id INT IKKE NULL PRIMÆRE NØKKEL AUTO_INCREMENT,
brukernavn VARCHAR (100) IKKE NULL UNIK,
fullnavn VARCHAR (100) IKKE NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) motor = InnoDB;
OPPRETT bordordrer (
id INT IKKE NULL PRIMÆRE NØKKEL AUTO_INCREMENT,
userid INT IKKE NULL,
beløp DEKIMAL (8,2) IKKE NULL,
produktnavn VARCHAR (200) IKKE NULL,
UTENLANDSK Nøkkel (bruker-ID) REFERANSER brukere (id) PÅ SLETT KASKADE
) motor = InnoDB;
Du vil legge merke til UTENLANDSK Nøkkelklausul som den siste linjen. Denne linjen sier ganske enkelt at denne tabellen inneholder underordnede rader som er koblet til bruker-ID kolonne til foreldreraden, som er id kolonnen i brukere bord. Hva dette betyr er, når som helst en rad slettes fra brukere tabellen vil mySQL automatisk slette alle tilsvarende rader fra bestillinger tabell som bidrar til å sikre strukturell integritet i databasen din.
Legg også merke til motor = InnoDB på slutten av ovenstående uttalelse. Selv om InnoDB nå er standard mySQL-bordtype, var det ikke alltid, så dette bør legges til bare for å holde seg på den sikre siden, da kaskadering bare fungerer med InnoDB-tabeller.
Design med tillit
Du er nå godt på vei til å lage solide, godt strukturerte mySQL-databaseskjemaer. Ved å bruke ovennevnte kunnskap kan du nå skrive godt organiserte skjemaer som gir både ytelse og strukturell integritet.
Med skjemaet på plass, sørg for at du vet hvordan du bruker det med disse viktige SQL-kommandoer.
Lær hvordan du bruker SQL-sammenkoblinger for å strømlinjeforme spørsmål, spare tid og få deg til å føle deg som en SQL-strømbruker.
- Uspesifisert
Abonner på vårt nyhetsbrev
Bli med på nyhetsbrevet vårt for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!
Ett steg til…!
Bekreft e-postadressen din i e-posten vi nettopp sendte deg.