DATABASER TEORI
Indhold Introduktion··········································································· 1 E-R diagram············································································ 1 Entitet ············································································ 1 Relation········································································· 1 Kardinalitet ································································· 1 Eksempel ············································································ 2 Datastrukturdiagram ························································· 2 Tabel ··············································································· 2 Relation········································································· 2 Regler for omdannelse af E-R til tabeller············ 2 Eksempel ············································································ 2 Udfylde datanavne i tabellerne································ 3 Normalisering af tabellerne············································· 3 Eksempel ············································································ 3 1. normalform······························································ 3 2. normalform ····························································· 5
Notat af
3. normalform ····························································· 6
Arne Madsen
Samlet resultat for eksempel ·········································· 6
Viborg handelsskole
IT-A
Databaser
Introduktion En database er en samling af relaterede tabeller. Kaldes også en relationsdatabase. Ved at lave en hensigtsmæssige opdeling at dataene i forskellige relaterede tabeller kan redundans undgås (minimeres) og opdateringer i fremtiden sikres og lettes. Når man skal lave en database skal følgende fremgangsmåde følges: 1.
Lav E-R diagram.
2.
Omdan E-R diagram til datastrukturdiagram. a. Omdan E-R diagram til tabeller. b. Find og indskriv datanavne i de enkelte tabeller. c. Normalisér databasen ved at bruge normalformerne på tabellerne (fra datastrukturdiagrammet) og tilpasse datastrukturdiagrammet.
E-R diagram Et E-R diagram viser sammenhængen mellem de ting, som vi ønsker at registrere data om. Eksempelvis idrætsgrene og medlemmer, medarbejdere og projekter, kunder og ordrer. Entitet
Objekt, som vi ønsker at registrere data om.
Eksempler: Sælger, kunde, ordre. Medarbejder, projekt, kunde. Tegnes som et rektangel. Relation
En forbindelse mellem entiteter.
Eksempler: relationen "tilmeldt" forbinder entiteten "idrætsgren" med entiteten "medlem" – et medlem er tilmeldt en idrætsgren. Tegnes som en rombe. Kardinalitet
Angiver relationstypen. 1:1
Én til én: et objekt i den ene entitet er forbundet med ét objekt i den anden entitet – og omvendt. En mand er gift med én kvinde og en kvinde er gift med én mand.
1:m Én til mange: et objekt i den ene entitet er forbundet med flere objekter i den anden entitet. Men et objekt i den anden entitet er kun forbundet med ét objekt i den første entitet. En ordre er tilknyttet én kunde og en kunde kan have flere ordrer. m:m Mange til mange: et objekt i den ene entitet er forbundet med mange objekter i den anden entitet og et objekt i den anden entitet er forbundet med mange objekter i den første entitet. Et medlem kan være tilmeldt mange idrætsgrene og en idrætsgren har mange medlemmer.
Arne Madsen
1
IT-A
Databaser
Eksempel På et bilværksted ønsker man at registrere de enkelte mekanikeres timeforbrug på de enkelte biler. En bil kan altså have flere mekanikere og den enkelte mekaniker kan arbejde på flere biler. BIL
HAR
m
m
MEKANIKER
Datastrukturdiagram Da databaser består af relaterede tabeller, skal E-R diagrammet omdannes til et datastrukturdiagram, som viser tabeller og indbyrdes relationer. Tabel Tegnes som et rektangel med tabellens navn øverst til højre. Tabellens datanavne skrives under tabelnavnet. Relation Tegnes som en linie mellem de felter, der er fælles for tabellerne (mellem nøgler). Gaflen symboliserer en 1:m kardinalitet.
Regler for omdannelse af E-R til tabeller Regel 1 – 1:m
Entiteter med 1:m kardinalitet mellem sig omdannes til 2 tabeller med gaflen placeret hvor der før var et ”m”.
Regel 2 – m:m
Entiteter med m:m kardinalitet mellem sig omdannes til 3 tabeller, svarende til de 2 entiteter og relationen. Gaflerne placeres ved tabellen svarende til relationen.
Eksempel BIL
Bil
Arne Madsen
HAR
m
Har
m
MEKANIKER
Mekaniker
2
IT-A
Databaser
Udfylde datanavne i tabellerne Her tages ovenstående diagram og udfyldes med de datanavne, hver tabel skal indeholde. Derefter vælges en nøgle til hver tabel. Nøglen kan være et enkelt datanavn eller flere datanavne som tilsammen kan fungere som nøgle.
Nøgle: et (eller flere) felt som entydigt identificerer en post i en tabel.
BIL
HAR
MEKANIKER
Stelnr.
Stelnr.
Mek.nr.
Fabrikat
Mek.nr.
Navn
Model
Adresse
Kundenr.
Postnr.
Timer
By
Normalisering af tabellerne 1. normalform
- Tabellen skal have en nøgle - Alle poster i tabellen har samme længde (antal felter)
2. normalform
- Tabellen er på 1. normalform - Tabellens nøglefelt skal bestemme værdien i de andre felter; uden hjælp fra andre felter.
3. normalform
- Tabellen er på 2. normalform - Tabellens nøglefelt skal være eneste determinantfelt; der må ikke være andre felter, som også kan være determinantfelt.
Eksempel 1. normalform BIL Stelnr.
Fabrikat
Model
Kundenr.
Timer
Timer2
123456789
Volvo
C70
000001
2
2
987654321
Porsche
911
000002
8
147258369
Audi
A6
000003
2
963852741
Porsche
Cayenne
000002
3
Arne Madsen
Timer3
Timer4
1
4
6
3
1
3
IT-A
Databaser
MEKANIKER
HAR Stelnr.
Mek.nr.
Mek.nr.
Navn
Adresse
Postnr.
By
123456789
01
01
Ib
Her 1
8800
Viborg
987654321
02
02
Ole
Der 2
8800
Viborg
147258369
01
03
Kim
Hvor 3
8900
Randers
963852741
03
Problemer: posterne har ikke samme lÌngde i bil-tabellen. En løsning ses nedenfor.
BIL Stelnr.
Fabrikat
Model
Kundenr.
Timer
123456789
Volvo
C70
000001
2
123456789
Volvo
C70
000001
2
987654321
Porsche
911
000002
8
987654321
Porsche
911
000002
1
987654321
Porsche
911
000002
4
987654321
Porsche
911
000002
6
147258369
Audi
A6
000003
2
147258369
Audi
A6
000003
3
147258369
Audi
A6
000003
1
963852741
Porsche
Cayenne
000002
3
Opfylder nu 1. normalform.
Arne Madsen
4
IT-A
Databaser
2. normalform Denne normalform bruges særligt for at undgå redundans og inkonsistens. Redundans:
De samme data gentages i databasen.
Inkonsistens: Data som burde være ens optræder forskelligt i databasen. En mulig følge af redundans. Problemer fra 1. normalform:
Redundans i biltabellen. ”Timer” kan ikke bestemmes alene af nøglefeltet.
En løsning ses nedenfor: BIL Stelnr.
Fabrikat
Model
Kundenr.
123456789
Volvo
C70
000001
987654321
Porsche
911
000002
147258369
Audi
A6
000003
963852741
Porsche
Cayenne
000002
HAR Fakturanr.
Stelnr.
Mek.nr.
Timer
0000001
123456789
01
2
0000002
123456789
01
2
0000003
987654321
02
8
0000004
987654321
02
1
0000005
987654321
02
4
0000006
987654321
02
6
0000007
147258369
01
2
0000008
147258369
01
3
0000009
147258369
01
1
0000010
963852741
03
3
Tabellerne er nu på 2. normalform!
Arne Madsen
5
IT-A
Databaser
3. normalform Bruges for at fjerne redundans. Problemer fra 2. normalform:
Redundans med by. "By" er bestemt af nøglefelt, men "postnr." kan også bestemme by.
PostBy
MEKANIKER Mek.nr.
Navn
Adresse
Postnr.
Postnr.
By
01
Ib
Her 1
8800
8800
Viborg
02
Ole
Der 2
8800
8900
Randers
03
Kim
Hvor 3
8900
Tabellerne er nu på 3. normalform.
Samlet resultat for eksempel BIL
HAR
MEKANIKER
Stelnr.
Fakturanr.
Mek.nr.
Fabrikat
Stelnr.
Navn
Model
Mek.nr.
Adresse
Kundenr.
Timer
Postnr.
PostBy Postnr. By
Når I skal normalisere, behøver I ikke at vise dataeksempler. Det er tilstrækkeligt at anføre tabeller med datanavne samt forklare problemer og løsninger for hver normalform.
Arne Madsen
6