ER-mallinnuksen perusteet

Download Report

Transcript ER-mallinnuksen perusteet

ER (Entity-Relationship) –mallinnuksen
perusteet
• Jotta voitaisiin saada tarkka ymmärrys datasta ja
miten sitä käytetään, tarvitaan ei-tekninen malli.
• ER-malli on sekä asiakkaalle että suunnittelijoille.
• Liittyy ”top-down” –menetelmään.
• ER-malli mallintaa kohdealueen keskeiset kohteet
(entity) ja kohteiden väliset yhteydet (relationship).
ER, Entity Relationship
tMyn
1
• Kohteita, entiteettejä voidaan ryhmitellä
kohdetyypeiksi, entiteettityypeiksi (entity type).
• Voidaan esim. ajatella, että kaikki yksittäiset
työntekijät kuuluvat entiteettityyppiin henkilökunta.
• Samaan entiteettityyppiin kuuluvilla ilmentymillä
(entity occurrence) on yhteisiä ominaisuuksia eli
attribuutteja.
• Niinpä esim. kaikilla työntekijöillä on etunimi,
sukunimi, asema etc.
• Kohdeilmentymä on yksi rivi tietokannan taulussa.
ER, Entity Relationship
tMyn
2
• Käytetään mallinnuksessa UML (Unified Modeling
Language)-kuvauskieltä.
• Esimerkki kahdesta kohteesta kuvassa 1.
ER, Entity Relationship
tMyn
3
Toimipiste
Henkilokunta
Kuva 1. UML-kuvaus kahdesta entiteetistä.
ER, Entity Relationship
tMyn
4
• Kohteiden välillä on erilaisia yhteyksiä (relationship).
• Yhteys on mikä tahansa kahden tai useamman
kohteen välillä vallitseva riippuvuus tai muu
kiinnostava suhde.
• Yhteyksien kohdalla voidaan myös erottaa
yhteystyyppi, relationship type ja yhteysilmentymä,
relationship occurrence.
• Esimerkki yksinkertaisesta yhteydestä kuvassa 2.
ER, Entity Relationship
tMyn
5
työskentelee
Toimipiste
Henkilokunta
Kuva 2. Esimerkki yksinkertaisesta yhteydestä kahden entiteetin välillä.
ER, Entity Relationship
tMyn
6
• Yhteyteen voi myös liittyä roolinimi (role name).
• Roolinimellä selkeytetään yhteyteen kuuluvien
kohdeilmentymien tehtävää yhteydessä, kuva 3.
konttori
johtaja
johtaa
Toimipiste
Henkilokunta
työskentelee
konttori
projektihenkilö
Kuva 3. Roolit yhteydessä.
ER, Entity Relationship
tMyn
7
• Ominaisuus eli attribuutti on entiteetin tietty
ominaispiirre.
• Jos attribuuttina on eNimi, niin attribuutin arvona voi
olla silloin esim. Ville.
• Kullakin attribuutilla on tietty arvoalue (domain), josta
arvot tulee valita.
• Esim. attribuutin eNimi arvoalue voisi olla
VARCHAR(15), jolloin nimi voi koostua max. 15
merkkivakiosta.
• Yksinkertaista attribuuttia (simple attribute) ei voida
jakaa pienempiin osiin.
ER, Entity Relationship
tMyn
8
• Koosteattribuutti (composite attribute) voidaan jakaa
osiin, esim. osoite koostuu katuosoitteesta,
postinumerosta ja postitoimipaikasta.
• Yksiarvoinen attribuutti (single-valued attribute) voi
saada vain yhden arvon.
• Vastaavasti moniarvoinen attribuutti (multi-valued
attribute) voi saada useampia arvoja – näitä ei ole
mukana tässä opintojaksossa.
• Johdettu attribuutti (derived attribute) saa arvonsa
yhden tai useamman muun attribuutin arvoista. Esim.
ikä voidaan laskea syntymäajasta ja nykyisestä
päivämäärästä.
ER, Entity Relationship
tMyn
9
• Jokaisella kohteella on jokin erityinen attribuutti,
jonka perusteella se voidaan tunnistaa.
• Attribuuttia, jonka perusteella kohde yksilöidään,
kutsutaan perusavaimeksi (primary key).
• Kuvassa 4 kohteet ovat saaneet lisää yksityiskohtia.
ER, Entity Relationship
tMyn
10
Toimipiste
Henkilokunta
perusavain
henkiloNro {PK}
eNimi
sNimi
asema
palkka
/kokonaisHloLkm
työskentelee
koosteattribuutti
johdettu attribuutti
toimipisteNro {PK}
osoite
katuosoite
postinumero
postitoimipaikka
puhelinNro[1..3]
moniarvoinen attribuutti
Kuva 4. Kahden kohteen ominaisuudet.
ER, Entity Relationship
tMyn
11
• Kohteet voidaan jakaa vahvoihin ja heikkoihin (strong
entity type, weak entity type), kuva 5.
• Vahvan kohteen olemassaolo ei ole riippuvainen
jostakin toisesta kohteesta.
• Heikon kohteen olemassaolo riippuu toisesta
kohteesta.
ER, Entity Relationship
tMyn
12
Paremmuus
Asiakas
asiakasNro {PK}
eNimi
sNimi
puhelinNro
asettaa
tyyppi
maksimiV
heikko kohde
vahva kohde
Kuva 5. Vahva ja heikko kohde.
ER, Entity Relationship
tMyn
13
• Yhteyteen osallistuville kohteille voidaan asettaa
erilaisia rajoituksia.
• Yksi tällainen rajoite on osallistumisrajoite eli
kerrannaisuus (multiplicity), kuva 6.
• Kerrannaisuuden ilmaisuun käytetään lukuväliä, joka
kertoo, kuinka monta oliota yhteydessä voi olla.
• Lukuväli voi olla nollasta yhteen (0..1), nollasta
moneen (0..* tai pelkkä *), yhdestä moneen (1..*),
kaksi (2), viidestä yhteentoista (5..11) ja niin edelleen.
• Kerrannaisuutena voidaan myös antaa lukusarja,
kuten (1, 4, 6, 8..12).
ER, Entity Relationship
tMyn
14
• Jos kerrannaisuutta ei ole määritelty, se on
oletusarvoisesti yksi.
• Kerrannaisuus näytetään yhteyden päässä sen
kohteen lähellä, johon se pätee.
ER, Entity Relationship
tMyn
15
• Otetaan esimerkkeinä yhdestä yhteen –yhteys (1:1),
yhdestä moneen –yhteys (1:*) sekä monesta moneen
–yhteys (*:*) edellä luetellussa järjestyksessä:
– yksi toimipisteen henkilökunnasta johtaa toimipistettä (1:1)
– Kutakin vuokrattavaa kohdetta hallinnoi yksi henkilökuntaan
kuuluva. Yksittäinen henkilökuntaan kuuluva henkilö voi
hallinnoida useampaakin vuokrattavaa kohdetta. Jotkut eivät
hallinnoi yhtäkään kohdetta jollakin ajan hetkellä (0..1:*).
– Vuokrattavia kohteita mainostetaan lehdissä (*:*)
ER, Entity Relationship
tMyn
16
Kutakin toimipistettä
johtaa yksi
henkilökuntaan kuuluva
työntekijä
Henkilökuntaan kuuluva
työntekijä johtaa nollaa tai
yhtä toimipistettä
johtaa
Henkilokunta
Toimipiste
1
0..1
kerrannaisuus
Kuva 6. Esimerkki 1:1 -kerrannaisuuden käytöstä yhteydessä.
ER, Entity Relationship
tMyn
17
Kutakin vuokrattavaa
kohdetta hallinnoi
yksi henkilökuntaan
kuuluva työntekijä
Kukin henkilökuntaan kuuluva
työntekijä hallinnoi nollaa
tai useampaa vuokrakohdetta
Vuokrattavat
Henkilokunta
hallinnoi
henkiloNro
1
tilaNro
0..*
Kuva 7. Esimerkki 1:* -kerrannaisuuden käytöstä yhteydessä.
ER, Entity Relationship
tMyn
18
Kutakin vuokrattavaa
kohdetta mainostetaan
nollassa tai useammassa
sanomalehdessä
Kussakin sanomalehdessä
mainostetaan yhtä
tai useampaa vuokrakohdetta
Vuokrattavat
Sanomalehti
mainostaa
lehdenNimi
0..*
tilaNro
1..*
Kuva 8. Esimerkki *:* -kerrannaisuuden käytöstä yhteydessä.
ER, Entity Relationship
tMyn
19
• Kerrannaisuus koostuu kahdesta osasta:
kardinaalisuudesta (cardinality) ja osallistumisesta
(participation).
• Kardinaalisuus ilmaisee kuinka moneen yhteyteen
entiteetti voi samaan aikaan osallistua ja/tai kuinka
monta entiteettiä voi samaan aikaan osallistua
tiettyyn yhteyteen.
• Osallistuminen ilmaisee onko yhteyteen kuuluminen
kaikille pakollista (mandatory) vai osallistuuko siihen
vain osa (optional), kuva 9.
ER, Entity Relationship
tMyn
20
Kardinaalisuus
Kutakin toimipistettä
johtaa yksi
henkilökuntaan
kuuluva työntekijä
Henkilökuntaan kuuluva
työntekijä johtaa nollaa
tai yhtä toimipistettä
Toimipiste
Henkilokunta
johtaa
henkilöNro
1
toimipisteNro
0..1
Eivät kaikki työntekijät ole
toimipisteen johtajia (optional)
Kullakin toimipisteellä on oltava
johtaja (mandatory)
Osallistuminen
Kuva 9. Kardinaalisuus ja osallistuminen.
ER, Entity Relationship
tMyn
21
• Jos mallinnettavaa elävän elämän problematiikkaa ei
ymmärrä tarpeeksi syvällisesti, niin lopputulos voi
olla, että malli ei kuvaa tarkasti todellisuutta.
• ER-mallinnuksessa tulee tyypillisesti kahden
tyyppisiä mallinnusvirheitä: Fan Trap ja Chasm Trap.
• Fan Trap: Malli esittää, että yhteys on olemassa
kahden entiteettityypin välillä, mutta ei voida olla
varmoja yksittäisten ilmentymien yhteyksistä.
• Chasm Trap: Malli antaa ymmärtää, että yhteys on
olemassa kahden entiteettityypin välillä. Tämä ei
kuitenkaan ole totta joidenkin ilmentymien kohdalla.
ER, Entity Relationship
tMyn
22
Fan Trap
työskentelee
Henkilokunta
Henkilokunta
1..*
työskenteleeyhteys
hallinnoi
1
Mikkelin
amk
Mikkelin
amk
1
hallinnoiyhteys
1..*
Tulosalue
Tulosalue
t001
ht01
t002
Kuva 10. Työskenteleekö henkilö ht01 tulosalueella t001 vai t002?
ER, Entity Relationship
tMyn
23
hallinnoi
Mikkelin
amk
Mikkelin
amk
1
työskentelee
1..*
hallinnoiyhteys
Tulosalue
Tulosalue
t001
1
työskenteleeyhteys
1..*
Henkilokunta
Henkilokunta
ht01
t002
Kuva 11. Poistetaan ongelma muuttamalla malli vastaamaan paremmin todellisuutta.
ER, Entity Relationship
tMyn
24
Chasm Trap
työllistää
Toimipiste
Toimipiste
1
työllistääyhteys
hallinnoi
1..*
Henkilokunta
Henkilokunta
0..1
hallinnoiyhteys
0..*
Vuokrattavat
Vuokrattavat
t001
ha01
va01
t002
hm02
vm02
t003
hv04
vv07
Kuva 12. Mistä toimipisteestä kannattaisi kysyä tietoja kohteesta vm02?
ER, Entity Relationship
tMyn
25
• Kuvan 12 mallin ongelmana on se, että vuokrattava
kohde on jo tiedossa (tarjolla, ”tyrkyllä”) jossakin
toimipisteessä, mutta tilanne on niin uusi, että sitä ei
ole vielä allokoitu kenenkään myyntineuvottelijan
hallinnoitavaksi.
• Ratkaistaan ongelma lisäämällä yhteys ”antaa
informaatiota” entiteettityyppien Toimipiste ja
Vuokrattavat välille, kuva 13a ja 13b.
ER, Entity Relationship
tMyn
26
työllistää
Toimipiste
1
hallinnoi
1..*
Henkilokunta
1
0..1
0..*
Vuokrattavat
1..*
antaa informaatiota
Kuva 13a. Kaaviokuva muutoksesta, joka poistaa puuttuvan informaation aiheuttaneen ongelman.
ER, Entity Relationship
tMyn
27
Toimipiste
työllistääyhteys
Henkilokunta
hallinnoiyhteys
Vuokrattavat
t001
ha01
va01
t002
hm02
vm02
t003
hv04
vv07
tarjoaa informaatiota -yhteys
Kuva 13b. Semanttinen esitys muutoksesta,
joka poistaa puuttuvan informaation
aiheuttaneen ongelman.
ER, Entity Relationship
tMyn
28
• Periytyminen (inheritance) on kohteiden välinen
suhde, jossa johdettu luokka (subclass, derived
class) perii kantaluokan (superclass, base class)
rakenteen ja käyttäytymisen.
• Sitä nimitetään myös yleistys-/erikoistussuhteeksi
(generalization/specialization relationship), sillä
kantaluokka on johdetun luokan yleistys, ja toisinpäin,
johdettu luokka erikoistaa kantaluokkaa.
• Kantaluokka on entiteettityyppi, joka sisältää yhden
tai useamman aliryhmän jonka ilmentymät pitää
esittää datamallissa erikseen.
• Johdettu luokka on entiteettityypin aliryhmä, jonka
ilmentymät pitää esittää datamallissa erikseen.
ER, Entity Relationship
tMyn
29
• Johdettu luokka voi erikoistua lisäämällä uusia
attribuutteja.
• Periytyminen on yksiperiytymistä (single inheritance)
tai moniperiytymistä (multiple inheritance) sen
mukaan periikö johdettu luokka yhdestä vai
useammasta kantaluokasta.
• Yleistys kuvataan yhtenäisellä viivalla luokkien välillä,
jonka kantaluokan puoleisessa päässä on ontto
kolmio, kuva 14.
ER, Entity Relationship
tMyn
30
Hevosajoneuvo
Kiesit
Puhelin
DTV
Vankkurit
Kannykka
Kuva 14. Yksiperiytyminen ja moniperiytyminen.
ER, Entity Relationship
tMyn
31
• Esimerkkinä Henkilokunta –entiteettityypin
(kantaluokka) sisällä voi olla ryhmiteltynä johdetut
luokat Johtaja, Myyntihenkilo, Assistentti.
• Johdettu luokka perii kantaluokan attribuutit.
• Kantaluokan ja siitä johdetun luokan välinen yhteys
on 1:1, ja sitä kutsutaan kantaluokka/johdettu luokka
–yhteydeksi.
ER, Entity Relationship
tMyn
32
• Yleistys/erikoistus –suhdetta käytetään, jotta ei
tarvitsisi yrittää sisällyttää yhteen relaatioon hyvin
erilaisia ilmentymiä.
• Jos tällaista erilaisuutta kuitenkin halutaan toteuttaa,
niin se merkitsee sitä, että relaatioon tulee paljon
tyhjää, kuva 15.
ER, Entity Relationship
tMyn
33
Johtajille
tarpeellisia
attribuutteja
Koko henkilökunnalle
oleellisia attribuutteja
hloNro
nimi
asema
palkka
jNimPvm
bonus
ha01
Laakso
johtaja
51600
10.11.1989
3400
hv03
Telkkä
assistentti
27800
hm07
Aarnio
myyntjoht
49200
06.05.1992
2900
hl01
Kiiski
assistentti
29300
hi05
Palonen
myyntNe
39700
ha04
Rahkola
sihteeri
25900
Erityisesti käytännön
myyntityötä tekeville
oleellista tietoa
myyntAlu autoEtu
ma2b
Ainakin
sihteerin on
osattava
kieliä!!
kieliT
3900
e,ru,ra
Kuva 15. Jos yrittää mahduttaa kaiken yhteen tauluun, niin käy näin…
ER, Entity Relationship
tMyn
34
• Kantaluokka ja johdettu luokka muodostavat
tyyppihierarkian, puhutaan ”is-a”-hierarkiasta.
• Esim. johtaja on henkilökunnan jäsen.
• Kuvan 15 relaatiossa voidaan ajatella olevan
kantaluokka Henkilokunta ja johdetut luokat Johtaja,
Myyntihenkilo ja Assistentti.
• UML-kaavio yleistys/erikoistussuhteesta kuvassa 16.
ER, Entity Relationship
tMyn
35
Toimipiste
toimipisteNro {PK}
katuosoite
postinumero
postitoimipaikka
Henkilokunta
työllistää
1..*
1
henkiloNro {PK}
eNimi
sNimi
asema
palkka
1
{Optional, And}
johtaa
1
Johtaja
Myyntihenkilo
Assistentti
jNimPvm
bonus
myyntAlu
autoEtu
kieliT
Kuva 16. Henkilokunta-relaation jakaminen kanta- ja johdettuihin luokkiin.
ER, Entity Relationship
tMyn
36
• Yleistys-/erikoistussuhteeseen liittyy kahden tyyppisiä
rajoituksia (constraint), osallistumisrajoitukset
(participation constraint) ja erillisyysrajoitukset
(disjoint constraint).
• Osallistumisrajoitus: Määrittelee tuleeko jokaisen
kantaluokan ilmentymän olla myös johdetun luokan
ilmentymä.
• Osallistumisrajoituksen vaihtoehdot ovat pakollinen
(mandatory) tai vapaaehtoinen (optional).
ER, Entity Relationship
tMyn
37
• Esimerkki kuvasta 16: osallistumisrajoitteeksi on
merkitty optional.
• SIIS: Kun lisätään tauluun Henkilokunta yksi
monikko, niin ei ole pakko lisätä riviä johonkin
tauluista Johtaja, Myyntihenkilo tai Assistentti.
Ehkäpä uusi henkilökunnan jäsen onkin ohjelmoija!
ER, Entity Relationship
tMyn
38
• Erillisyysrajoitus: Määrittelee voiko kantaluokan
ilmentymä olla yhden vaiko useamman johdetun
luokan ilmentymä.
• Jos määritellään johdetulle luokalle erillisyysrajoitus
disjoint, tarkoittaa se sitä, että kantaluokan ilmentymä
voi esiintyä vain yhden johdetun luokan ilmentymänä.
ER, Entity Relationship
tMyn
39
• Tällaisessa tapauksessa rajoite merkitään
kirjoittamalla ”Or” aaltosulkeisiin.
• Jos määritellään johdetulle luokalle erillisyysrajoitus
nondisjoint, tarkoittaa se sitä, että kantaluokan
ilmentymä voi esiintyä useamman kuin yhden
johdetun luokan ilmentymänä.
• Tällaisessa tapauksessa rajoite merkitään
kirjoittamalla ”And” aaltosulkeisiin.
ER, Entity Relationship
tMyn
40
Toimipiste
toimipisteNro {PK}
katuosoite
postinumero
postitoimipaikka
Henkilokunta
työllistää
1..*
1
henkiloNro {PK}
eNimi
sNimi
asema
palkka
1
{Optional, And}
johtaa
{Mandatory, Or}
1
Johtaja
Myyntihenk
Assistentti
Vakituinen
Maaraaik
jNimPvm
bonus
myyntiAlu
autoEtu
kieliT
kkPalkka
lomakertyma
tuntipalkka
Kuva 17. Henkilokunta-relaation jakaminen kanta- ja johdettuihin luokkiin.
ER, Entity Relationship
tMyn
41
• Kuvassa 17 on merkitty yliluokan Henkilokunta ja
johdettujen luokkien Maaraaik ja Vakituinen välille
osallistumisrajoitus Mandatory, joka tarkoittaa, että
jokaisella työntekijällä pitää olla voimassa sopimus
työnantajan kanssa siitä, millä perusteella hänelle
maksetaan palkkaa. Käytännössä esim. vakituisessa
työsuhteessa maksetaan kuukausipalkkaa,
määräaikaisessa työsuhteessa maksetaan tehtyjen
tuntien perusteella.
• Vastaavassa kohdassa on merkitty erillisyysrajoitus
Or, mikä tarkoittaa, että henkilö on palkattu töihin joko
vakituiseksi tai määräaikaiseksi, mutta ei sekä että!
ER, Entity Relationship
tMyn
42
• Vastaavasti kuvassa 17 on kantaluokan Henkilokunta
ja johdettujen luokkien Johtaja, Myyntihenk ja
Assistentti välille merkitty osallistumisrajoitus
Optional, joka käytännössä mm. tarkoittaa, että
jokaisella työntekijällä ei tarvitse olla työssään
roolinimikkeenä joko johtaja, myyntihenkilö tai
assistentti. Vastaavassa kohdassa on merkitty
erillisyysrajoitus And, mikä tarkoittaa, että henkilö voi
kylläkin olla samanaikaisesti esim. sekä johtaja että
myyntihenkilö (esimerkkinä myyntijohtaja).
ER, Entity Relationship
tMyn
43
• Yhteys on assosiaatio kahden samalla tasolla olevan
entiteettityypin välillä.
• Assosiaation erikoismuoto on koostesuhde
(aggregation).
• Tässä mallinnetaan kokonaisuus/osa –suhdetta.
• Koostesuhde piirretään viivana, jonka
kokonaispuolella on ontto vinoneliö.
• Voidaan myös puhua ”has-a” –suhteesta tai ”is-partof” -suhteesta.
• Koostesuhde (aggregation) ei mitenkään liitä
kokonaisuuden ja osan elinkaaria yhteen.
• Esimerkki koostesuhteesta kuvassa 18.
ER, Entity Relationship
tMyn
44
Tämä luokka
edustaa
”kokonaisuutta”.
Mikkelin
Purjehtijat
1
Tämä luokka
edustaa
toisen osaa
*
Purjevene
Kuva 18. Koosteyhteys (aggregation).
ER, Entity Relationship
tMyn
45
• Siinä tapauksessa, että koostesuhteeseen halutaan
voimakas omistussuhde ja elinkaarien yhteneväisyys,
puhutaan vahvasta koosteesta (composite
aggregation, composition).
• Entiteetti voi olla osana vain yhdessä vahvassa
koosteessa kerrallaan.
• Kokonaisuutta edustavan osuuden on hallittava
osiensa elinkaaret.
• Vahva koostesuhde piirretään viivana, jonka
kokonaispuolella on täytetty vinoneliö.
• Esimerkki vahvasta koostesuhteesta kuvassa 19.
ER, Entity Relationship
tMyn
46
Tämä luokka
edustaa
”kokonaisuutta”.
WindowsIkkuna
1
Tämä luokka
edustaa toisen osaa – ja
voi olla vain yhden
kokonaisuuden osana.
*
Kehys
Kuva 19. Vahva koosteyhteys (composite aggregation, composition).
ER, Entity Relationship
tMyn
47
• Esimerkki koosteyhteydestä vuokraustoimintaa
harjoittavasta yrityksestä voisi olla entiteettityyppien
Henkilokunta ja Toimipiste välillä sekä
entiteettityyppien Toimipiste ja Vuokrattavat välillä,
kuva 20.
ER, Entity Relationship
tMyn
48
Henkilokunta
työllistää
Toimipiste
toimipisteNro
henkiloNro
hallinnoi
Vuokrattavat
tarjoaa informaatiota
kohdeNro
Kuva 20. Koosteyhteys vuokraustoimintaa harjoittavan yrityksen muutaman
entiteettityypin välillä.
ER, Entity Relationship
tMyn
49