首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合键mySQL约束

问组合键mySQL约束
EN

Stack Overflow用户
提问于 2019-03-13 06:21:53
回答 2查看 77关注 0票数 -1

如果我想为这个已经标准化的数据库编写mySQL,我该如何为(Branch_ID,Employee_ID)组合键添加约束呢?

分支表

分支机构ID分支机构名称地址邮编城镇县

分公司员工表

分支机构ID员工ID

员工表

员工ID员工名字员工姓氏员工NI编号

我把主键变成了光头。我知道如何使用constraint将Branch Id和Employee ID主键都设为主键,但是既然我在另一个表中使用了Employee_ID,那么我是否也应该将Branch Employee表中的the设为外键呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-13 06:46:21

要将组合键添加到现有表中,请使用以下代码:

代码语言:javascript
复制
ALTER TABLE `Branch Employee`
ADD PRIMARY KEY (BranchID,Employee ID)

Branch Employee表中的每一列都应该是外键,因为这些值在其他表中使用,这一点是正确的。如果没有外键,可以输入在各自的表中不存在的员工和分支机构

按如下方式创建外键

代码语言:javascript
复制
ALTER TABLE `Branch Employee`
ADD FOREIGN KEY (EmployeeID_FK) REFERENCES Employee(EmployeeID);

ALTER TABLE `Branch Employee`
ADD FOREIGN KEY (BranchID_FK) REFERENCES Branch(BranchID);

根据Raymond的评论编辑:

复合键中列的顺序很重要,因为将使用主键创建聚集索引。这两个列中选择性最强(查询次数最多)的列应该首先出现,然后是选择性较低的列。正确或错误的顺序将取决于对表运行的查询

票数 0
EN

Stack Overflow用户

发布于 2019-03-13 06:32:59

主键是每个表的标识符。

外键意味着表中的值被另一个表中的主键引用。

在这种情况下,您需要设置您的Branch ID Employee ID,主键和外键;外键-因为它们被另一个表引用。主键-因为您不希望'employee a‘在'branch a’中出现两次。

注意:在“分支a”和“分支b”中仍然可以有“employee a”。

为了避免这种情况,最好是Employee表包含一个调用分支id的参数,并将其变成外键。

希望能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55131502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档