Avatar billede bojohansen Nybegynder
29. februar 2004 - 14:36 Der er 16 kommentarer og
2 løsninger

Opdeling af database i flere tables.

Ville man normalt dele dette table op i flere.

PersonId
FornavnNavn
EfterNavn
Land
PersonId=1 ForNavn=Karl EfterNavn=Bertil Land=Danmark

ForNavn og EfterNavn er jo unikke på deres egen måde, godt nok ville de kunne optræde flere gange i samme table, men det er jo ikke nemt at gøre det anderledes.
Men Land, en person kan jo kun bo i et Land, men Danmark ville jo kunne optræde 1000 gange i dette table.
Ville man lægge Land ind i et eget table og Land til Person i eget også:

LandId
Land
Danmark=1
Sverige=2
England=6

PersonId
Land
PersonId=1 Land=1
PersonId=36 Land=6

Eller ville man lægge det i samme som først beskrevet
Avatar billede rasmusbg Nybegynder
29. februar 2004 - 14:39 #1
Jeg ville lave en tabel med lande, hvor der er et landeID og et landenavn.
Desuden ville jeg lave en persontabel med et personID, fornavn, efternavn og et landeID, hvor dette landeID er en fremmednøgle til landeID'et i landetabellen.
Avatar billede terry Ekspert
29. februar 2004 - 14:40 #2
Hi!
You could split the name into other tables but this is NOT normally done! Land on th eother hand is placed in another table as it could be used in other relationships
Avatar billede rasmusbg Nybegynder
29. februar 2004 - 14:40 #3
Det er så forudsat, at personer kun kan være knyttet til et land.
Avatar billede terry Ekspert
29. februar 2004 - 14:40 #4
.
Avatar billede rasmusbg Nybegynder
29. februar 2004 - 14:41 #5
.
29. februar 2004 - 14:43 #6
Du sikrer ensartethed i stavemåden for de lande, der optræder i din database ved at vælge en særskilt tabel til lande-data.
Avatar billede rasmusbg Nybegynder
29. februar 2004 - 14:46 #7
Udover ensartethed i stavemåde, så sikrer man også mindre redundans og dermed mindre spildplads.
Avatar billede bojohansen Nybegynder
29. februar 2004 - 14:52 #8
-->rasmusbg
Jeg kan ikke se den helt store vits i at lægge

Land
LandId

i eget table for så alligevel at have et feldt i PersonTable som holder en værdi for land. Her tænker jeg på plads og igen Redundance, der kunne jo blive 1000 feldter med LandeId=1
Er man så (næsten)ikke kommet lige langt, bare fået sig en SQL mere at holde styr på.
Avatar billede bojohansen Nybegynder
29. februar 2004 - 14:55 #9
Men det er altså normalt at dele det op i flere tables, selvom en bruger kun kan have en af denne type data (Kun 1 land)
Avatar billede terry Ekspert
29. februar 2004 - 14:55 #10
In person table you have LandID (foreign key)
Avatar billede rasmusbg Nybegynder
29. februar 2004 - 14:59 #11
bo > Jeps...hvis du vil vide mere om det, kan du søge på google efter normalisering af databaser. Jeg har fundet et link til et worddokument, hvor der står lidt:
http://www.hedeskov.dk/netpublikationer/udv-database/kap3/kapitel3.htm
Avatar billede bojohansen Nybegynder
29. februar 2004 - 15:01 #12
-->terry
Why take out Land from PersonTable and put in LandId, yes a number is much less data to store than the actually Text of the Land´, but i could have LandId=1 1000 times in the PersonTable then.
Thats what i dont really understand about Normalisation, is it just to save the space cause we still have redundance
Avatar billede rasmusbg Nybegynder
29. februar 2004 - 15:01 #13
bo > Forresten, hvis du har 1000 personer, der bor i Danmark, så vil det alt andet lige give et mindre pladsforbrug, hvis der står landeID=1 1000 gange fremfor land='Danmark' 1000 gange...
Avatar billede rasmusbg Nybegynder
29. februar 2004 - 15:05 #14
bo > Der er langt mindre redundans, når man har normaliseret en database. Man kan måske ikke fjerne redundans helt, men man kan gøre den væsentligt mindre.
Avatar billede terry Ekspert
29. februar 2004 - 15:06 #15
One resaon for taking out land is as rasmusbg mentioned, to make sure its gets spelt the same thoughout your dB. A land table may have a relationship to other tables in your database so it would be logical to have it in another table. BUT in th eend it is still up to you. If you only expect 50 records in your database and maybe only a few countries . then it is also possible in Access to have the country values in a value list in a combobox.
Avatar billede bojohansen Nybegynder
29. februar 2004 - 15:19 #16
Ok, så prøver jeg det nemmeste, at have et LandId i PersonTable med ForeignKey til LandId i LandTable.

Tak for deltagelse :-)
Avatar billede terry Ekspert
29. februar 2004 - 15:30 #17
selv tak
Avatar billede rasmusbg Nybegynder
29. februar 2004 - 15:35 #18
Velbekomme :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester