Avatar billede damski Nybegynder
21. februar 2002 - 14:22 Der er 11 kommentarer og
3 løsninger

FREMMEDNØGLE....

Jeg har et mindre problem med to tabeler, det er følgende: de to tabeler værloglejl og fpophold "ferieparkophold" er hver deres fremmednøgle i booking, hvilket gør at man skal skrive begge ind i booking, og man kan ikke både have et ferieophold og et værelse.... LØSNING? 

CREATE TABLE Resevation(
Rsvnr int4 NOT NULL PRIMARY KEY,
kundenavn char(20) NOT NULL,
rsvtype char(16) NOT NULL,
bekrtype char(8) NOT NULL,
datostart date NOT NULL,
naetter int4 NOT NULL,
antalpers int4 NOT NULL,
evtforhold char(36));


CREATE TABLE Værloglejl(
Vrlnr int4 NOT NULL PRIMARY KEY,
Katnr int4 NOT NULL,
Katpris int4 NOT NULL,
periode int4 NOT NULL);


CREATE TABLE fpophold(
lejlnr int4 NOT NULL PRIMARY KEY,
periode int4 NOT NULL,
prisuge int4 NOT NULL,
miniferiepris int4 NOT NULL,
prisxtradag int4 NOT NULL);


CREATE TABLE Booking(
Bookingnr int4 NOT NULL PRIMARY KEY,
Legimitation char(10),
kundenr int4 NOT NULL,
Vrlnr int4 NOT NULL,
lejlnr int4 NOT NULL,
FOREIGN KEY (lejlnr) REFERENCES fpophold (lejlnr),
FOREIGN KEY (kundenr) REFERENCES Kunder (kundenr),
Avatar billede terry Ekspert
21. februar 2002 - 14:36 #1
Not sure I quite understand the problem!
I can NOT see that you have a foreign key to Værloglejl!

If you DID have both FOREIGN KEYS then you COULD accept NULL in one of them. IE one HAS to contain a value.
Avatar billede damski Nybegynder
21. februar 2002 - 14:50 #2
Det er hovedsageligt denne her.

CREATE TABLE Booking(
Bookingnr int4 NOT NULL PRIMARY KEY,
Legimitation char(10),
kundenr int4 NOT NULL,
Vrlnr int4 NOT NULL,
lejlnr int4 NOT NULL,
FOREIGN KEY (lejlnr) REFERENCES fpophold (lejlnr),
FOREIGN KEY (kundenr) REFERENCES Kunder (kundenr),

Kan jeg så bare slette Not i begge altså..

CREATE TABLE Booking(
Bookingnr int4 NOT NULL PRIMARY KEY,
Legimitation char(10),
kundenr int4 NOT NULL,
Vrlnr int4 NULL,
lejlnr int4 NULL,
FOREIGN KEY (lejlnr) REFERENCES fpophold (lejlnr),
FOREIGN KEY (kundenr) REFERENCES Kunder (kundenr),

Det ville ikke skabe problemer?
Avatar billede terry Ekspert
21. februar 2002 - 14:55 #3
something I dont undertstand! why do you have

FOREIGN KEY (lejlnr) REFERENCES fpophold (lejlnr),
FOREIGN KEY (kundenr) REFERENCES Kunder (kundenr),

when you say taht these are your FOREIGN KEYs
Vrlnr int4 NULL,
lejlnr int4 NULL,

??

But YES I cant see why you cant accept NULL to solve your problem, but then I dont fully know your requirement!
Avatar billede teepee Nybegynder
21. februar 2002 - 15:34 #4
damski => hvorfor skulle det skabe problemer at tillade nullværdier i booking. FK bliver kun valideret ved faktiske værdier og hvis man ikke booker et bestemt værelse er del vel tilladt ikke at udfylde dette
Avatar billede teepee Nybegynder
21. februar 2002 - 15:37 #5
Du kan evt. lave en ARC på vrlnr + lejlnr
Avatar billede teepee Nybegynder
21. februar 2002 - 15:45 #6
damski => Hvilken database? Bruger du et CASE-værktøj til generering?
Avatar billede damski Nybegynder
21. februar 2002 - 17:59 #7
Jeg bruger postgresql, og ja jeg brugte lige deZign for databases, som jeg kan se nok bare lave lort i det...
Avatar billede damski Nybegynder
21. februar 2002 - 18:00 #8
Hvad er en ARC??
Avatar billede terry Ekspert
21. februar 2002 - 18:29 #9
hi damski>can you give me an explanation to my comment 15:34?
Avatar billede benny.dk Nybegynder
22. februar 2002 - 08:51 #10
Du laver en valideringsregl som siger at enten skal det ene felt være udfyldt ellers skal det andet felt være udfyldt, dvs at begge eller ingen felter må være fyldt på samme tid.
Avatar billede teepee Nybegynder
22. februar 2002 - 09:56 #11
en ARC gør i den fysiske database hvad benny.dk har forklaret, men den skal dokumenteres i CASE værktøjet som en ARC. Det er en slags bue man tegner hen over to relationer ud fra en tabel. Dette betyder netop at én og kun én må/skal være udfyldt. Jeg ved at Oracle implementerer denne som en pre-insert trigger.
Avatar billede tane Nybegynder
25. februar 2002 - 18:18 #12
Hvordan skriver du en ARC, erstatter du bare integer med den??
Avatar billede teepee Nybegynder
26. februar 2002 - 10:49 #13
tane => en ARC er et dokumenterings-illustration, der i basen bliver til en pre-insert trigger
Avatar billede damski Nybegynder
27. februar 2002 - 11:40 #14
Okay.. ??? pre-insert trigger.. ???
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