29. februar 2004 - 14:36Der 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
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.
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
-->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å.
-->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
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...
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.
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.
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.