为数据库表添加外键方法(以SqlSever2005数据库为例):
1、新建两张表,一张为主表,一张为副表。主表里的外键就是连接到副表的主键。
2、首先在主表中添加一个外键字段,如下:
3、在主表上右击,选择关系,如下:
4、点击“添加”。
5、再点击上图中标出的位置,如下:
6、图中标出的“主键表”就选择上面的副表。如下:
7、主键表底下的就选择副表的主键,如下:
8、外键表底下的就选择刚才新建的外键字段。如下:
9、再点击“确定”。
10、点击“是”,即可完成外键的添加。
外键的设计初衷是为了在数据库端保证对逻辑上相关联的表数据在 *** 作上的一致性与完整性。
优点:
精简关联数据,减少数据冗余
避免后期对大量冗余处理的额外运维 *** 作。
降低应用代码复杂性,减少了额外的异常处理
相关数据管理全由数据库端处理。
增加文档的可读性
特别是在表设计开始,绘制 ER 图的时候,逻辑简单明了,可读性非常强。
缺点:
性能压力
外键一般会存在级联功能,级联更新,级联删除等等。在海量数据场景,造成很大的性能压力。比如插入一条新记录,如果插入记录的表有 10 个外键,那势必要对关联的 10 张表逐一检查插入的记录是否合理,延误了正常插入的记录时间。并且父表的更新会连带子表加上相关的锁。
其他功能的灵活性不佳
比如,表结构的更新等。
不必须,可以了解一下外键的作用
外键的设计初衷是为了在数据库端保证对逻辑上相关联的表数据在 *** 作上的一致性与完整性。
优点:
精简关联数据,减少数据冗余
避免后期对大量冗余处理的额外运维 *** 作。
降低应用代码复杂性,减少了额外的异常处理
相关数据管理全由数据库端处理。
增加文档的可读性
特别是在表设计开始,绘制 ER 图的时候,逻辑简单明了,可读性非常强。
缺点:
性能压力
外键一般会存在级联功能,级联更新,级联删除等等。在海量数据场景,造成很大的性能压力。比如插入一条新记录,如果插入记录的表有 10 个外键,那势必要对关联的 10 张表逐一检查插入的记录是否合理,延误了正常插入的记录时间。并且父表的更新会连带子表加上相关的锁。
其他功能的灵活性不佳
比如,表结构的更新等。
先把B的外键去掉(或取消约束),然后把数据添加到B,最后把数据添加到A,把B的外键(或约束)加回。
但这样的数据库设计好像有问题,因为添加删除都麻烦。除非有特别的需要否则不会这样设计的。
CONSTRAINT`外键名`FOREIGNKEY(`外键的字段`)REFERENCES`外键关联的表`(`外键关联的字段`)ONDELETECASCADEONUPDATECASCADE
ONDELETE代表删除时
ONUPDATE代表更新时
CASCADE代表级联
主键是能够唯一标识表中记录的属性或属性集合,比如部门号能够将不同部门区分开,所以是主键,
外键是指本关系表中的属性的属性值需要参照另外一个表中主键属性的属性值而存在的,部门表中的经理属性其值必须是一个员工编号,这个员工编号必须是员工表中员工号属性上存在的一个值,就是说得确实有这么个人,所以经理是部门表的外键
以上就是关于数据库语句怎么加外键全部的内容,包括:数据库语句怎么加外键、数据库到底用不用外键、数据库中的外键是必须的吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)