2. Æfing – Greining

Hvað ef Grjóti Stefsson, sem er forstjóri hjá Hugbrjót ehf. gerist einnig forstjóri hjá nýju fyrirtæki sem einnig er í samskiptum við okkar fyrirtæki, hvernig ættum við að geyma slíkar upplýsingar?

Tafla 4

Töfluheiti: Póstsvæði.

Nr. Nafn
0220 Hafnarfirði
0110 Reykjavík
0210 Garðabæ
0200 Kópavogi
0105 Reykjavík

Í báðum töflunum, Fyrirtæki og Einstaklingar er nú safn eininda sem öll hafa heimilisföng sem götuheiti og póstsvæði. Póstsvæði er samsett gildi úr póstnúmeri og heiti póstsvæðis. Götuheiti er samsett gildi úr heiti götunnar og húsnúmeri, í einstaka tilfellum gæti jafnvel verið um húsheiti að ræða eins og algengt er á engil­saxneskum málsvæðum.

Hér hefur verið tekin sú afstaða að fyrst póstsvæði er samsett gildi að líta á það sem sérstakt einindi þar sem það hefur sjálfstæðra tilveru í raunveruleikanum. Þetta einindi á sitt sérstaka (einkvæma[1]) póstnúmer og heiti póstsvæðis. Hugsast getur að þetta póstsvæði eigi frekari upplýsingar s.s. aðsetur póststöðvar, upplýsingar um pósthólf o.s.frv. Þannig höfum við baktryggt okkur gagnvart frekari þarfagreiningu fyrir gagnagrunninn. Ef geyma þyrfti frekari upplýsingar t.d. um aðsetur póststöðvar þá þyrftum við aðeins að bæta þeim upplýsingum við töfluna Póstsvæði, frekar en að þurfa að troða þeim inn í allar færslur í Fyrirtæki og Einstaklingar.

Fyrirspurnir

Nú er komið að því að gera fyrirspurn sem sækir upplýsingar um Hugbrjótur ehf. og alla tengiliði sem við höfum við það fyrirtæki, ásamt póstsvæðum.

Á mæltu máli gætum við orðað fyrirspurnina þannig: „Gefðu mér allar upplýsingar um einindi í töflunum Einstaklingar og Fyrirtæki, þar sem númer fyrirtækis er 1 og fyrirtækis númer einstaklings sé líka 1, birtu upplýsingar um póstsvæði í niðurstöðunni.“ Á almennu máli mætti orða fyrirspurnina þannig: Byrtu mér alla einstaklinga hjá fyrirtæki númer 1 ásamt heimilisföngum bæði einstaklinga og fyrirtækis. Á gagna­grunns­máli væri þetta orðað þannig:

select * from einstaklingar, fyrirtaeki, postsvaedi
 where fyrirtaeki.fyrirt_nr = 1
 and fyrirtaeki.fyrirt_nr = einstaklingar.fyrirt_nr
 and fyrirtaeki.postnumer = postsvaedi.postnr;

Gagnagrunns kerfið myndi skila eftirfarandi gögnum:

 

1      1      Grjóti Stefsson      MD. Tölvunarfræði    Forstjóri     Aflatröð 5    0110   199-1234      599-1234   999-1234      grjoti@aflatradir.net      1      Hugbrjótur ehf.      Sílikongarðar 25     0210   599-1234   hugbrjotur@hugbrjotur.net  www.hugbrjotur.net   0210   Garðabæ       Garðatorgi 5

4      1      Fríða Fróðadóttir    MD. Heimspeki Forstjóri     Eindartröð    0105   199-3412      599-3412       999-3412      gudda@grandatradir.net     1      Hugbrjótur ehf.      Sílikongarðar 25     0210   599-1234   hugbrjotur@hugbrjotur.net  www.hugbrjotur.net   0210   Garðabæ       Garðatorgi 5

 

Einnig mætti setja sömu fyrirspurn upp þannig að færri dálkar kæmu fram í  niðurstöðunum samanber eftirfarandi:

select e.einst_nr, e.fyrirt_nr, e.nafn, e.starfstitill,
 f.fyrirt_nr, f.fyrirt_nafn, f.fyrirt_heim, f.postnumer,
 f.adalsimi, p.postnr, p.heiti
 from einstaklingar as e, fyrirtaeki as f, postsvaedi as p
 where f.fyrirt_nr = 1
 and f.fyrirt_nr = e.fyrirt_nr
 and f.postnumer = p.postnr;

Niðurstöðurnar væru þá ögn læsilegri í framsetningu:

1 1 Grjóti Stefsson Forstjóri 1 Hugbrjótur ehf. Sílikongarðar 25 0210 599-1234 0210 Garðabæ
4 1 Fríða Fróðadóttir Markaðsstjóri 1 Hugbrjótur ehf. Sílikongarðar 25 0210 599-1234 0210 Garðabæ

Myndin hér á eftir sýnir hvernig grunnurinn finnur línu í fyrirtækis töflunni þar sem fyrirtækis númerið er 1, tvær línur í einstaklings töflunni þar sem fyrirtækis númerið er líka 1, og póstnúmer og heiti póstsvæðis í póstsvæðis töflunni þar sem póstnúmerið er hið sama bæði í póstnúmeratöflunni og fyrirtækistöflunni.

skemamynd
Myndræn framsetning á fyrirspurnunum hér fyrir framan.

 

[1] Einkvæmt eða Unique stendur fyrir að aðeins eitt gildi sé fyrir hendi innan mengis (e. Set) annarra gilda. Til dæmis er kennitala íslendinga einkvæmt gildi í þjóðskránni því aðeins ein kennitala er til fyrir hvern og einn íslending.

 

This entry was posted in MySQL bók. Bookmark the permalink.

Comments are closed.