当我将EER转换为关系模式时,我得到了该表,该表具有如下所示的复合主键,
CREATE TABLE branch
(
branch_number varchar(20),
b_code varchar(20),
name varchar(20),
address varchar(20),
--CONSTRAINTS
CONSTRAINT pk_branch PRIMARY KEY(branch_number,b_code),
CONSTRAINT fk_branch FOREIGN KEY(b_code) REFERENCES bank(b_code)
)
上面的表是一个弱实体,因此它具有一个键组合作为主键。(由于标识关系)然后,此分支表与下表具有一对多关系
CREATE TABLE account
(
account_no varchar(20),
balance float,
branch_number varchar(20),
b_code varchar(20),
a_code varchar(20),
--CONSTRAINTS
CONSTRAINT pk_account PRIMARY KEY(account_no),
CONSTRAINT fk_account_1 FOREIGN KEY(b_code) REFERENCES branch(b_code),
CONSTRAINT fk_account_2 FOREIGN KEY(branch_number) REFERENCES branch(branch_number),
CONSTRAINT fk_account_3 FOREIGN KEY(a_code) REFERENCES account_type(a_code)
)
如何建立这两个表之间的关系?当我有一列引用另外两列时,如何为带有分支的帐户表实现外键?
你fk_account_1
当你尝试编译它,因为失败b_code
是不是表的主键或唯一键branch
。同样的问题fk_account_2
,因为branch_number
它不是主要的或唯一的branch
。
主键branch
是,(branch_number,b_code)
所以您的外键应该是
CONSTRAINT FK_ACCOUNT_1
FOREIGN KEY (BRANCH, B_CODE)
REFERENCES BRANCH (BRANCH, B_CODE);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句