Tabela je osnovni gradnik relacijske podatkovne baze. V njej so podatki urejeni v stolpce in vrstice. Stolpci določajo, katere podatke tabela hrani, vrstice pa predstavljajo posamezne zapise.
Ko ustvarjamo tabelo, moramo za vsak stolpec določiti ime, podatkovni tip in po potrebi tudi omejitve. Omejitve povedo, ali je podatek obvezen, ali se vrednost samodejno povečuje in kateri stolpec enolično določa zapis.
Pomni: Tabela opisuje eno vrsto podatkov. Tabela uporabniki naj hrani podatke o uporabnikih, tabela izdelki podatke o izdelkih, tabela naročila pa podatke o naročilih.
Dobro načrtovana tabela ima jasno ime, smiselno izbrane stolpce, ustrezne podatkovne tipe in glavni ključ, s katerim lahko enolično prepoznamo vsak zapis.
Vsebina strani
Osnovna pravila
Pred pisanjem ukaza za ustvarjanje tabele je treba razmisliti, katere podatke bo tabela hranila in kako jih bomo pozneje uporabljali.
- Ime tabele naj jasno pove, katere podatke tabela hrani.
- Vsak stolpec naj predstavlja en podatek, na primer
ime,emailalidatum_rojstva. - Za vsak stolpec izberemo ustrezen podatkovni tip.
- Za enolično prepoznavanje zapisov običajno uporabimo stolpec
id. - Obveznim podatkom dodamo omejitev
NOT NULL. - Pri besedilu je priporočljivo uporabiti nabor znakov
utf8mb4.
Pozor: Slabo načrtovana tabela lahko pozneje oteži iskanje, razvrščanje, povezovanje in spreminjanje podatkov. Zato je načrtovanje tabele pomemben del dela s podatkovno bazo.
Osnovna sintaksa ukaza CREATE TABLE
Tabelo ustvarimo z ukazom CREATE TABLE. V oklepajih navedemo stolpce, njihove podatkovne tipe in morebitne omejitve.
CREATE TABLE ime_tabele (
stolpec_1 podatkovni_tip_1,
stolpec_2 podatkovni_tip_2,
...
stolpec_n podatkovni_tip_n
);
Pri ustvarjanju tabele pogosto dodamo tudi omejitve, na primer PRIMARY KEY, NOT NULL ali AUTO_INCREMENT.
Pomni: Med definicijami stolpcev pišemo vejice. Za zadnjim stolpcem pred zaključnim oklepajem vejice običajno ne zapišemo.
Preprost primer izdelave tabele
V naslednjem primeru ustvarimo tabelo uporabniki, ki hrani osnovne podatke o uporabnikih.
CREATE TABLE uporabniki (
id INT PRIMARY KEY AUTO_INCREMENT,
uporabnisko_ime VARCHAR(50),
email VARCHAR(100)
);
V tem primeru ima tabela tri stolpce:
idje celo število, ki se samodejno povečuje in je glavni ključ,uporabnisko_imeje besedilo dolžine do 50 znakov,emailje besedilo dolžine do 100 znakov.
Omejitve stolpcev
Omejitve določajo dodatna pravila za vrednosti v stolpcih. Z njimi poskrbimo, da so podatki pravilnejši in bolj zanesljivi.
| Omejitev | Pomen | Primer |
|---|---|---|
PRIMARY KEY |
Določi glavni ključ, ki enolično označuje vsak zapis. | id INT PRIMARY KEY |
AUTO_INCREMENT |
Vrednost se pri novem zapisu samodejno poveča. | id INT AUTO_INCREMENT |
NOT NULL |
Stolpec mora imeti vrednost. | ime VARCHAR(50) NOT NULL |
DEFAULT |
Določi privzeto vrednost, če vrednosti ne podamo. | aktiven TINYINT DEFAULT 1 |
UNIQUE |
Vrednost v stolpcu se ne sme ponoviti. | email VARCHAR(100) UNIQUE |
Primer tabele z več omejitvami:
CREATE TABLE uporabniki (
id INT PRIMARY KEY AUTO_INCREMENT,
uporabnisko_ime VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
aktiven TINYINT DEFAULT 1
);
Pozor: Omejitve niso samo dodatek k tabeli, ampak pomagajo varovati pravilnost podatkov. Če mora biti e-poštni naslov vedno vpisan, stolpec email ne sme dovoljevati manjkajoče vrednosti.
Šumniki in nabor znakov
Pri delu z besedilom moramo paziti, da tabela uporablja ustrezen nabor znakov. Danes je priporočljivo uporabiti utf8mb4, ker podpira širok nabor znakov Unicode, tudi šumnike in druge posebne znake.
CREATE TABLE drzave (
st INT,
drzava VARCHAR(50),
regija VARCHAR(50),
povrsina INT,
prebivalstvo INT,
bdp BIGINT
) DEFAULT CHARSET=utf8mb4;
Če bi uporabili neustrezen nabor znakov, bi se lahko šumniki ali drugi posebni znaki prikazovali napačno.
Pri sodobnih podatkovnih bazah je priporočljivo uporabljati utf8mb4, saj omogoča pravilno shranjevanje širšega nabora znakov kot starejši zapis utf8 oziroma utf8mb3.
Primer tabele z več različnimi tipi
V naslednjem primeru ustvarimo tabelo dijaki, ki vsebuje več različnih podatkovnih tipov in omejitev.
CREATE TABLE dijaki (
id INT PRIMARY KEY AUTO_INCREMENT,
ime VARCHAR(50) NOT NULL,
priimek VARCHAR(50) NOT NULL,
datum_rojstva DATE,
email VARCHAR(100),
povprecje DECIMAL(4,2)
) DEFAULT CHARSET=utf8mb4;
V tem primeru uporabimo več različnih podatkovnih tipov:
INTza identifikator,VARCHARza krajše besedilo,DATEza datum,DECIMALza decimalno število.
Primerjava delov tabele
Pri ustvarjanju tabele se pojavlja več pojmov, ki jih je treba jasno razlikovati.
| Pojem | Pomen | Primer |
|---|---|---|
| tabela | Zbirka sorodnih podatkov, urejenih v stolpce in vrstice. | uporabniki |
| stolpec | Določa posamezno lastnost oziroma vrsto podatka. | email |
| podatkovni tip | Določa, kakšne vrednosti lahko stolpec hrani. | VARCHAR(100) |
| omejitev | Dodatno pravilo za vrednosti v stolpcu. | NOT NULL |
| glavni ključ | Stolpec ali skupina stolpcev, ki enolično določa zapis. | PRIMARY KEY |
Priporočila
- Ime tabele naj bo kratko, jasno in brez presledkov.
- Imena stolpcev naj bodo razumljiva in zapisana dosledno.
- Za glavni ključ pogosto uporabi stolpec
idsPRIMARY KEYinAUTO_INCREMENT. - Za obvezne podatke uporabi
NOT NULL. - Za e-poštne naslove in podobne enolične podatke razmisli o omejitvi
UNIQUE. - Za besedila uporabi nabor znakov
utf8mb4. - Pred ustvarjanjem tabele premisli, ali vsak stolpec res spada v isto tabelo.
Pogoste napake
- Ustvarjanje tabele brez glavnega ključa.
- Uporaba preveč splošnih imen stolpcev, na primer
podatek1alivrednost. - Neustrezno izbran podatkovni tip za stolpec.
- Manjkajoča vejica med stolpci v ukazu
CREATE TABLE. - Manjkajoča omejitev
NOT NULLpri obveznih podatkih. - Neustrezen nabor znakov, zaradi česar se posebni znaki lahko prikažejo napačno.
- Združevanje preveč različnih vrst podatkov v eno tabelo.
Pri imenih tabel in stolpcev je priporočljivo uporabljati preprosta imena brez presledkov, šumnikov in posebnih znakov. Tako je delo z ukazi SQL preglednejše in manj podvrženo napakam.