原帖在这里
http://topic.csdn.net/u/20080923/15/69b9d670-a167-4426-9d60-f50ba8b4aa1d.html注意Room这个表中。我在上个帖子中认为,Room表中的hotelNo是一个外键。但是在上一个表中的描述中,说道:Room contains room details for each hotel and (roomNo, hotelNo ) forms the primary key ; 那我应该怎样做呢?
http://topic.csdn.net/u/20080923/15/69b9d670-a167-4426-9d60-f50ba8b4aa1d.html注意Room这个表中。我在上个帖子中认为,Room表中的hotelNo是一个外键。但是在上一个表中的描述中,说道:Room contains room details for each hotel and (roomNo, hotelNo ) forms the primary key ; 那我应该怎样做呢?
但是习题的描述里边称,Room表中的hotelNo这列属于主键中的一列。那么外键中还能包含这个hotelNo这列吗?在那个已结贴的帖子中,我说 在Room表中,hotelNo是外键。
但是,那个结贴的帖子中已经说到:Room contains room details for each hotel and (roomNo, hotelNo ) forms the primary key ; 所以,我不知道这个题中的外键,到底应该有哪几个?
请大家帮忙。
主键:roomNo, hotelNo
外键:hotelNo(引用Hotel.hotelNo)
就这样啊。hotelNo是外键,同时是ROOM表主键中的一列。
我后来又看了一下英文的描述,它说room里边的roomNo,hotelNo是主键,并且room里边的hotelNo还是外键?
主外键是一个?这样情况可以吗?我怕我做错了。
那要是我这样创建room表,对不对?
Room (roomNo, hotelNo, type, price)
CREATE TABLE Room(
roomNo datatype(),
hotelNo ...
...
CONTRAINT rm_rn_pk PRIMARY KEY (roomNo,hotelNo)
);那如果在booking这个表中,我写外键约束
【booking (hotelNo, guestNo, dateFrom, dateTo,roomNo)】
这样写对吗?
CONTRAINT bk_h_fk FOREIGN KEY (hotelNo) REFERENCES hotel (hotel.hotelNo),
CONTRAINT bk_g_fk FOREIGN KEY (guestNo) REFERENCES guest (guest.guestNo),
CONTRAINT bk_r_fk FOREIGN KEY (roomNo) REFERENCES room (hotel.roomNo)这样做对吗?我就是不太明白一个表中的一列是否可以设置成主键又同时设为成外键。谢谢大家解答,我是以前没研究过。