Kuriant programinės įrangos projektą, vienas iš svarbiausių, pamatinių ir vidinių aspektų yra tinkamai sukonstruota duomenų bazės schema. Tai prilygsta statant namą, kad įsitikintumėte, jog pamatai yra tinkamai pakloti, antraip tikimybė pastatyti kokybišką namą smarkiai sumažėja.

Stebėtinai lengviau nei galima pagalvoti, išmokime įvairių aspektų, naudojamų gerai sukonstruotai duomenų bazės schemai rašyti.

SUKURTI LENTELĖS sintaksę

Norėdami pradėti, atidarykite savo mėgstamą teksto redaktorius. Norint sukurti duomenų bazės schemą, reikia tik paprasto teksto failo. Duomenų bazę sudaro kelios lentelės, kurių kiekviena susideda iš stulpelių, o „CREATE TABLE“ sintaksė naudojama kuriant vieną lentelę. Štai pagrindinis pavyzdys:


SUKURTI LENTELĖS vartotojus (
ID INT NULL,
is_active TINY INT NOT NULL,
full_name VAR CHAR (100) NE NULL,
paštas VARCHAR (100) NE NULL
);

Kaip matote, bus sukurta duomenų bazės lentelė, pavadinta vartotojų kurį sudaro keturios kolonos. Tai turėtų būti gana tiesus SQL sakinys, prasidedantis

instagram viewer
SUKURTI LENTEL., po kurio nurodomas duomenų bazės lentelių pavadinimas, tada skliaustuose lentelės stulpeliai, atskirti kableliu.

Naudokite teisingus stulpelių tipus

Kaip parodyta aukščiau, stulpeliai, kuriuos sudarys lentelė, yra atskirti kableliais. Kiekvieną stulpelio apibrėžimą sudaro trys tos pačios dalys:

COL_NAME TIPAS [PARINKTYS]

Stulpelio pavadinimas, po kurio nurodomas stulpelio tipas, tada visi neprivalomi parametrai. Vėliau pateksime į pasirenkamus parametrus, tačiau daugiausia dėmesio skiriant stulpelių tipui, žemiau pateikiami dažniausiai naudojami stulpelių tipai:

Jei norite parašyti gerai sukonstruotas „MySQL“ duomenų bazės schemas, aukščiau nurodyti stulpelių tipai yra visi.

Apibrėžkite stulpelių parinktis

Apibrėždami stulpelius taip pat galite nurodyti įvairias parinktis. Žemiau yra dar vienas pavyzdys SUKURTI LENTEL. pareiškimas:


SUKURTI LENTELĖS vartotojus (
ID INT NĖRA VISO PAGRINDINIO RAKTO AUTO_INCREMENT,
vartotojo vardas VARCHAR (100) NĖRA VISIŠKAS UNIKALUS,
būsena ENUM („aktyvus“, „neaktyvus“) NENUOL NUSTATYMAS „aktyvus“,
likutis DECIMAL (8,2) NE NULL DEFAULT 0,
data_of_birth DATETIME,
created_at TIMESTAMP NE NULL Numatytasis CURRENT_TIMESTAMP
);

Tai, kas išdėstyta pirmiau, gali atrodyti šiek tiek bauginanti, bet nesijaudinkite, tai gana paprasta. Suskirstytas, štai kas vyksta aukščiau pateiktame teiginyje:

  • Visuose įmanomuose stulpeliuose visada turėtumėte naudoti NOT NULL, kad padėtumėte greičiau ir greičiau pateikti lentelę. Tai tiesiog nurodo, kad stulpelis negali būti tuščias / tuščias, kai įterpiama eilutė.
  • Visada stenkitės, kad stulpelio dydis būtų kuo mažesnis, nes tai padeda pagerinti greitį ir našumą.
  • The id stulpelis yra sveikas skaičius, taip pat yra pagrindinis lentelės raktas, reiškiantis, kad jis yra unikalus, ir jis padidės po vieną kiekvieną kartą, kai įterpiamas įrašas. Tai paprastai turėtų būti naudojama visose jūsų sukurtose lentelėse, kad galėtumėte lengvai nurodyti bet kurią atskirą lentelės eilutę.
  • The statusą stulpelis yra ENUM ir jo vertė turi būti „aktyvi“ arba „neaktyvi“. Jei vertė nenurodyta, prasidės nauja eilutė su būsena „aktyvi“.
  • The pusiausvyra stulpelis prasideda nuo 0 kiekvienoje naujoje eilutėje ir yra suma, kuri yra suformatuota dviem kableliais po kablelio.
  • The Gimimo data stulpelis yra tiesiog DATA, bet taip pat leidžiama nurodyti nulinę vertę, nes sukūrimo metu gimimo data gali būti nežinoma.
  • Paskutinis sukurtas_at stulpelis yra TIMESTAMP ir numatytasis laikas, kai eilutė buvo įterpta.

Aukščiau pateiktas yra gerai sukonstruotos duomenų bazės lentelės pavyzdys ir turėtų būti naudojamas kaip pavyzdys toliau.

Vienas iš didžiausių reliacinių duomenų bazių, tokių kaip., Privalumų „mySQL“ yra puiki parama svarbiausiems užsienio apribojimams ir pakopoms. Tai yra tada, kai susieti dvi lenteles pagal stulpelį, sudarant tėvų ir vaikų santykius, taigi, ištrynus tėvų eilutę, būtinos antrinės eilutės taip pat automatiškai ištrinamos.

Štai pavyzdys:


SUKURTI LENTELĖS vartotojus (
ID INT NĖRA VISO PAGRINDINIO RAKTO AUTO_INCREMENT,
vartotojo vardas VARCHAR (100) NĖRA VISIŠKAS UNIKALUS,
full_name VARCHAR (100) NE NULL,
created_at TIMESTAMP NE NULL Numatytasis CURRENT_TIMESTAMP
) variklis = InnoDB;
SUKURTI LENTELĖS užsakymus (
ID INT NĖRA VISO PAGRINDINIO RAKTO AUTO_INCREMENT,
vartotojo ID INT NULL,
suma DECIMAL (8,2) NE NULL,
product_name VARCHAR (200) NOT NULL,
UŽSIENIO RAKTAS (userid) NUORODOS vartotojams (id) IŠTRINTI KASKADE
) variklis = InnoDB;

Kaip paskutinę eilutę pastebėsite sąlygą „UŽSIENIO RAKTAS“. Šioje eilutėje tiesiog nurodoma, kad šioje lentelėje yra vaikų eilutės, kurias susieja Vartotojo ID stulpelį prie jų tėvų eilutės, kuri yra id stulpelis vartotojų stalo. Tai reiškia, kad bet kuriuo metu iš eilutės ištrinama vartotojų lentelę, „MySQL“ automatiškai ištrins visas atitinkamas eilutes iš užsakymai lentelė, padedanti užtikrinti struktūrinį vientisumą jūsų duomenų bazėje.

Taip pat atkreipkite dėmesį į variklis = InnoDB minėto teiginio pabaigoje. Nors dabar „InnoDB“ yra numatytasis „mySQL“ lentelių tipas, jis ne visada buvo, todėl tai reikėtų pridėti tik norint išlikti saugioje pusėje, nes kaskadas veikia tik su „InnoDB“ lentelėmis.

Dizainas su pasitikėjimu

Dabar jūs sėkmingai kuriate tvirtas, gerai struktūrizuotas „mySQL“ duomenų bazių schemas. Naudodamiesi pirmiau pateiktomis žiniomis, dabar galite parašyti gerai organizuotas schemas, kurios suteikia tiek našumą, tiek struktūrinį vientisumą.

Įsikūrę schemą, įsitikinkite, kad žinote, kaip ją naudoti su jais esminės SQL komandos.

El
Kaip vienu metu pateikti užklausą kelioms duomenų bazių lentelėms, prisijungus prie SQL

Sužinokite, kaip naudoti SQL prisijungimus, norint supaprastinti užklausas, sutaupyti laiko ir pasijusti SQL galios vartotoju.

Susijusios temos
  • Nenurodytas
Apie autorių
Mattas Dizakas (Paskelbta 18 straipsnių)Daugiau iš Matto Dizako

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kuriame rasite techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Dar vienas žingsnis…!

Prašome patvirtinti savo el. Pašto adresą el. Laiške, kurį jums ką tik išsiuntėme.

.