Neformalna vodila

Neformalno vodilo - semantika atributov

Posledica grupiranja atributov pri ustvarjanju relacij je tudi pridruževanje določenega pomena (semantike) posameznemu atributu. Pri tem je potrebno upoštevati nasvete:

  • relacije načrtujte tako, da bo enostavno pojasniti njen pomen;
  • ne kombinirajte (mešajte) atributov različnih tipov entitet v eni relaciji.

Primer 'slabe' relacije: Delavec (Davčna_st, Priimek, Ime, Naslov, Ime_Oddelka, Vodja_oddelka, Naslov oddelka)

Relacija vsebuje atribute entitetnega tipa Delavec (njegovo davčno številko, priimek, ime, naslov in oddelek, v katerem dela) in atribute entitetnega tipa Oddelek (oddelek, vodjo oddelka in naslov oddelka).

Neformalno vodilo - zmanjševanje podvajanj vrednosti v vrsticah tabele

En od ciljev načrtovanja je tudi zmanjšanje potrebnega pomnilniškega prostora za hranjenje podatkov v relaciji. Način grupiranja atributov v relacije ima velik vpliv na porabo pomnilnika, t.j. napačno grupiranje atributov lahko ima za posledico tudi anomalije, do katerih pride pri posodabljanju podatkov. Posledice anomalij so neskladnosti in dvoumnosti med podatki ali (celo) njihova izguba.

Primer relacije s podvajanjem vrednosti

Delavec
DelavecID
Priimek
OddelekID
ImeOddelka
Kraj oddelka
104
Perko
3
Prodaja
Ljubljana
180
Mevded
2
Finance
Maribor
192
Volk
2
Finance
Maribor
197
Pihlar
3
Prodaja
Ljubljana
199
Kalin
2
Finance
Maribor

 

Vrste anomalij pri posodabljanju podatkov

1. Anomalije pri dodajanju novih zapisov:

  • ker je ključ relacije Delavec atribut Davčna številka, ne moremo dodati novega oddelka, v katerem ni še nihče zaposlen;
  • vnos vseh podatkov o oddelku, v katerem je delavec zaposlen, mora biti povesem točen ali pa povsod moramo vpisati NULL -> za avtomatizacijo preverjanja veljavnosti novih podatkov moramo napisati del programske kode
Delavec
DelavecID
Priimek
OddelekID
ImeOddelka
Kraj oddelka
104
Perko
3
Prodaja
Ljubljana
180
Mevded
2
Finance
Maribor
192
Volk
2
Fruinance
Maribor
197
Pihlar
3
Prodaja
Ljubljana
199
Kalin
2
Finance
Maribor



2. Anomalije pri brisanju zapisov - lahko pride do izgube podatkov:

  • če pride do brisanja vseh delavcev iz oddelka 2, hkrati izgubimo tudi vse ostale podatke o oddelku (ime oddelka, kraj oddelka).
Delavec
DelavecID
Priimek
OddelekID
ImeOddelka
Kraj oddelka
104
Perko
3
Prodaja
Ljubljana
180
Mevded
2
Finance
Maribor
192
Volk
2
Finance
Maribor
197
Pihlar
3
Prodaja
Ljubljana
199
Kalin
2
Finance
Maribor
Kam je 'izginil' oddelek 2?

3. Anomalije pri spreminjanju vrednosti atributov - lahko pripeljejo do nekonsistentnosti (neskladnosti) podatkov:

  • Če se je oddelek 2 preselil iz Maribora v Kranj, moramo to spremembo vpisati v vse vrstice relacije, v katerih so delavci, ki delajo v oddelku 2.
  • Posledici: zamudnost pri posodabljanju podatkov in možnost nepopolne posodobitve (dvoumni podatki).
Delavec
DelavecID
Priimek
OddelekID
ImeOddelka
Kraj oddelka
104
Perko
3
Prodaja
Ljubljana
180
Mevded
2
Finance
Kranj
192
Volk
2
Finance
Kranj
197
Pihlar
3
Prodaja
Ljubljana
199
Kalin
2
Finance
Maribor



Nasveti:

  • PB načrtujte tako, da se ne more pojaviti nobena od anomalij pri dodajanju, brisanju ali modificiranju podatkov.
  • Če pride do katerekoli anomalije, poskrbite, da vse aplikacije, ki dostopajo do PB posodobijo vsebino baze tako, da ohranijo integriteto (celovitost) podatkov. To je sicer težja naloga, ker zahteva dobro koordinacijo z vsemi programerji, ki pišejo uporabniške aplikacije.

Neformalno vodilo - zmanjševanje števila opcijskih atributov

Posledice pogoste pojavitve vrednosti NULL v zapisih so

  • izguba pomnilniškega prostora in
  • manjša semantična vrednost podatkov - NULL vrednosti vplivajo na semantiko (pomen) relacije in na opredelitev različnih operacij (povezovanje relacij , agregacija (združevanje) podatkov, ..).

Možne interpretacije pomena vrednosti NULL so:

  • atribut nima pomena za to relacijo,
  • vrednost atributa je za ta zapis neznana,
  • vrednost atributa je sicer znana, vendar še ni zabeležena.

Zaradi enake predstavitve (vrednost NULL) za vse navedene možnosti, je pridobivanje informacij iz tovrstnega zapisa dvoumno in zato vprašljivo.

Nasveti:

  • V največji možni meri se izogibajte dovoljevanju null vrednosti za atribute osnovnih relacij.
  • Če so vrednosti null neizogibne, zagotovite, da se pojavljajo le v izjemnih primerih in da se ne pojavljajo v večini primerov.

Neformalno vodilo - preprečiti 'sumnjive zapise'

Nekakovostna (slaba) dekompozocija (delitev) velike relacije v množico manjših lahko povzroča množico težav. V praksi lahko pride do situacije, da se zaradi dekompozicije informacije osnovne relacije lahko tudi izgubijo ali popolnoma popačijo. To lahko ugotovimo takrat, ko manjše relacije ponovno povežemo nazaj. V tem prieru je rezultirajoča relacija večja od originalne, ker vsebuje množico neveljavnih oz. simnjivih zapisov.

Primer slabo opravljene dekompozicije:

a) osnovna relacija:

Delavec
DelavecID
Priimek
Kraj
Država
Poštna št.
104
Perko
Ljubljana
Slovenija
1000
180
Mevded
Maribor
Slovenija
2000
192
Volk
Trst
Italija
3006
197
Pihlar
Ljubljana
Slovenija
1000
199
Kalin
Ljubljana
Slovenija
1000

b) Delitev relacije Delavec na relaciji Delavec1 in Šifrant pošt:

Delavec1

 

Šifrant pošt
DelavecID
Priimek
Kraj
Država

 

Poštna št.
Država
104
Perko
Ljubljana
Slovenija

 

1000
Slovenija
180
Mevded
Maribor
Slovenija

 

2000
Slovenija
192
Volk
Trst
Italija

 

3006
Italija
197
Pihlar
Ljubljana
Slovenija

 

 

 

199
Kalin
Ljubljana
Slovenija

 

 

 


c) posledica izvedbe povezovanja tabel Delavec1 in Seznam pošt:

  • dobljena tabela je večja od osnovne
  • tabela ima neveljavne (sumnjive) zapise.
Delavec
DelavecID
Priimek
Kraj
Država
Poštna št.
104
Perko
Ljubljana
Slovenija
1000
104
Perko
Ljubljana
Slovenija
2000
180
Medved
Maribor
Slovenija
2000
180
Medved
Maribor
Slovenija
1000
192
Volk
Trst
Italija
3006
197
Pihlar
Ljubljana
Slovenija
1000
197
Pihlar
Ljubljana
Slovenija
2000
199
Kalin
Ljubljana
Slovenija
1000
199
Kalin
Ljubljana
Slovenija
2000


Nasveti za preprečevanje neveljavnih zapisov:

Relacijske sheme načrtujte tako, da jih lahko povežete na osnovi enakih vrednosti atributov, ki so bodisi primarni ali tuji ključi. Tako se izognemo rezultatom povezovanj, ki imajo neveljavne zapise.