Tarkvaraprojekti väljatöötamisel on üks olulisemaid, põhialuseid ja sisemisi aspekte õigesti struktureeritud andmebaasiskeem. See on samaväärne maja ehitamisel, mida peate tagama, et vundament oleks korralikult paigaldatud, vastasel juhul väheneb kvaliteetse maja ehitamise võimalus drastiliselt.

Üllatavalt lihtsam kui arvata oskaks, õppigem erinevaid tahke, mida kasutatakse hästi arhitektuuritud andmebaasiskeemi kirjutamiseks.

LOE TABEL Süntaks

Alustuseks avage oma lemmik tekstiredaktor. Andmebaasiskeemi loomiseks pole vaja muud kui lihttekstifail. Andmebaas koosneb mitmest tabelist, millest igaüks koosneb veergudest, ja süntaksit CREATE TABLE kasutatakse ühe tabeli loomiseks. Siin on põhinäide:


LOO tabeli kasutajad (
id INT NOT NULL,
is_active TINY INT NOT NULL,
full_name VAR CHAR (100) EI NULL,
e-post VARCHAR (100) EI NULL
);

Nagu näete, loob see andmebaasitabeli nimega kasutajatele mis koosneb neljast tulbast. See peaks olema algusest peale üsna sirge SQL-lause LOE TABEL, millele järgneb andmebaasitabelite nimi, seejärel sulgudes tabeliveerud, eraldades need komaga.

instagram viewer

Kasutage õigeid veerutüüpe

Nagu eespool näidatud, eraldatakse veerud, millest tabel koosneb, komadega. Iga veeru määratlus koosneb kolmest samast osast:

COL_NAME TÜÜP [VALIKUD]

Veeru nimi, millele järgneb veeru tüüp, seejärel valikulised parameetrid. Valikuliste parameetrite juurde jõuame hiljem, kuid keskendudes veerutüübile, loetletakse allpool kõige sagedamini kasutatavad veerutüübid:

Kõigi eesmärkide jaoks on ülaltoodud veerutüübid kõik, mida peate kirjutama hästi üles ehitatud mySQL-i andmebaasiskeemid.

Määrake veeruvalikud

Veergude määratlemisel võite määrata ka mitmesuguseid valikuid. Allpool on veel üks näide LOE TABEL avaldus:


LOO tabeli kasutajad (
id INT EI OLE NULL PRIMARY KEY AUTO_INCREMENT,
kasutajanimi VARCHAR (100) EI OLE KÕIK KORDU,
olek ENUM ('aktiivne', 'mitteaktiivne') EI NULL DEFAULT 'aktiivne',
saldo DECIMAL (8,2) NOT NULL DEFAULT 0,
sünnikuupäev DATETIME,
created_at TIMESTAMP EI NULL DEFAULT CURRENT_TIMESTAMP
);

Eeltoodu võib tunduda veidi hirmutav, kuid ärritada mitte, see on üsna lihtne. Jaotatuna toimib ülaltoodud avalduses järgmine:

  • Tabeli kiiruse ja toimivuse parandamiseks peaksite alati kõigil veergudel kasutama NOT NULL. See lihtsalt täpsustab, et veergu ei saa rea ​​lisamisel tühjaks / tühjaks jätta.
  • Püüdke hoida veeru suurus alati võimalikult väike, kuna see aitab parandada kiirust ja jõudlust.
  • The id veerg on täisarv, on ka tabeli peamine võti, mis tähendab, et see on ainulaadne, ja suureneb üks kord iga kord, kui kirje sisestatakse. Seda tuleks üldjuhul kasutada kõigis teie loodud tabelites, et saaksite hõlpsasti viidata tabeli mis tahes üksikule reale.
  • The staatus veerg on ENUM ja selle väärtus peab olema kas aktiivne või mitteaktiivne. Kui väärtust pole määratud, algab uus rida olekuga "aktiivne".
  • The tasakaal Veerg algab iga uue rea puhul 0-st ja on summa, mis on vormindatud kahe kahe kümnendkoha täpsusega.
  • The sünnikuupäev veerg on lihtsalt KUUPÄEV, kuid võimaldab ka nullväärtust, kuna sünnikuupäev ei pruugi loomisel olla teada.
  • Viimaseks loodud_t veerg on TIMESTAMP ja vaikimisi rea sisestamise praegune aeg.

Ülaltoodud on näide kenasti struktureeritud andmebaasitabelist ja seda tuleks edaspidi kasutada näitena.

Relatsioonandmebaaside, nagu näiteks, kasutamise üks suurimaid eeliseid mySQL on selle suurepärane tugi välismaistele võtmepiirangutele ja kaskaadile. See on siis, kui linkite kaks tabelit veeru kaupa, moodustades vanema-lapse suhte, nii et vanemarea kustutamisel kustutatakse automaatselt ka vajalikud alaread.

Siin on näide:


LOO tabeli kasutajad (
id INT EI OLE NULL PRIMARY KEY AUTO_INCREMENT,
kasutajanimi VARCHAR (100) EI OLE KÕIK KORDU,
full_name VARCHAR (100) EI TÜHI,
created_at TIMESTAMP EI NULL DEFAULT CURRENT_TIMESTAMP
) mootor = InnoDB;
LOE TABEL tellimusi (
id INT EI OLE NULL PRIMARY KEY AUTO_INCREMENT,
kasutajatunnus EI OLE NULL,
summa DECIMAL (8,2) EI NULL,
toote_nimi VARCHAR (200) EI NULL,
VÕÕRAVÕTI (userid) viitab kasutajatele (id) KASUTAMISE KASDAADI
) mootor = InnoDB;

Viimase reana märkate klauslit FOREIGN KEY. Sellel real on lihtsalt öeldud, et see tabel sisaldab alamridu, mis on lingitud kasutaja ID veerg nende vanemareale, milleks on id veerg kasutajatele tabel. See tähendab, et alati kustutatakse rida kaustast kasutajatele tabel kustutab mySQL automaatselt kõik vastavad read tellimusi tabel, mis aitab tagada teie andmebaasi struktuurse terviklikkuse.

Pange tähele ka mootor = InnoDB ülaltoodud avalduse lõpus. Kuigi InnoDB on nüüd vaikimisi mySQL-i tabelitüüp, ei olnud see alati nii, nii et see tuleks lisada ainult ohutuse tagamiseks, kuna kaskaad töötab ainult InnoDB-tabelitega.

Kujundage enesekindlalt

Nüüd olete kindlate, hästi struktureeritud mySQL-i andmebaasiskeemide väljatöötamiseni jõudnud. Kasutades ülaltoodud teadmisi, saate nüüd kirjutada hästi organiseeritud skeemid, mis tagavad nii jõudluse kui ka struktuurse terviklikkuse.

Kui teie skeem on paigas, veenduge, et teate, kuidas seda koos nendega kasutada olulised SQL-käsklused.

E-post
Kuidas korraga SQL-i liitumisega pärida mitu andmebaasitabelit

Siit saate teada, kuidas kasutada SQL-i liitumisi päringute sujuvamaks muutmiseks, aja kokkuhoiuks ja SQL-i kasutajaks tundmiseks.

Seotud teemad
  • Täpsustamata
Autori kohta
Matt Dizak (18 artiklit on avaldatud)Veel Matt Dizakilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e-raamatuid ja eksklusiivseid pakkumisi!

Veel üks samm !!!

Palun kinnitage oma e-posti aadress meilis, mille me just saatsime.

.