首页 > 编程知识 正文

数据库中的外码是什么,mysql删除外键约束

时间:2023-05-03 16:57:56 阅读:152823 作者:418

我的疑问是“使用外键约束”。 而且,我不太理解“外键”这个词。 查相关资料都是说几句话。 外键的主要作用是保持数据的一致性和完整性。 我听说是一头雾水。

关于外键。 我有自己的理解,但不知道是否正确,所以我举个例子谈谈我的意见。 如果现在需要做表的话,是什么样的表呢? 某班学生个人信息表:

所以设计的时候。 在表1中添加外键。 此外键为表2中的学校编号字段。 于是,表1为主表,表2为副表。 因此,通过合并两张表,可以保持数据的一致性、完整性(预计会恢复到原来的大表)。

参考这个例子谈谈外键的几个事项吧。

1、表1可能有一个或多个外键,也可能没有外键。 (假设表1中有多个外键,则不会出现这种情况。 表2中的多个字段是表1中的外键。 或者,表1的多个外键在多个表中)

2、该外键可以不是表1中的主键,但必须是子表中的主键。 简而言之。 假设字段是表的外键。 此字段必须是主键。)

以上是我个人对外按钮的理解。

-------解--- -答

什么是外键

----- ref------ ref

| sub | ------ | main |

------- -------

ref (从表(sub )中的列)主表(main )中的列的值。

例如,学生表中有学生编号(sid ),分数表的学生列) stu )引用了学生表的学生编号的情况下,对于分数表的stu来说。 学生表的sid是外键。

从表也称为外键表,主表也称为主键表,外观,列也称为字段。

所以设计的时候。 在表1中添加外键。 此外键为表2中的学校编号字段。 于是,表1为主表,表2为副表。

你对主从关系的理解颠倒了。 在你的图中,表1确实是主表。 表2是子表,但不是在表1中添加外键,而是在表2中添加外键。 表2中的学校编号字段称为外键,它是表1中学校编号字段的主键。

表1中的学校编号字段可以说是表2中的外键。

外键用于什么

你贴的照片已经说明了。

一张表上记录的数据不要太冗长。 这与软件project的模块化思想稍有相似,只是在数据库中逆结合表关系,尽量将表中记录的数据单一化。 就像你贴的照片一样,把成绩和学生信息放在一个表里太冗长了,成绩完全可以用学生的id作为区分标志。

为什么外键可以保持数据的一致性和完整性

想想看。 您图中第一章的表格被剪切为表1和表2。 表2中的学校编号以表1中的学校编号字段作为外键。 假设不创建外键。 和表1一样,只是简单地设置学号字段。 和制作外键有什么不同呢?

例如,如果表1中的神勇美女学号是20140900001,那么我在表2中插入数据时在学号字段中插入20140900001来记录神勇美女的成绩,不也实现了表的解耦吗?

这里有问题的是。 如果不设置外键。 表2中的学校编号字段与表1中的学校编号字段不相关。 我只是觉得你自己和他们有关。 我不认为数据库里那两个人有关系。 也就是说,在表2的学校编号字段中插入了值。 例如,20140999999 )。 但是,表1中没有这个值。 此时,数据库允许插入。 不检查插入的数据的关系。 但是,在设置外键时。 必须在表1的学校编号字段中找到在表2的学校编号字段中插入的值。

同一时期。 假设删除表1中的学校编号字段。 必须确保表2中没有引用此字段值的列,才能将其删除。

这意味着保持数据的一致性和完整性。 你想。 表2还引用了表1中的某个学校编号,如果删除表1中的这个学校编号,表2就不知道符合该学校编号的学生是哪个学生。

数据完整性包括数据类型的完整性(通过查看以下内容可以看出)。

外键的使用标准

从表中的字段必须与外键类型相同。 分数表stu的类型必须与学生表sid的类型相同,例如int(10 )类型)

外键必须是主表的唯一键。 学生表sid是主键,主键是唯一的。 所以可以作为分数表stu的外键使用)

有相关的字段。 (如上所述,在分数表上使用学生表的sid是因为两者有关联。 分数表记录了学生的分数,学生可以用sid唯一识别。 )

避免使用复合键(即,一般不建议同时从表中引用多个外观字段作为一个外键)。

你的问题

假设表1中有多个外键,则不会出现这种情况。 表2中的多个字段是表1中的外键。 或者,表1中的多个外键位于多个表中。

可以。 表1中的外键不限于表2中的主键,因此可以是唯一键。

例如,表2有主键a,有唯一键b,表1的两个字段a '和b '分别参考表2的a和b。 这就是多对多的关系。 或者,表2主键a、表3的主键b、表1的两个字段a、b分别参照表2的a和表3的b。

外键可以不是表1的主键,但必须是子表的主键。 简而言之。 如果字段是表的外键,则该字段必须是主键。)

因为你从以前就理解错了,所以这句话本身就错了。 从表的角度来看,外键不一定是从表的主键,外键也不一定是外观的主键,并且外观的唯一键可以是从表的外键。

再举一张图帮助理解

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