kravspec forts. E

Webprogrammering och
databaser
Begrepps-modellering
!
!
Konceptuell datamodellering med
Entitets-Relationsmodellen
Databaser - Design och programmering
!
LiU
Eva L. Ragnemalm
entiteter (saker) som har
–
samband med varandra
–
Varje entitet har ett antal attribut och
–
varje attribut har ett visst värde.
Databaser - Design och programmering
!
!
LiU
Eva L. Ragnemalm
!
Datakrav: För att representera studenter behöver vi
lagra namn (förnamn och efternamn skiljs så att
man enkelt kan sortera på efternamn),
personnummer för att få ett unikt id, kontonamn
och lösenord.
LiU
Eva L. Ragnemalm
Exempel: kravspec forts:
Kurser har kurskoder, namn, ges en viss period och
ägs (ansvaras för) av en viss institution. De ger ett
visst antal poäng och hålls av någon som är
anställd på högskolan. Olika år kan en viss kurs ges
olika läs-perioder och av olika personer.
Institutionen som ansvarar för kurserna är inte
nödvändigtvis samma institution som läraren är
anställd på.
Databaser - Design och programmering
Antag att universitetet behöver ett databassystem
för att hålla rätt på studenter som går kurser, vem
som ger vilka kurser och var de personerna är
anställda (vilken institution).
Databaser - Design och programmering
Exempel: kravspec forts.
!
LiU
Eva L. Ragnemalm
Exempel: universitetsstudier
Kravspec
Enligt ER-modellen består en domän av
–
Konceptuell modell är oberoende av DBMS
(dvs. ingen hänsyn till implementationsdetaljer)
Databaser - Design och programmering
ER-modellen
!
Mål: skapa en högnivå-specifikation av
informationsinnehållet i databasen
LiU
Eva L. Ragnemalm
!
!
Funktionskrav: Man ska kunna söka ut vilka
studenter som går en viss kurs och vilket betyg de
fått på kursen. Även vem som undervisar på vilken
kurs är viktigt och var de är anställda.
Vi vill kunna hitta telefonnummer och information
om var anställda har sina tjänsterum.
Databaser - Design och programmering
LiU
Eva L. Ragnemalm
Exempel: kravspec forts:
!
ER-modellen
Vi vill också kunna skicka epost till studenter och
hjälpa dem hålla rätt på sina lösenord. Vi vill också
lagra information om vilka betyg studenter får på
de kurser de går.
!
Mycket information!
!
Hur strukturera detta?
!
!
LiU
Databaser - Design och programmering
Eva L. Ragnemalm
Studera ‘den värld som skall modelleras’ och
identifiera de:
–
Entitetstyper
–
Sambandstyper
–
Attribut
som behövs för problemlösningen.
Databaser - Design och programmering
Entitetstyp
!
!
Sambandstyp
En typ av företeelse som behöver
representeras.
!
En individ av den typen är en entitetsinstans
!
Entitetsinstans
Anna Axelsson
Globen
Databaser - design och prog.
Nokia AB
E=MC2
Entitetstyp
Person
Byggnad/hus
Kurs
Företag
Idé
Databaser - Design och programmering
Representerar ett förhållande mellan två eller
flera entitetstyper.
Om entitetsinstanserna kan höra ihop finns
det en sambandsinstans mellan dem.
Sambandstypen är mängden av sådana
sambandsinstanser.
–
LiU
Eva L. Ragnemalm
Ex: studenter som går kurser:
Går-kurs är en sambandstyp
Databaser - Design och programmering
Exempel: universitetsstudier
Hur hitta entitetstyper och sambandstyper?
!
Tips:
–
Sunt förnuft!
–
Entitetstyper är ofta substantiv!
–
Meningar där entitetstyperna kombineras
beskriver ofta sambandstyper.
LiU
Eva L. Ragnemalm
ER-modell, notation
!
Databaser - Design och programmering
LiU
Eva L. Ragnemalm
!
ER-modeller beskrivs oftast i diagramform.
Går
LiU
Eva L. Ragnemalm
Databaser - Design och programmering
LiU
Eva L. Ragnemalm
Attribut
!
!
Attribut: exempel
De egenskaper hos entitetstyper som vi är
intresserade av representeras som en
entitetstyps attribut.
!
Läraren Anna Axelsson kan t.ex. beskrivas
som följande entitet:
Varje attribut har en domän (värdemängd)
som anger de tillåtna värdena för attributen.
Databaser - Design och programmering
LiU
Eva L. Ragnemalm
I en ER-modell brukar man identifiera tre
slags värden:
enkla (ex. anställningsnummer)
–
sammansatta (ex. Adress)
–
multipla (ex. kurser)
–
null
!
Databaser - Design och programmering
LiU
Eva L. Ragnemalm
!
–
–
!
!
För binära sambandstyper (siffran skrivs vid
respektive entitetstyp i diagrammet):
–
!
en-till-en (1:1)
en-till-många (1:N)
!
många-till-en (N:1)
många-till-många (M:N)
Studentvägen 8, 1tr
Telefon
011-121212
Kurser
729G68, 732G16
LiU
Eva L. Ragnemalm
Identifiering av nyckelattribut ingår i ERmodellering och databasdesign.
–
Ett attribut med unika värden för varje instans
av en entitetstyp kallas nyckelattribut
–
Om inget attribut ensamt är unikt för varje
instans? Flera tillsammans (gör sammansatt).
–
markeras i ER-diagrammet med understrykning
av attributnamnet
Nyckelattribut i exemplet?
LiU
Eva L. Ragnemalm
specificerar om en entitetsinstans måste ha ett
samband via sambandsinstansen.
Om alla entiteter av en viss typ måste delta i ett
samband av den typen kallas det totalt/fullständigt
deltagande.
Om alla entitetsinstanser inte måste delta i någon
sambandsinstans är det partiellt deltagande.
–
Kardinalitet för flervägssamband uttrycks i ord
Databaser - Design och programmering
234
Adress
Sambandstyper: deltagande
Specificerar antalet sambandsinstanser av en
viss typ som en entitetsinstans kan ingå i.
–
Anställningsnr
Databaser - Design och programmering
Sambandstyper: kardinalitet
!
Anna Axelsson
Nyckelattribut
!
–
Attributvärde
Namn
Databaser - Design och programmering
Värden
!
Attribut
LiU
Eva L. Ragnemalm
Totalt deltagande ritas i diagrammet som
dubbelstreck mellan entitetstyp och sambandstyp.
Databaser - Design och programmering
LiU
Eva L. Ragnemalm
Exempel: universitetsstudier
entitetstyp utan id
Universitetsexemplet
e-namn
pnr
betyg
e-post
lösen
konto
student
läsperiod
namn
f-namn
namn
reg.
på
år
kurskod
n
poäng
kurs
!
n
n
m
ansv.
av
hålls
av
e-namn
1
1
f-namn
institution
namn
namn
anställd
tel.nr.
tjänsterum
adress
jobbar
på
1
Antag att rektor utlyser pengar för pedagogiska
projekt, som institutionerna kan arrangera. Man vill
kunna söka efter alla olika projekten, kolla deras
tidsplaner och budgetar. Projekten identifieras med
namn. För varje institution finns en kontroll att
namnen är unika, men institutionerna pratar inte
med varandra.
n
anst.nr
Databaser - Design och programmering
LiU
Eva L. Ragnemalm
LiU
Databaser - Design och programmering
Eva L. Ragnemalm
ER-diagram, exemplet
Svag entitetstyp
!
!
!
e-namn
Är en entitetstyp vars instanser inte kan identifieras
utan att blanda in en instans av en annan
entitetstyp.
Den identifierande entitetstypen kallas ägande
entitetstyp och sambandet som används vid
identifikation kallas ägande samband och en svag
entitetstyp måste ha totalt deltagande i det ägande
sambandet.
pnr
LiU
Eva L. Ragnemalm
student
e-namn
!
!
Vilka kurser ges av en viss institution?
!
Vilka lärare har kurser för en viss student?
!
Vilka lärare har kurser för en viss institution?
Databaser - Design och programmering
anställd
tjänsterum
adress
jobbar
på
driver
n
n
anst.nr
projekt
namn
Databaser - Design och programmering
budget
tidsplan
LiU
Eva L. Ragnemalm
Designbeslut
att tänka på vid design av begreppsmodell:
Undvik redundans. ex:
!
attribut som finns på flera entitetstyper
!
sambandstyper som går att härleda
Enkelt är vackert. Undvik onödiga entitetstyper.
!
LiU
1
institution
namn
tel.nr.
–
Eva L. Ragnemalm
n
n
1
Vem håller en viss kurs, var är den anställd?
Vilken institution ger en viss kurs?
poäng
kurs
1
f-namn
1
–
!
n
m
namn
!
Vilka studenter är registrerade på en viss
kurs och vilka betyg har de fått?
reg.
på
ansv.
av
Verifiera ER-modellen mot tänkta
frågor
!
år
kurskod
hålls
av
Identifierande attribut i den svaga entiteten kallas
partiell nyckel.
Databaser - Design och programmering
betyg
e-post
lösen
konto
läsperiod
namn
f-namn
namn
entitetstyper med 1:1-samband kan vara varianter av
samma entitetstyp.
!
entitetstyper som bara förbinder andra entitetstyper.
!
å andra sidan: inga “lösa” entitetstyper
Databaser - Design och programmering
LiU
Eva L. Ragnemalm
Summering:
designprocessen hittills
Fler designbeslut
!
Avvägningar:
!
Skapa kravspecifikation
–
attribut eller samband med annan entitetstyp?
!
Skilj ut datadesign från funktionsdesign
–
flera enkla attribut eller ett sammansatt?
!
Skapa ER-modell:
–
flervägssamband eller en entitetstyp i mitten?
Databaser - Design och programmering
LiU
Eva L. Ragnemalm
redundans
–
enkelhet
–
kontrollera mot transaktioner
!
!
!
Databaser - Design och programmering
LiU
Eva L. Ragnemalm
!
attribut till entitetstyper
–
nycklar
LiU
Eva L. Ragnemalm
Företaget består av ett antal avdelningar. Varje
avdelning har ett namn, ett nummer, en chef och ett
antal anställda. Startdatum för varje avdelningschef
registreras. En avdelning kan ha flera lokaler.
Varje avdelning finansierar ett antal projekt. Varje
projekt har ett namn, ett nummer och en lokal.
För varje anställd lagras följande information:
namn, personnummer, adress, lön och kön.
LiU
Eva L. Ragnemalm
Frågor till exempel 2
En anställd jobbar för endast en avdelning men kan
jobba med flera projekt som kan tillhöra olika
avdelningar. Information om antalet timmar (per
vecka) som en anställd jobbar med ett projekt
sparas. Information gällande den anställdes chef
sparas också.
För varje anställd lagras information om familjen av
försäkringsskäl. För varje familje­medlem lagras
förnamn, födelsedatum, kön samt relation till den
anställde.
Databaser - Design och programmering
sambandstyper, kardinalitet och deltagande
–
Databaser - Design och programmering
Ett exempel till, forts
!
–
Ett exempel till
Granska modellen
–
entitetstyper (t.ex via substantiv)
Databaser - Design och programmering
Summering forts:
designprocessen hittills
!
–
LiU
Eva L. Ragnemalm
!
!
!
Herr Ohlsson är sjuk idag, sök ut alla projekt där
han jobbar så att man kan sätta upp anslag i lokalen
om att han är sjuk.
De anställda som har barn under 12 år ska få ett
erbjudande om barnförsäkring (lista anställda med
barn under 12)
Projekt X behöver att man lägger mer tid. De chefer
som har folk som jobbar på projekt X ska
sammankallas för förhandlingar.
Databaser - Design och programmering
LiU
Eva L. Ragnemalm