首页 > 编程知识 正文

mysql外键必须是主键吗,mysql主键和外键的区别

时间:2023-05-06 12:13:34 阅读:179889 作者:628

定义主键和外键主要是为了维护关系数据库的完整性。 1 .主键是能够确定一条记录的唯一标识符。 例如,一条记录包括身份的正号码、姓名和年龄。

身份证号码是唯一能确定你这个人的,可能还有其他重复,所以身份证号码是主键。 2 .外键与另一个表关联使用。 为了保持数据的完整性,可以识别其他表记录的字段。

例如,如果a表中的字段是b表的主键,则他将是a表的外键。

中主键和外键的设计原则

主键和外键是将多个表组织到有效关系数据库中的粘合剂。 主键和外键的设计对物理数据库的性能和可用性有决定性的影响。

必须将数据库模式从理论逻辑设计转换为实际物理设计。 主键和外键的结构是该设计过程的根本原因。 在生产环境中使用设计的数据库时,很难更改密钥,因此在开发阶段设计密钥和外键是非常必要和有价值的。

主键在物理上只有两种用途。

1.1唯一标识行。

2 .作为可以被外键有效引用的对象。

根据这两种用途,以下是设计物理主键时遵循的一些原则。

1 .主键对用户来说必须是没有意义的。 如果用户看到表示多对多关系的连接表中的数据并抱怨没有任何作用,则表示主键设计正确。

2 .为了简化连接和过滤器操作,主键必须为一列。

注:使用复合密钥的人通常有两个原因。 这两个理由都是错误的。 一个是主键应该有实际意义,而让主键有意义只不过便于人为破坏数据库。 第二,可以在以这种方式描述多对多关系的连接表中使用两个外键作为主键。 我也反对这个。 这是因为,复合主键经常导致不良的外键。 这意味着,如果连接表成为另一个从表的主表,并通过上述第二种方法成为此表主键的一部分,则此表还可能成为另一个从表的主表。

3 .请勿更新主键。 实际上,主键除了唯一标识一行外没有其他用途,所以也没有理由更新它。 如果需要更新主键,则违反了主键对用户没有意义的原则。

注意:本原则不适用于在数据转换或多个数据库合并时需要组织数据的数据。

4 .主键中不应包含动态变化的数据,如时间戳、创建时间列或修改时间列。

5 .主键应由计算机自动生成。 如果有人介入主键的创建,它将具有唯一标识行以外的含义。 越过此边界可能会产生修改主键的动机。 这样,这些系统链接记录行和管理记录行的重要手段就会落入不了解数据库设计的人手中。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。