90 likes | 271 Views
Datamodellering. Hvad skal kunne trækkes UD af databasen? Hvad skal der IND i databasen for at det kan lade sig gøre? Hvordan skal data fordeles i felter og tabeller, og hvilke relationer skal oprettes? Hvilke datatyper og egenskaber skal de enkelte felter have?
E N D
Datamodellering. • Hvad skal kunne trækkes UD af databasen? • Hvad skal der IND i databasen for at det kan lade sig gøre? • Hvordan skal data fordeles i felter og tabeller, og hvilke relationer skal oprettes? • Hvilke datatyper og egenskaber skal de enkelte felter have? • Hvilke Formularer og Rapporter skal oprettes? • Hvilket Flow skal databasen have i brugerfladen? (Dette kaldes ”Normalisering)
Normalisering Normalisering er en række værktøjer/regler som sikrer korrekt fordeling af data i databasen. Der findes flere normalformer, men de første 3 dækker almindeligvis normaliserings-behovet for relationsdatabaser. 1. Normalform: En tabel på 1. normalform har • En primær nøgle. • Ingen repeterende grupper. • Ingen gentagne felter. 1. Normalform: 3. Normalform: 2. Normalform: ”Hvad nu hvis?”: • Atomiserede (Ikke nedbrydelige data). I en tabel på 3. normalform er I en tabel på 2. normalform er Slut altid af med at kigge tabellerne igennem og tænk nogle ”hvad nu hvis?” tanker En tabel på 1. normalform har 2. Normalform: • En primær nøgle. • Alle ikke-nøgle felter afhængig af hele primærnøglen. • Alle felter, som ikke er nøgle felter, uafhængige af hinanden. I en tabel på 2. normalform er • Ingen repeterende grupper. • Alle ikke-nøgle felter afhængig af hele primærnøglen. • Ingen gentagne felter. • Atomiserede (Ikke nedbrydelige data). 3. Normalform: I en tabel på 3. normalform er • Alle felter, som ikke er nøgle felter, uafhængige af hinanden. ”Hvad nu hvis?”
Her er en tabel som skal normaliseres N_ID Navn Adresse Postnr By Type I ”kort form” ser en tabel således ud: N_ID N_ID N_ID Navn Navn Navn Adresse Adresse Adresse Postnr Postnr Postnr By By By Type Type Type Tlf 1 Tlf 1 Tlf Tlf 2 Tlf 2 Tlf 3 Tlf 3 1 Peter Hansen Hornuglehøj 14 2840 Holte Avler 1 1 1 Peter Hansen Peter Hansen Peter Hansen Hornuglehøj 14 Hornuglehøj 14 Hornuglehøj 14 2840 2840 2840 Holte Holte Holte Avler Avler Avler 33114545 33114545 33114545 2 Anna Vang Musvitvej 1 4000 Roskilde Avler 2 Anna Vang Musvitvej 1 4000 Roskilde Avler 2 2 2 Anna Vang Anna Vang Anna Vang Anna Vang Musvitvej 1 Musvitvej 1 Musvitvej 1 Musvitvej 1 4000 4000 4000 4000 Roskilde Roskilde Roskilde Roskilde Avler Avler Avler Avler 42551133 42551133 42551133 56897410 56897410 2 Lappedykkeralle 8 3 Abdul Olsen 4600 Køge Ornitolog 3 3 3 3 3 3 Abdul Olsen Abdul Olsen Abdul Olsen Abdul Olsen Abdul Olsen Abdul Olsen Abdul Olsen Lappedykkeralle 8 Lappedykkeralle 8 Lappedykkeralle 8 Lappedykkeralle 8 Lappedykkeralle 8 Lappedykkeralle 8 Lappedykkeralle 8 4600 4600 4600 4600 4600 4600 4600 Køge Køge Køge Køge Køge Køge Køge Ornitolog Ornitolog Ornitolog Ornitolog Ornitolog Ornitolog Ornitolog 52458541 52458541 52458541 60459632 60459632 20118578 20118578 3 4 Ib Sørensen Spættevang 33 2840 Holte Ornitolog 4 4 4 4 Ib Sørensen Ib Sørensen Ib Sørensen Ib Sørensen Ib Sørensen Spættevang 33 Spættevang 33 Spættevang 33 Spættevang 33 Spættevang 33 2840 2840 2840 2840 2840 Holte Holte Holte Holte Holte Ornitolog Ornitolog Ornitolog Ornitolog Ornitolog 50854575 50854575 50854575 33254178 33254178 4 56897410 2 Fornavn Efternavn 60459632 3 Peter Hansen N_ID 33254178 4 Adressetabel Anna Vang 1. Normalform: 1. Normalform: 1 20118578 3 Navn Abdul Olsen En tabel på 1. normalform har En tabel på 1. normalform har 1. Normalform: 1. Normalform: 2 Adresse • En primær nøgle. • En primær nøgle. Ib Sørensen En tabel på 1. normalform har En tabel på 1. normalform har Postnr 3 • Ingen repeterende grupper/felter.(Alle poster har samme længde) • Ingen repeterende grupper/felter.(Alle poster har samme længde) • Ingen repeterende grupper. • En primær nøgle. • En primær nøgle. By 4 • Ingen gentagne felter. • Ingen repeterende grupper/felter.(Alle poster har samme længde) • Ingen repeterende grupper/felter.(Alle poster har samme længde) Type • Atomiserede (Ikke nedbrydelige data). • Atomiserede (Ikke nedbrydelige data). Tlf 1 • Atomiserede (Ikke nedbrydelige data). • Atomiserede (Ikke nedbrydelige data). Tlf 2 (Atomistisk = Entydige, Enkeltstående, Uens) Tlf 3
Her er en tabel som skal normaliseres N_ID Fornavn Efternavn Adresse Postnr By Type I ”kort form” ser tabellerne nu således ud: Adressetabel 1 Peter Hansen Hornuglehøj 14 2840 Holte Avler N_ID 2 Anna Vang Musvitvej 1 4000 Roskilde Avler Fornavn 3 Abdul Olsen Lappedykkeralle 8 4600 Køge Ornitolog Efternavn Telefontabel 4 Ib Sørensen Spættevang 33 2840 Holte Ornitolog Adresse N_ID Postnr Tlf By E_ID N_ID N_ID E-mail Tlf Type 1 1 ph@av.dk 1 33114545 2 2 av@av.dk 2 42551133 2. Normalform: 3 3 ao@or.dk 3 52458541 4 I en tabel på 2. normalform er 4 is@or.dk 4 50854575 • Alle ikke-nøgle felter afhængigaf hele primærnøglen. 5 2 aa@pri.dk 2 56897410 6 3 ab@g.dk 3 60459632 Primært relevant når nøglen består af flere Felter. 7 4 ib@liv.dk 4 33254178 8 3 3 ao@td.dk 20118578
Her er en tabel som skal normaliseres N_ID Fornavn Efternavn Adresse Postnr Postnr P_ID P_ID By By Type I ”kort form” ser tabellerne nu således ud: Adressetabel 1 Peter Hansen Hornuglehøj 14 2840 2840 1 1 Holte Holte Avler N_ID 2 Anna Vang Musvitvej 1 4000 4000 2 2 Roskilde Roskilde Avler Fornavn 3 Abdul Olsen Lappedykkeralle 8 4600 4600 3 3 Køge Køge Ornitolog Efternavn Telefontabel 4 Ib Sørensen Spættevang 33 2840 1 1 Holte Ornitolog Adresse N_ID Postnr Tlf P_ID By N_ID Tlf E_ID N_ID E-mail 1 Type Emailtabel 1 33114545 1 1 ph@av.dk 2 E_ID 2 42551133 2 2 av@av.dk N_ID 3 3. Normalform: 3 52458541 3 3 ao@or.dk E-mail 4 50854575 4 4 is@or.dk I en tabel på 3. normalform er • Alle felter, som ikke er nøgle felter, uafhængige af hinanden. 2 56897410 5 2 aa@pri.dk 3 60459632 6 3 ab@g.dk 4 33254178 7 4 ib@liv.dk 3 20118578 8 3 ao@td.dk
v v Her er en tabel som skal normaliseres v N_ID N_ID Fornavn Fornavn Efternavn Efternavn Adresse Adresse P_ID T_ID P_ID T_ID T_ID Type T_ID T_ID Web Type Type Web K_ID N_ID Detalje N_ID K_ID Kontakt Detalje Kontakt I ”kort form” ser tabellerne nu således ud: Adressetabel 1 1 Peter Peter Hansen Hansen Hornuglehøj 14 Hornuglehøj 14 1 1 1 1 1 Avler 1 1 Avler www.x.dk www.x.dk Avler 1 1 Mobil 1 1 33114545 Mobill 33114545 N_ID 2 2 Anna Anna Vang Vang Musvitvej 1 Musvitvej 1 2 2 1 1 1 Avler 2 Ornitolog 1 Avler www.y.dk www.y.dk 2 2 Arbejde 2 2 42551133 Arbejde 42551133 Fornavn 3 3 Abdul Abdul Olsen Olsen Lappedykkeralle 8 Lappedykkeralle 8 3 3 2 2 2 Ornitolog 2 Ornitolog 3 3 Mobil 3 3 Mobil 52458541 52458541 Telefontabel Efternavn 4 4 Ib Ib Sørensen Sørensen Spættevang 33 Spættevang 33 1 1 2 2 2 Ornitolog 2 Ornitolog Adresse N_ID 4 4 Mobil 4 4 Mobil 50854575 50854575 Postnrtabel P_ID Tlf 5 2 Privat 5 2 Privat 56897410 56897410 P_ID P_ID Postnr Postnr By By P_ID 17 4 Web www.z.dk Type N_ID N_ID Tlf Tlf E_ID E_ID N_ID N_ID E-mail E-mail 6 3 Arbejde 6 3 Arbejde 60459632 60459632 1 1 2840 2840 Holte Holte Postnummer Emailtabel 18 1 Web www.p.dk 1 1 33114545 33114545 1 1 1 1 ph@av.dk ph@av.dk By 7 4 Arbejde 4 7 Arbejde 33254178 33254178 2 2 4000 4000 Roskilde Roskilde E_ID 19 3 Skype ao@or.dk 2 2 42551133 42551133 2 2 2 2 av@av.dk av@av.dk N_ID 8 3 Privat 3 8 Privat 20118578 20118578 3 3 4600 4600 Køge Køge 3 3 52458541 52458541 3 3 3 3 ao@or.dk ao@or.dk E-mail 9 1 Email1 9 1 ph@av.dk Email1 ph@av.dk ”Hvad nu hvis?”: ”Hvad nu hvis?”: 4 4 50854575 50854575 4 4 4 4 is@or.dk is@or.dk 10 2 Email1 10 2 av@av.dk Email1 av@av.dk • ”Kunne jeg få brug for at registrere info vedrørende type?” • ”Kunne jeg få brug for at registrere info vedrørende type?” 2 2 56897410 56897410 5 5 2 2 aa@pri.dk aa@pri.dk 11 3 Email1 11 3 Email1 ao@or.dk ao@or.dk 3 3 60459632 60459632 6 6 3 3 ab@g.dk ab@g.dk • ”Ville det give mening atsamle alle kontakt-info ien tabel?” • ”Ville det give mening atsamle alle kontakt-info ien tabel?” 12 4 Email1 4 12 is@or.dk Email1 is@or.dk 4 4 33254178 33254178 7 7 4 4 ib@liv.dk ib@liv.dk 13 2 Email2 2 13 aa@pri.dk Email2 aa@pri.dk 3 3 20118578 20118578 8 8 3 3 ao@td.dk ao@td.dk 14 3 Email3 14 3 ab@g.dk Email3 ab@g.dk 15 4 Email4 15 4 ib@liv.dk Email4 ib@liv.dk 16 3 Email3 16 3 ao@td.dk Email3 ao@td.dk
v v Her er en tabel som skal normaliseres v N_ID Fornavn Efternavn Adresse P_ID T_ID T_ID T_ID Type Web Web Type K_ID N_ID Detalje Kontakt I ”kort form” ser tabellerne nu således ud: Adressetabel 1 Peter Hansen Hornuglehøj 14 1 1 1 1 www.x.dk Avler Avler www.x.dk 1 1 Mobil 33114545 N_ID 2 Anna Vang Musvitvej 1 2 1 2 Ornitolog www.y.dk www.y.dk 2 2 Arbejde 42551133 Fornavn Kontakttabel 3 Abdul Olsen Lappedykkeralle 8 3 2 Postnrtabel Efternavn E_ID 4 Ib Sørensen Spættevang 33 1 2 P_ID Adresse N_ID Postnummer P_ID Detalje P_ID Postnr By 17 4 Web www.z.dk By T_ID Kontakt 1 2840 Holte 18 1 Web www.p.dk 2 4000 Roskilde Typetabel 19 3 Skype ao@or.dk 3 4600 Køge T_ID Type ”Hvad nu hvis?”: Web • ”Kunne jeg få brug for at registrere flere typer til en person?” • ”Kunne jeg få brug for BÅDE at registrere flere personer til en type og flere typer til en person” T_ID ID N_ID 1 1 3 2 2 3 (En MANGE til MANGE relation) 2 3 1 15 4 Email4 ib@liv.dk 16 3 Email3 ao@td.dk
Her er en tabel som skal normaliseres HUSK! • Vi har først normaliseret databasen når ALLE tabeller i databasen er undersøgt med 1. 2. og 3. normalform! • (Herunder hver ny tabeller vi under normaliseringen har oprettet) I ”kort form” ser tabellerne nu således ud: Adressetabel N_ID Fornavn Kontakttabel Efternavn K_ID Adresse N_ID P_ID Detalje TypeAdrParring Kontakt ID N_ID T_ID Postnrtabel Typetabel P_ID T_ID Postnummer Type By Web