mysql中两个表的交集

s5a0g9ez  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(543)

基本上,我需要创建一个新表,该表使用其他两个表中的特定信息。
例如,我有一个名为person的表,其中包含person\u id、first\u name、last\u name、gender、age和fav\u quote元素。我还有一个名为department的表,其中包含dept\u id、dept\u name和building元素。我现在需要创建一个包含person\u id和dept\u id元素的交集表。而且两者都必须是主键(我假设这只是指我的源代码中的主键(person\u id,dept\u id)命令)。
创建表人员(
person\u id int(8)非空自动增量,
名字varchar(25)不为空,
姓varchar(25)不为空,
性别varchar(1),
年龄积分(8),
最喜欢的引用文本,
主键(person\u id)
);
创建表部门(
部门id int(8)非空自动增量,
部门名称varchar(25)不为空,
建筑varchar(25)不为空,
主键(部门id)
);
这是我为最初的两个表编写的代码,我只是不知道如何创建一个交集,而且,在回顾我的笔记之后,我找不到如何编写交集的说明。

1cklez4t

1cklez4t1#

您需要一个包含2个字段的表;person\u id和dept\u id。该表将有两个表person和department主键的外键,以及两者的复合主键。
此外,只有在人员与部门之间存在一对多关系时,才需要此表。否则,只需亲自添加dept\u id作为外键。

yeotifhr

yeotifhr2#

你的主键部分是对的。我会将外键添加到现有表中,以防止创建与不存在的人员或部门的交互:

CREATE TABLE person_department
    person_id INT(8) NOT NULL,
    dept_id INT(8) NOT NULL,
    PRIMARY KEY(person_id, dept_id),
    FOREIGN KEY(person_id) REFERENCES person(person_id),
    FOREIGN KEY(dept_id) REFERENCES department(dept_id)
)

相关问题