Lekcija: Relacijske podatkovne zbirke

Iz MaFiRaWiki

Ta članek ali del članka je v delu. Veseli bomo, če ga boste dopolnili in popravili.

Kaj pomeni to opozorilo?

Vsebina

Povzetek

V matematiki je relacija je podmnožica kartezičnega produkta. V teoriji podatkovnih zbirk pravimo relacijam tabele. Komponente tabele se imenujemo stolpci. Običajno stolpce poimenujemo z enoličnimi imeni. Urejena terica, ki pripada dani tabeli, se imenuje vrstica.

Praviloma ima vsaka tabela stolpec, imenovan primarni ključ, ki enolično določa vrstico, t.j., dve različni vrstici ne moreta imeti istega ključa. Primer: v tabeli oseb s stolpci 'ime', 'priimek', 'emšo' je 'emšo' primeren primarni ključ, saj dve osebni ne moreta imeti iste vrednosti 'emšo'.

Posebna vrednost NULL označuje nedefiniran podatek v tabeli.

Poleg primarnega ključa ima lahko tabela tudi ostale omejitve, kot so kombinirani ključi (več stolpcev skupaj je enoličen podatek), kako se sme iz tabele brisati podatke, ali so lahko polja v tabeli nedefinirana, ipd.

Osnovne operacije na tabelah

Naredi novo tabelo (CREATE TABLE (SQL))
ko naredimo novo tabelo podamo imena in tipe njenih stolpcev. Prav tako določimo stolpec, ki je primarni ključ in ostale omejitve, kot so kombinirani ključi in reference (glej spodaj).
Vstavi vrstico v tabelo (INSERT (SQL))
v dano tabelo vstavimo novo vrstico. Manjkajoči stolpci dobijo vrednost NULL.
Popravi vrstice v tabeli (UPDATE (SQL))
v dani tabeli popravi polja v vrsticah, ki ustrezajo določenemu pogoju.
Zbriši vrstice (DELETE (SQL))
v dani tabeli zbriši vrstice, ki ustrezajo danemu pogoju.
Poizvedba (SELECT (SQL))
poišči vse podatke (v eni ali večih tabelah), ki ustrezajo danemu pogoju.

Reference in povezovalne tabele

Pogosto se želimo v eni tabeli sklicevati na vrstico iz druge tabele. To storimo tako, da v prvo tabelo zapišemo primarni ključ vrstice iz druge tabele. Temu pravimo sklic ali referenca na drugo tabelo. Primer: imamo tabelo oseba s stolpci 'ime', 'priimek' in 'emšo' (primarni ključ), tabelo nakup, v kateri vodimo evidenco o tem, kdo in kdaj je kupil avtomobil, ter tabelo avto, ki vsebuje podatke o avtomobilih, ki jih prodajamo (primarni ključ je stolpec 'serijska_stevilka'). Potem bi imela tabela nakup tri stolpce:

  • 'datum', v katerem je zapisan datum nakupa,
  • 'kupec', v katerem se z emšo sklicujemo na vrstico v tabeli oseba,
  • 'avto', v katerm se s serijsko številko sklicujemo na vrstico v tabeli avto.

Tabeli, ki se sklicuje na več drugih tabel, pravimo tudi povezovalna tabela.

Transakcije

Pogosto želimo na podatkovni zbirki opraviti več operacij tako, da se bodisi vse uspešno izvedejo, bodisi se ne izvede nobena od njih. Na primer, če prenašamo denar v banki iz računa A na račun B, moramo zabeležiti dvig iz A in polog na B. Če bi med dvigom in pologom prišlo do napake (npr. pri bančnem okencu zmanjka elektrike), bi se zabeležil samo dvig.

Transakcija je zaporedje ukazov, ki se morajo vsi uspešno izvesti, ali pa se šteje, kot da se ni izvedel niti eden od njih. V SQL transakcijo začnemo z ukazom BEGIN TRANSACTION. Uspešno jo zaključimo z ukazom COMMIT, prekličemo pa jo z ukazom ROLLBACK.

Načrtovanje podatkovnih baz

Načrtovanje podatkovnih baz je zahtevno opravilo, čeprav se na prvi pogled zdi, da je to dokaj preprosta zadeva. Znani so principi dobrega načrtovanja baz (manjka referenca).

Eno od osnovnih vodil je, da ne smemo podvajati podatkov. Če lahko kak podatek izračunamo iz ostalih, ga ne zapisujemo v bazo. Če se kak podatek večkrat ponovi (npr. pri vsaki osebi imamo zapisan kraj in poštno številko), ga raje zapišemo v posebno, ločeno tabelo, in se nanj skličemo povsod, kjer ga potrebujemo. Temu postopku ločevanja podatkov na posamezne tabele pravimo normalizacija.

Osebna orodja