Avatar billede -42- Nybegynder
04. september 2003 - 14:42 Der er 6 kommentarer og
3 løsninger

database design

På:
http://www.cbc.dk/images/database.jpg
har jeg lavet et database "design", og jeg må sgu indrømme, at det er noget tid siden jeg lærte om databaser... Men nu skal jeg lave en ny database til et intranet, og vil derfor gerne have styr på designet...

Primary key og foreignkey er efterhånden røget ud i togerne, og jeg syntes ikke helt jeg har styr på det.

Derfor udlover jeg 200 point til en der kan hjælpe mig med at få lavet det rigtige design.

På forhånd tak.
Avatar billede keysersoze Guru
04. september 2003 - 14:52 #1
allerførst vil jeg mene det er en god idé at give "linkskategori", "personkategori", "services", "firma" og "links" et id-felt

zip og by i adresse skal skilles ad så der kun er zip med en relations til en tabel med zip og by

umiddelbart ser hele sammensætningen med person, firma, medarbejder og adresse også lidt underlig uden - men der er svært at sige mere uden at kende systemet og idéen lidt bedre.

Mht primary key og foreignkey - en god idé vil være at gå ud og købe IDG's hæfte om Access. Der koster vistnok 70-100 kroner og der står alle de gode ting med nøgler, normalformer m.m.
Avatar billede terry Ekspert
04. september 2003 - 14:55 #2
You also need a primay key in Firma (firmaID)
Avatar billede terry Ekspert
04. september 2003 - 14:56 #3
sorry keysersoze>I see you have that too :o)
Avatar billede -42- Nybegynder
04. september 2003 - 15:06 #4
Jeg vil prøve at forklare systemet lidt.

vi har kontakt til en lang række firmaer af forskellige typer (leverandør , kunde). De firmaer har så en kontaktperson hos vores firma "cbckontakt".

En person er en der ikke arbejder hos os. En person kan være af forskellig personkategori, og få ydet forskellige services. Personen er ikke nødvendigvis knyttet til et firma.

Links delen tror jeg siger sig selv.
Avatar billede -42- Nybegynder
04. september 2003 - 15:19 #5
keysersoze >> Jeg kan godt se, hvorfor du vil have id på firma, men hvorfor på linkskategori, personkategori og services?
Avatar billede keysersoze Guru
04. september 2003 - 16:04 #6
hvis du skal lave relationer mellem en af de tabeller og en en anden skal du have en unik nøgle "primary key" du kan bruge. Et link og et firmanavn er selvfølgelig også unik, men det er nu engang bedst at bruge tal til den slags ting
Avatar billede terry Ekspert
04. september 2003 - 17:54 #7
A number (long int) fills 4 bytes, a text field can fill MANY more! A primary key will also have an index which again will fill the same! So as you can see you are saving space. Also if you happen to change the text value then the index is still the same which means the foreign key need not be updated!
Avatar billede arne_v Ekspert
04. september 2003 - 22:46 #8
Med hensyn til services, personkategori og linkkategori så kan du
tilføje et ID felt og så lade person og links tabellen bruge ID som fremmed
nøgle. Det er uden tvivl den korrekte måde fra en ren database
synsvinkel. Jeg tror at du vil finde det nemmere i applikationen
at vælge en anden strategi: drop de 3 tabeller, gem varchar felter i
person og links, lad din applikation sikre at der kun gemmes værdier
fra et set af legale værdier. Du sparer en masse joins på den konto.

Jeg tror at jeg ville omorganisere firma, person, medarbejder og adresse.
Jeg ville nedlægge adresse og flytte felter op i de andre 3 tabeller som
der er behov for (jeg tror ikke at alle felter er relevante for alle 3).
Det tror jeg vil give både en mere naturlig tabel-struktur og du vil igen
spare nogle joins.

Og ja - by bør fjernes og ligges ud i en seperat tabel med zip og by.
Avatar billede terry Ekspert
05. september 2003 - 08:15 #9
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
Computerworld tilbyder specialiserede kurser i database-management

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