关于数据库中FK的简单理解以及应用

来源:互联网 发布:手机太阳系模拟软件 编辑:程序博客网 时间:2024/05/19 21:41

问题来源:思考如果有两张表,应该以什么样的方式将两者关联起来?直接用两个表中的字段进行关联,还是使用第三张关系表进行关联?

说明:FK(foreign key)、PK(primary key)

(注:下面提到的:“一对一”、“一对多”、“多对一”,是指一个表的记录只能与另一个表的一条记录连接;或者是一个表的记录与另一个表的多条记录连接)
查询之前,先要了解 表之间的关系


理解:

如果两个表之间的关系涉及一对多,或者多对一,肯定会有FK
即便没有显示声明FK,也会有一个字段起到FK的作用;

如果当时设计是一对多,或者多对一,就可以利用FK关联
但是大部分情况,我们是不会显示声明FK的;

如果两个表之间的关系是多对多,中间必然会有 “关系表”(例如“教师-学生关系表”,教师表和学生表的关系)
这个时候,查询时,中间的“关系表”起到关联中介的作用。

总结:
如果两张表是:“一对多”,或者“多对一”的关系,那么可以考虑使用 FK 进行关联两张表;
如果两张表是:“多对多”的关系,那么就会需要使用到第三张“关系表”来进行关联;

举个例子:
现有一个新系统,一个用户只允许有一个角色,一个角色可以对应多个用户,(分别对应用户表,角色表)
这个时候,FK应该在哪个表上?
FK应该在 角色表上;FK设定的重要原则:FK必然是另一个表的PK的映射。(做FK的不一定是PK字段)

FK 的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作。


---- 还有好多的不懂之处,后续知道了再补充。

阅读全文
0 0