Načrtovanje in razvoj spletnih aplikacij

Izdelava tabel - CREATE TABLE

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, email ali datum_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:

  • id je celo število, ki se samodejno povečuje in je glavni ključ,
  • uporabnisko_ime je besedilo dolžine do 50 znakov,
  • email je 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:

  • INT za identifikator,
  • VARCHAR za krajše besedilo,
  • DATE za datum,
  • DECIMAL za 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 id s PRIMARY KEY in AUTO_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 podatek1 ali vrednost.
  • Neustrezno izbran podatkovni tip za stolpec.
  • Manjkajoča vejica med stolpci v ukazu CREATE TABLE.
  • Manjkajoča omejitev NOT NULL pri 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.