Podatkovne baze

Podatkovne baze

Avtor: Matija Lokar

Kako v enem predavanju povedati vse o podatkovnih bazah

  • Ne gre!
  • Zato le par iztočnic, namigov, ...
  • Poudarek bo na praktičnem delu z ukazi SQL (vaje)
  • Zelo priporočam, da preštudirate vse navedene povezave
  • Glavni namen:

    • Ko boste iskali zaposlitev, boste lahko rekli

      • Če poznam baze podatkov in SQL? Ja, s tem smo se tudi ukvarjali med študijem. Nekaj o tem vem.
    • Vpogled v področje, s katerim so bo večina verjetno srečala in ga praktično uporabljala
  • V prenovljenem programu so Podatkovne baze samostojen predmet

Zakaj podatkovne baze?

  • Kakšne programe pišemo sedaj?

    • Podatki "zapečeni" v program
    • Preberemo preko tipkovnice
  • V banki bi bilo strahotno nepraktično, če bi morali ob vašem dvigu vtipkati vse vaše prejšnje pologe in dvige, da bi videli vaše stanje
  • Borzni problem

    • Podatke ste dobili z datoteke
  • Vnos podatkov in hranjenje podatkov

    • Podatki naj se obdržijo tudi medtem, ko program ne deluje.
    • Datoteke
  • Kaj je dobrega z datotekami?

    • Enostavnost: za to, da uporabljate datotečni sistem na računalniku niste potrebovali nobenega posebnega izobraževanja

      • Nikjer ni oglasov kot so Iščemo upravljalca baze podatkov, zaželjeno vsaj 5 let delovnih izkušenj, dobra plača, ...
      • Ali ponudb za poglobljene tečaje načrtovanja baz podatkov z znižano ceno 2700 Evrov ...
    • Vse kar dela ...

      • Malo igranja s podatkovnimi tokovi, če je potrebno, vzamemo tekstovni urejvalnik (TextPad ...), malo popravimo podatke in je ...
    • Shranimo lahko praktično vse podatke
  • Kaj pa je problem?

Seznam e-naslovov prijateljev

  • Lahko hranimo v datoteki?
  • Ni problem

    • Vsak naslov v svoji vrsti
    • Ali pa ločen z |
    • Dokler poštni naslov ne vsebuje prihoda v novo vrsto ali |, vse deluje kot namazano ...
    • Res?
  • Iskanje je počasno
  • Ali je matija.lokar@fmf.uni-lj.si že na seznamu?

    • pregled cele datoteke
  • Iskanje je počasno in drago.

    • Uporabimo indekse

      • Spomnimo se na knjige!
      • Razpršene tabele, zgoščevalne funkcije, iskalna drevesa, ...
      • B-drevesa, ...
    • Zakaj ne bi za vsa opravila v zvezi z indeksi skrbel nekdo drug, mi pa bi jih le uporabljali

      • In uživali v vseh blagodatih, ki nam jih indeksi nudijo ... (če parafraziramo določenega slovenskega pisatelja)

Sočasen dostop

  • Program, ki omogoča vpis novih naslovov

    • Recimo, da ga sočasno uporablja več ljudi!
  • Dva hočeta sočasno vnesti nov e-naslov?
  • Sočasen dostop do iste datoteke!
  • Možnosti:

    • Oba vnosa sta OK
    • Eden od vnosov se izgubi
    • Informacija iz obeh vnosov se "pomeša" in oba vnosa sta "zanič"

      • Verjetno programi, ki uporabljajo to datoteko, ne bodo delali več
  • Denimo, da bi na ta način poslovala banka!
  • Dva tipa računov: tekoči in varčevalni
  • Transakcije (dvige in pologe) za vsak račun hranimo v dveh datotekah tekoci.txt in varcevalni.txt.

Sočasen dostop 2

  • Janez hoče prenesti 10000 evrov z varčevalnega na tekoči račun, Micka pa položiti na isti varčevalni račun 5 evrov.
  • Program uspešno zapiše novo stanje (za + 10000 evrov) na tekočem računu Janeza in za 10000 evrov nižje na varčevalnem računu. A še preden se ta zadnja akcija konča, se začne vpis Mickinih 5 evrov ...
  • Potrebujemo kontrolo sočasnosti dostopa
  • To gre tudi za datoteke. Problem rešen

    • če odštejemo ves trud pri programiranju, da bomo to dosegli

Kotrola transkacij

  • Janez hoče prenesti 10000 evrov z varčevalnega na tekoči račun
  • Delo z dvema datotekama
  • Najprej opraviti posel na eni, nato še na drugi.
  • Kaj, če vmes zmanjka elektrike?
  • Transakcije:

    • Zaporedja dogodkov, ki se morajo zgoditi vsi, ali pa noben!
    • Potrebujemo način, da to zagotovimo
  • ACID test

    • Atomicity, Consistency, Isolation, Durability

ACID

  • ACID test

    • Atomarnost: transakcija je celota. Ali uspe vsa, ali pa sploh ne. Ne sme uspeti le del
    • Konsistentnost: vsaka transakcija prevede dovoljeno stanje v dovoljeno. Torej mora vsaka sprememba preveriti, če se s tem ne kršijo pravila, Npr. bančni sistem ne sme dopuščati vnosa pologa osebi, ki ni registrirana kot klient banke. Uporabniško ime ima lahko le študent FMF. Če nekoga izbrišemo iz podatkovne baze študentov FMF, se mora pobrisati tudi pripadajoče uporabniško ime!
    • Izolacija: rezultat transakcije mora biti neviden ostalim transakcijam, dokler transakcija ni izvedena v celoti. Npr. če preverjamo stanje na Janezovih računih med prenosom iz varčevalnega na tekoči račun, moramo videti bodisi stanje pred to transakcijo, bodisi po tej transakciji, nikakor pa ne vmes (ko smo npr. zabeležili nižje stanje na varčevalnem računu, višje na tekočem pa še ne).
    • Stalnost: rezultati transakcij morajo biti stalni in "preživeti" okvare sistema ali medijev. Npr. če vam rezervacijski sistem dodeli sedež v kinu 15C in izda karto in se trenutek za tem "sesuje", mora po obnovitvi sistema še vedno veljati, da imate vi sedež 15C.
  • Je to možno zagotoviti z ustrezno kodo v programih?
  • Seveda!
  • A za kakšno ceno?
  • Zakaj ne bi vzeli sistem, ki to "zna" in mi le uporabimo!

Sistemi za upravljanje z bazami podatkov

  • DBMS

  • Več tipov baz

    • Hierarhični, mrežni, ...
    • Relacijski (Codd, 1970)
  • Danes praktično večina baz:

    • Relacijske podatkovne baze
    • RDMBS
  • Primeri RDMBS:

    • MS Access, MS Excel, MySQL, PostgreSQL, Oracle, MS SQL DB2, ...
    • Pogosto rečemo baza MySQL

      • To je narobe!
      • MySQL je RDBMS
      • Baza je pa tisto, kar upravljamo z MySQL (npr. baza študentov, ...)

Da bomo bolj "pametni"

  • Problemi, ki jih rešujemo z uporabo podatkovne baze ("doza" dobro zvenečih besed):

    • struktura podatkov (spremembe, dodajanje stolpcev, dodajanje tabel, ...),
    • standardiziran dostop (logični pogledi, nabori znakov, SQL, SQL92, orodja za ad-hoc pregled in vzdrževanje, ...),
    • shranjeni postopki (procedure, prožilci, objektni model, ...),
    • dostop do podatkov (podatkovni tipi, indeksi, primarni ključi, zunanji ključi, ...),
    • fizično shranjevanje podatkov (prostor za podatke, razporeditev po diskih, ...),
    • atomarnost operacij (transakcije, commit, rollback, ...),
    • integriteta (odpovedi, napake, ...),
    • pooblastila (kdo sme do podatkov, kdo jih sme spreminjati, ...),
    • paralelizem (zaklepanje tabel, vrstic, paralelne transakcije, ...),
    • distribuiranost podatkov (na različnih strežnikih, ...),
    • kopije podatkov (varnostne kopije, zapis sprememb, delovne kopije),
    • ...

Relacijske baze podatkov

  • Še malo pojmov za "učenost": Relacijska algebra, n-terke, 3. normalna oblika, kompozitum, dvovalentna predikatna logika, normalizacija baze podatkov, referenčna integriteta, ...
  • Po domače: Relacijska baza podatkov je velika preglednica, ki jo več ljudi lahko sočasno popravlja.
  • Podatke hranimo v tabelah, ki imajo vrstice in stolpce
  • Vrstica: zapis

    • Podatki o določenem objektu
  • Stolpci

    • Lastnosti objektov
    • Ime in tip
  • Podatkovna baza: skupek več tabel

    • Podatki so povezani s pomočjo relacij
  • Najprej se bomo naučili delati z najbolj enostavnimi bazami, ki bodo sestavljene le iz ene tabele

Primer

  • Baza zaposlenih
IDZaposlenegaImePriimekIDOddelkaStopnja
MK1Miha KranjcPOIV
MH1Maja HrustKOVII
LS1Lidija SvetROV
MK2Mitja KernNOIV


NameRegionAreaPopulationgdp
AfghanistanSouth Asia65222526000000
AlbaniaEurope2872832000006656000000

Entiteta, vrstica, stolpec, celica

  • entiteta (prog.jezik – razred)

    • Stvar ali dogodek, ki ga opazujemo
    • Razred v javi
    • Zaposleni, oddelek, ...
    • Vsaki entiteti pripada ena tabela
  • vrstica: primerek entitete (posamezni zaposleni) – objekt določenega razreda
  • stolpec: lastnost (stopnja izobrazbe)
  • celica: vrednost lastnosti določenega primerka
(tabela.png)
0%
0%