关于SQL制表当中如何把两个一起作为主码,另一个表引用这个表的主码当中的一个作为外码
CREATETABLEcompany(company_nameCHAR(30),cityCHAR(30),PRIMARYKEY(company_name,city),);...
CREATE TABLE company(
company_name CHAR(30),
city CHAR(30),
PRIMARY KEY (company_name,city),
);
GO
CREATE TABLE works(
person_name CHAR(30),
company_name CHAR(30),
city CHAR(30),
salary INT,
FOREIGN KEY (company_name,city)
REFERENCES company(company_name,city),
PRIMARY KEY (person_name),
);
例如上面,works表当中不应当含有city,但是如果我把外码引用的city去掉就无法建表,请各位大神帮助我
GO 展开
company_name CHAR(30),
city CHAR(30),
PRIMARY KEY (company_name,city),
);
GO
CREATE TABLE works(
person_name CHAR(30),
company_name CHAR(30),
city CHAR(30),
salary INT,
FOREIGN KEY (company_name,city)
REFERENCES company(company_name,city),
PRIMARY KEY (person_name),
);
例如上面,works表当中不应当含有city,但是如果我把外码引用的city去掉就无法建表,请各位大神帮助我
GO 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
1个回答
展开全部
你现在是2NF,搞成3NF就行了。
方案一:
Company表中,仅company_name作PK -- 很奇怪,为何你的PK要加上city?
方案二:
Company表中,增加ID字段;works表引用该ID字段
方案一:
Company表中,仅company_name作PK -- 很奇怪,为何你的PK要加上city?
方案二:
Company表中,增加ID字段;works表引用该ID字段
追问
非常感谢,PK加上city是因为一个Company可能分布多个城市,目前NF还没有学,works表中只希望存在person_name,company_name,salary。company_name需要company表的约束
追答
①每个城市可能有多个办事处(概率较小,但不是没),
②应加个表office或branch,这样就好办了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询