Atunci când se dezvoltă un proiect software, unul dintre cele mai importante aspecte fundamentale și intrinseci este o schemă de baze de date structurată corespunzător. Este echivalentul când construiți o casă, pentru a vă asigura că fundația este așezată corect, altfel șansele de a construi o casă de calitate sunt reduse drastic.
În mod surprinzător de ușor decât s-ar crede, haideți să învățăm diferitele fațete utilizate pentru a scrie o schemă de baze de date bine arhitecturată.
Sintaxa CREATE TABLE
Pentru început, deschideți-vă preferatul editor de text. Crearea unei scheme de baze de date nu necesită altceva decât un fișier text simplu. O bază de date constă din mai multe tabele, fiecare constând din coloane, iar sintaxa CREATE TABLE este utilizată pentru a crea un singur tabel. Iată un exemplu de bază:
CREAȚI utilizatori TABLE (
id INT NOT NULL,
is_active TINY INT NOT NULL,
full_name VAR CHAR (100) NOT NULL,
e-mail VARCHAR (100) NU NUL
);
După cum puteți vedea, acest lucru va crea un tabel de baze de date numit
utilizatori care este format din patru coloane. Aceasta ar trebui să fie o declarație SQL destul de simplă, începând cu CREAȚI TABEL, urmat de numele tabelelor bazei de date, apoi între paranteze coloanele tabelului separate printr-o virgulă.Utilizați tipuri de coloane corecte
După cum se arată mai sus, coloanele din care va consta tabelul sunt separate prin virgule. Fiecare definiție a coloanei cuprinde aceleași trei părți:
TIP COL_NAME [OPȚIUNI]
Numele coloanei, urmat de tipul coloanei, apoi de parametrii opționali. Vom intra în parametrii opționali mai târziu, dar concentrându-ne pe tipul de coloană, enumerăm mai jos cele mai utilizate tipuri de coloane disponibile:
Din toate punctele de vedere, tipurile de coloane de mai sus sunt tot ceea ce aveți nevoie pentru a scrie scheme de baze de date mySQL bine construite.
Definiți opțiunile coloanei
La definirea coloanelor există, de asemenea, diverse opțiuni pe care le puteți specifica. Mai jos este un alt exemplu de CREAȚI TABEL afirmație:
CREAȚI utilizatori TABLE (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
nume de utilizator VARCHAR (100) NOT NULL UNIQUE,
starea ENUM („activ”, „inactiv”) NU NUL DEFAULT „activ”,
sold DECIMAL (8,2) NU NUL DEFAULT 0,
data_nasterii DATETIME,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
Cele de mai sus pot părea puțin descurajante, dar nu vă faceți griji, este destul de simplu. Defalcat, iată ce se întâmplă în afirmația de mai sus:
- Ar trebui să utilizați întotdeauna NOT NULL pe toate coloanele posibile pentru a ajuta la viteza și performanța tabelului. Aceasta specifică pur și simplu că coloana nu poate fi lăsată goală / nulă atunci când este inserat un rând.
- Încercați întotdeauna să mențineți dimensiunea coloanei cât mai mică posibil, deoarece ajută la îmbunătățirea vitezei și performanței.
- id coloana este un număr întreg, este, de asemenea, cheia principală a tabelului, ceea ce înseamnă că este unică și va crește cu una de fiecare dată când este inserată o înregistrare. Acest lucru ar trebui, în general, să fie utilizat pe toate tabelele pe care le creați, astfel încât să puteți face referință cu ușurință la un singur rând din tabel.
- stare coloana este un ENUM și trebuie să aibă fie valoarea „activ”, fie „inactiv”. Dacă nu este specificată nicio valoare, va începe un nou rând cu starea „activ”.
- echilibru coloana începe de la 0 pentru fiecare rând nou și este o sumă care este formatată cu două două zecimale.
- Data de nastere coloana este pur și simplu o DATĂ, dar permite, de asemenea, o valoare nulă, deoarece data nașterii ar putea să nu fie cunoscută la creare.
- În ultimul rând creat la coloana este TIMESTAMP și implicit la ora curentă când a fost inserat rândul.
Cele de mai sus sunt un exemplu de tabel de baze de date frumos structurat și ar trebui folosit ca exemplu în viitor.
Unul dintre cele mai mari avantaje ale utilizării bazelor de date relaționale, cum ar fi mySQL este suportul său excelent pentru constrângerile cheii străine și în cascadă. Acesta este momentul în care legați două tabele împreună printr-o coloană, formând o relație părinte copil, astfel încât atunci când rândul părinte este șters, rândurile copil necesare sunt, de asemenea, șterse automat.
Iată un exemplu:
CREAȚI utilizatori TABLE (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
nume de utilizator VARCHAR (100) NOT NULL UNIQUE,
full_name VARCHAR (100) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) motor = InnoDB;
CREAȚI comenzi TABLE (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
userid INT NOT NULL,
suma ZECIMALA (8,2) NU NULĂ,
product_name VARCHAR (200) NOT NULL,
CHEIE STRĂINĂ (userid) REFERINȚĂ utilizatori (id) PE ȘTERGEREA CASCADEI
) motor = InnoDB;
Veți observa clauza FOREIGN KEY ca ultima linie. Această linie afirmă pur și simplu că acest tabel conține rânduri copil care sunt legate de numele de utilizator coloana la rândul lor părinte, care este id coloana din utilizatori masa. Ceea ce înseamnă acest lucru este, de fiecare dată când un șir este șters din utilizatori tabel, mySQL va șterge automat toate rândurile corespunzătoare din Comenzi tabel care ajută la asigurarea integrității structurale în baza de date.
Rețineți și motor = InnoDB la sfârșitul afirmației de mai sus. Deși InnoDB este acum tipul implicit de tabel mySQL, nu a fost întotdeauna, deci acest lucru ar trebui adăugat doar pentru a rămâne în siguranță, deoarece cascada funcționează numai cu tabelele InnoDB.
Proiectați cu încredere
Sunteți acum pe drumul cel bun pentru a arhitectura scheme de baze de date mySQL solide și bine structurate. Folosind cunoștințele de mai sus, puteți scrie acum scheme bine organizate care oferă atât performanță, cât și integritate structurală.
Cu schema dvs. la locul său, asigurați-vă că știți cum să o utilizați cu acestea comenzi SQL esențiale.
Aflați cum să utilizați îmbinările SQL pentru a simplifica interogările, pentru a economisi timp și pentru a vă face să vă simțiți ca un utilizator SQL puternic.
- Nespecificat
Aboneaza-te la newsletter-ul nostru
Alăturați-vă newsletterului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Încă un pas…!
Vă rugăm să confirmați adresa de e-mail în e-mailul pe care tocmai vi l-am trimis.