假设我有两个表:A(带有列:a,b,c,d)和B(带有列:x,y,z)。现在,(a,b)
一起构成表A的主键,x
是表B的主键。是否可以使b
表A的外键引用{{1}来自表B?
请尽快回复!
提前致谢! : - )
答案 0 :(得分:0)
是的,没有问题。一个典型的例子(使用MySQL进行演示)是一个数据库表,其中包含许多公司和另一个可以为这些公司中的任何一个工作的员工:
create table companies (
id int primary key,
name varchar(20));
create table employees (
id int,
c_id varchar(20) references companies(id),
name varchar(20),
primary key (id, c_id));
insert into companies (id, name) values (1, 'ABC');
insert into companies (id, name) values (2, 'DEF');
insert into companies (id, name) values (3, 'HIJ');
insert into employees (id, c_id, name) values (101, 1, "Allan");
insert into employees (id, c_id, name) values (102, 1, "Bobby");
insert into employees (id, c_id, name) values (101, 2, "Carol");
insert into employees (id, c_id, name) values (101, 3, "David");
请注意,employees
的主键是由员工ID和公司ID组成的复合键。另请注意,公司ID是companies
主键的外键约束,即您询问的确切情况(功能上)。
显示谁在哪家公司工作的查询显示了这一点:
select c.id, c.name, e.id, e.name
from companies c, employees e
where c.id = e.c_id
order by c.id, e.id
c.id c.name e.id e.name
---- ------ ---- ------
1 ABC 101 Allan
1 ABC 102 Bobby
2 DEF 101 Carol
3 HIJ 101 David