Avatar billede daniel_d Nybegynder
02. august 2004 - 00:26 Der er 18 kommentarer og
2 løsninger

Problem med forespørgsel/relation

Hej kloge hoveder :)

Jeg er ved at lave et system til min bror så han kan holde styr på div. dokumenter som er sendt til hans kunder.

Mit problem består i at designe databasen rigtigt.

Lad mig kort forklare...
En kunde bestiller et produkt mellem flere mulige
Hvert produkt har en række standard-dokumenter som skal udfyldes med data om kunden osv.

Men hvert produkt her ikke nødvendigvis de samme dokumenter

Foreløbig har jeg bygget databasen op på følgende måde:

Tabel: Kundeinfo
  Navn, adresse, postnr, by m.m
Tabel: Status
  Ikke startet, igangværende, færdig
Tabel: Produkter
  Produkt1, produkt2, produkt3 osv osv
Tabel: Dokumenter
  Dokument1, dokument2, dokument3 osv osv

Kunden bestiller så f.eks. produkt 1 som knytter sig til dokument1 og dokument 2, men dokument 1 og 2 kan muligvis også knytte sig til produkt 2, så derfor mit problem

Hvordan fan... laver jeg dette?
Avatar billede jensen363 Forsker
02. august 2004 - 07:11 #1
Hvis der er tale om at dokumenterne er ens, dvs. Dokument 1 har en beskrivelse som er generel og dækkende for flere produkter, Doku ment 2 har en beskrivelse som er generel og dækkende for flere produkter osv. skal du oprette en relatiomn mellem din produkttabel og domumenttabel

Eksempel :

SELECT tblProdukt.ProduktID, tblProdukt.Produkt, tblDokument.Dokument
FROM tblProdukt INNER JOIN tblDokument ON tblProdukt.DokumentID = tblDokument.DokumentID;
Avatar billede jensen363 Forsker
02. august 2004 - 07:31 #2
Efter udfyldning af dokument, knytter dokomentet sig vel mere til KundeID ( med produktbeskrivelse ) end til ProduktID, og skal vel som sådan gemmes under KundeID
Avatar billede daniel_d Nybegynder
02. august 2004 - 08:26 #3
Men hvis jeg skal beskrive min db lidt mere præcist så:
Tabel: Produkter;
produkter_id    produkt_navn    produkt_beskrivelse tilknyttede_dokumenter

Tabel: Dokumenter;
dokumenter_id    dokument_navn    dokument_indhold

Jeg har så tænkt på en relation mellem dokumenter_id og tilknyttede_dokumenter, men dette forudsætter vel at tilknyttede_dokumenter er et array?

Det pågældende produkt kan jo have flere dokumenter tilknyttet. Tilknyttede_dokumenter kunne f.eks. indeholde: 1,2,5,9, som referer til dokumenter_id

Er min tanke helt forkert?
Avatar billede jensen363 Forsker
02. august 2004 - 08:33 #4
Når du nu snakker om dokumenter, er der så tale om fysiske dokumenter i forma f eksempelvis et word-dokument ?
Avatar billede daniel_d Nybegynder
02. august 2004 - 08:38 #5
Ja, det var tanken. Jeg har mulighed for at benytte aspPDF som kan generere pdf filer som indholder kundedata og så gemme dem på serveren...

Men alternativt kan det godt laves uden fysiske dokumenter
Avatar billede jensen363 Forsker
02. august 2004 - 09:54 #6
Det er vist noget som der skal arbejdes videre med ... vil du gemme dokumenterne i databasen, eller bare stihenvisning til filen
Avatar billede daniel_d Nybegynder
02. august 2004 - 10:41 #7
det er bare stihenvisningen jeg vil gemme...
Avatar billede daniel_d Nybegynder
02. august 2004 - 15:11 #8
så er det ikke "bare" et array som skal ligge i tilknyttede_dokumenter?
Avatar billede jensen363 Forsker
02. august 2004 - 15:16 #9
Hvad forstår du ved et array ? mange til mange relationer ?
Avatar billede daniel_d Nybegynder
02. august 2004 - 15:19 #10
ved array forstår jeg en række data der er komma-separeret f.eks. : 1,2,3,5,8 el. 1;2;3;5;8
Avatar billede hekla Nybegynder
02. august 2004 - 15:33 #11
Den nemmeste (og mest rigtige) måde at lave denne mange-til-mange relation på, er ved at lave en tredie tabel, som indeholder oplysningerne om relationer mellem produkter og dokumenter. Tabellen behøver kun at indeholde felterneprodukter_id og dokumenter_id. Du kan have de to felter som kombineret nøgle, så du behøver i og for sig ikke et id-felt i denne tabel. Der skal laves relationer til de tilsvarende felter i Produkter- og Dokumenter-tabellerne. Herefter kan du vha forespørgsler hente de dokumenter, som hører til et produkt.
Avatar billede daniel_d Nybegynder
02. august 2004 - 15:37 #12
den er jeg med på (tror jeg nok :-) ) men tilknyttede_dokumenter skal vel stadig være et array som peger på de forskellige dokumenters id??? - ellers kan jeg ikke se hvordan man skal kunne finde flere dokumenter på samme produkt?
Avatar billede hekla Nybegynder
02. august 2004 - 15:59 #13
Nej, der er ikke behov for det, som du kalder et array. Hvis Produktet med ID 1 har tilknyttet dokumenterne 1, 2, 3, 4 og 5 og produktet med ID 2 har tilknyttet dokumenterne 4, 5, 6 og 7, skal tabellen indeholde følgende rækker:

1 1
1 2
1 3
1 4
1 5
2 4
2 5
2 6
2 7

Med andre ord. Én række til én kombination af produkt-dokument. Når du skal finde alle dokumenterne for produkt1 søger du rækker i tabellen, som har ProduktID = 1. Du kan så vælge at vise de tilhørende produktnavne og dokumentnavne, som du kan hente vha. relationerne
Avatar billede daniel_d Nybegynder
02. august 2004 - 16:28 #14
øhhh... den skal jeg vist lidt tygge lidt på... ikke helt sikker på at jeg kan følge dig helt - Jeg forstår hvad du siger, men i tvivl om hvordan jeg skal lave rækkerne i databasen...
Avatar billede hekla Nybegynder
02. august 2004 - 17:16 #15
Hvis du lægger din email, kan jeg sende dig et eksempel.
Avatar billede daniel_d Nybegynder
02. august 2004 - 18:45 #16
det lyder godtnok lækkert :o)

Du kan skrive til eksperten@d-form.dk

:D
Avatar billede hekla Nybegynder
02. august 2004 - 18:55 #17
Eksemplet er sendt til daniel_d
Avatar billede daniel_d Nybegynder
02. august 2004 - 22:34 #18
Det ser virkelig godt ud... Takker... Smider lige point ud. I har begge hjulpet, men synes nu at hekla fortjener mest :)

Takker
Avatar billede hekla Nybegynder
02. august 2004 - 22:59 #19
Takker for point :o)
Avatar billede jensen363 Forsker
03. august 2004 - 07:04 #20
Hvad blev den endelige løsning så ? ... tak for point c",)
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