Acesta este un exemplu simplu despre cum poate arăta o bază de date tipică.
În proiectarea unei baze de date, primul lucru pe care trebuie să-l faceți este să calculați secvența acțiunilor de care aveți nevoie pentru a îndeplini sarcina la îndemână. În SQL, aceasta ar putea arăta astfel:
Prima linie spune MySQL DBMS că definim o tabelă numită Widget_Table. Următoarele șase linii definesc câmpurile conținute de tabel, tipul de date care este inclus în ele și atributele acestor câmpuri.
Înainte de a putea crea acest tabel, trebuie să creați o bază de date goală. În MySQL, acest lucru se face prin intermediul programului mysqladmin.
Unul dintre multele concepte de bază într-un bun design de baze de date relaționale este că nu ar trebui să stocați niciodată date redundante. În cazul Widget_Table, acest lucru se reflectă în câmpurile Widget_color_id și widget_size_id. Aceste două câmpuri ar putea fi șiruri de caractere. În schimb, le facem indicatori la alte tabele care vor conține o intrare pentru fiecare valoare posibilă care poate conține un astfel de câmp.
Acest lucru se întâmplă din două motive:
- consistență
- Centralizarea complexității
Widget_id - mediul (3 octeți) este un număr întreg cu număr întreg. Are atribute speciale NOT NULL și AUTO_INCREMENT. NOT NULL este un standard ANSI SQL și stabilește că atunci când cineva introduce informațiile widget în acest tabel, acestea trebuie să dea un anumit sens acestui domeniu. Dacă nu, MySQL atribuie o valoare implicită câmpului. Desigur, dacă a fost definită o valoare implicită, aceasta va fi utilizată atunci când nu este specificată nicio valoare. Dacă nu este definită, câmpul va obține o valoare bazată pe tipul său.
AUTO_INCREMENT este un atribut specific al MySQL. Dacă ați pus un zero în acest domeniu MySQL, atribuie automat o valoare care este una mai mare decât cea mai mare valoare anterioară atribuită acestui câmp în tabel. Aceasta este o metodă simplă de producere a identificatorilor unici pentru noile obiecte widget, deoarece acestea sunt introduse în tabel.
De asemenea, definim mai multe chei. Când atribuiți câmpul atributul AUTO_INCREMENT, trebuie de asemenea să definiți acest câmp ca cheie primară. Puteți avea o singură cheie primară pe tabel. Doar un câmp pe tabelă poate avea un atribut AUTO_INCREMENT.
De asemenea, creăm indexuri secundare utilizând cuvântul KEY. Indexarea crește în mod semnificativ viteza interogărilor și se unește. Indicii pot include mai mult de un câmp. Dacă aveți un index care include mai mult de un câmp, nu este necesar să creați un alt index cu primul câmp din indexul compozit.
Am definit Widget_Table. Acum trebuie să stabiliți calea pentru urmărirea comenzilor. În acest scop, definim tabelul Purchase_Order.
Un alt domeniu interesant este last_action_date. Acest câmp este de tip TIMESTAMP. Câmpurile de acest tip sunt modificate automat ori de câte ori sunt INSERT sau UPDATE. Aceasta indică momentul în care înregistrarea a fost modificată ultima dată.
Tabel pentru Purchase_Order_Item:
Tabelul Purchase_Order_Item stochează informații despre toate elementele câmpului metodei de achiziție. Stochează informații despre cine, când, ce și câte comandă.
Acum să ne gândim la asta. Printre clienții cu siguranță există comercianți care sunt fericiți să vă vândă produsul la prețuri proprii. Ar fi frumos să le atragi, de exemplu, cu o mică reducere. Dar pentru aceasta este necesar cel puțin aproximativ să ne imaginăm cine a cumpărat bunurile pentru ei înșiși și cine a vândut. Bine, să le acoperi cu o glugă.
Avem nevoie de alte trei tabele simple pentru informațiile despre servicii:
Tabelul Statutul este foarte simplu. Avem nevoie de un cod numeric unic, care este asociat cu un câmp de text scurt care conține textul codului de stare.
Tabelele Widget_Color și Widget_Size sunt aproape identice cu tabela Status. Numai numele au fost schimbate.
Asta e tot! Puteți introduce date.