一个外键引用多个 table 的主键
One foreign key referring to multiple table's primary keys
1 <1 - image> 一个外键引用多个 table 的主键。
<1.1> 其中 primary1 table 有两列 primary1_id int( 11) 和 first_name varchar(10) 其中 primary1_id 是一个 主键。
<1.2> 与 primary1 相同 table, primary2 table 也有两列 primary2_id int 和 last_name varchar 其中 primary2_id是一个主键。
<1.3>**还有一个**foreign1 table 有两列 foreign_id int 和 full_name int 其中 full_name 是一个 外键 其中指的是多个 table 的 主键 ,例如 primary1_id 和 primary2_id 。
2 <2 - 图片> 这个外键, full_name 只允许插入那些在 primary1_id 和 primary2_id 列中相同的值。
<2.1> 因此,如果我在 primary1 table 中输入五个条目,在 中输入四个条目初级2.
<2.2> 其中primary1_id的设置为1到5,primary2_id的设置为1到4.
<2.3> 但是为什么这个 外键 full_name 允许我输入 1 到4 仅在两个主键的 tables?
中可用
根据我的经验,这很不寻常,但作为一种实现某些业务规则的方式可能有意义,其含义类似于 "A must be both B and C"。
一个可能的例子:StaffDiscount table 识别同时也是雇员并且有资格享受折扣的客户。这样的 table 可能有一个引用客户 table 和员工 table 的外键。这确实假设使用公共密钥来识别客户和员工。
CREATE TABLE StaffDiscount
(CustomerEmployee INT NOT NULL PRIMARY KEY /* Same key identifies customer and employee */,
FOREIGN KEY (CustomerEmployee) REFERENCES Customer (CustomerNum),
FOREIGN KEY (CustomerEmployee) REFERENCES Employee (EmployeeNum));
是的,如果一个人要在多个人之间建立关系,那是有可能的table。由于外键的存在表明存在所有与 table 相关的 table。并有助于在单个关系查询中从该环境中检索数据。
1 <1 - image> 一个外键引用多个 table 的主键。
<1.1> 其中 primary1 table 有两列 primary1_id int( 11) 和 first_name varchar(10) 其中 primary1_id 是一个 主键。
<1.2> 与 primary1 相同 table, primary2 table 也有两列 primary2_id int 和 last_name varchar 其中 primary2_id是一个主键。
<1.3>**还有一个**foreign1 table 有两列 foreign_id int 和 full_name int 其中 full_name 是一个 外键 其中指的是多个 table 的 主键 ,例如 primary1_id 和 primary2_id 。
2 <2 - 图片> 这个外键, full_name 只允许插入那些在 primary1_id 和 primary2_id 列中相同的值。
<2.1> 因此,如果我在 primary1 table 中输入五个条目,在 中输入四个条目初级2.
<2.2> 其中primary1_id的设置为1到5,primary2_id的设置为1到4.
<2.3> 但是为什么这个 外键 full_name 允许我输入 1 到4 仅在两个主键的 tables?
中可用根据我的经验,这很不寻常,但作为一种实现某些业务规则的方式可能有意义,其含义类似于 "A must be both B and C"。
一个可能的例子:StaffDiscount table 识别同时也是雇员并且有资格享受折扣的客户。这样的 table 可能有一个引用客户 table 和员工 table 的外键。这确实假设使用公共密钥来识别客户和员工。
CREATE TABLE StaffDiscount
(CustomerEmployee INT NOT NULL PRIMARY KEY /* Same key identifies customer and employee */,
FOREIGN KEY (CustomerEmployee) REFERENCES Customer (CustomerNum),
FOREIGN KEY (CustomerEmployee) REFERENCES Employee (EmployeeNum));
是的,如果一个人要在多个人之间建立关系,那是有可能的table。由于外键的存在表明存在所有与 table 相关的 table。并有助于在单个关系查询中从该环境中检索数据。