数据库外键的作用
1. 数据库中外键的概念及作用是什么
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。
外键的作用就是可以让表B是来自表A中,也就是保证了数据的规范性;如果要删除A表中的某个数据,那么首先要删除B表中同样的数据,这保证了数据的完整。
2. 外键的作用
数据库中外键的作用。多多了解这方面的内容,对建立数据库影响还是相当大的,我们应该好好的学习他了解他才能更好的掌握的。
外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。
FOREIGN KEY 约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了,则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。
外键只能引用外表中的列的值!
外键的作用:
保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,就是当你对一个表的数据进行操作,和他有关联的一个或更多表的数据能够同时发生改变。
例如一:
a b 两个表
a表中存有客户号,客户名称
b表中存有每个客户的订单
有了外键后
你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x。
例如二:
例如有两个表
A(a,b) :a为主键,b为外键(来自于B.b)
B(b,c,d) :b为主键
如果我把字段b的外键属性去掉,对编程没什么影响。
如上面,A中的b要么为空,要么是在B的b中存在的值,有外键的时候,数据库会自动帮你检查A的b是否在B的b中存在。
1、外建表达的是参照完整性:这是数据固有的,与程序无关。因此,应该交给DBMS来做。
2、使用外建,简单直观,可以直接在数据模型中体现,无论是设计、维护等回有很大的好处,特别是对于分析现有的数据库的好处时非常明显的--前不久我分析了一个企业现有的数据库,里面的参照完整性约束有的是外键描述,有的是用触发器实现,感觉很明显。当然,文档里可能有,但是也可能不全,但是外键就非常明显和直观。
3、既然我们可以用触发器或程序完成的这个工作(指参照完整性约束),DBMS已经提供了手段,为什么我们要自己去做?而且我们做的应该说没有RDBMS做得好。实际上,早期的RDBMS并没有外键,现在都有了,我认为数据库厂商增加这个功能是有道理的。从这个角度来说,外键更方便。
4、关于方便,根据我带项目的情况来看,程序员确实有反映,主要是在调试时输入数据麻烦:如果数据可以违反参照完整性,那么就是说参照完整性本身就不对名誉业务冲突,此时也不应该用触发期货程序实现;否则,说明数据是错误的,根本就不应该进入数据库!而且,这也应该是测试系统的一个内容:阻止非法数据。实际上,前台程序应该对这种提交失败做出处理。数据是企业的而非程序的,储程序要尽量与数据分离,反之亦然。
3. 数据库中主键和外键是干嘛用的
主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。外键是一个用来建立两个表格之间关系的约束。
建立外键后,在插入数据时候会检测数据在主键表中是否存在,如果不存在则无法插入,通过这可以提高维护数据库的完整性和一致性
简单点儿说
主键是对表的约束,保证数据的唯一性!
外键是建立表于表之间的联系,方便程序的编写!
4. 很菜的数据库问题,主键的值允许重复吗外键什么作用
主键的值不能重复。
外键主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值或使用空值。
主键是用来唯一表示一条数据的值,不能重复的。比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
(4)数据库外键的作用扩展阅读:
数据库中的表必须符合规范,才能杜绝数据冗余、插入异常、删除异常等现象。规范的过程是分解表的过程。经过分解,伺一事物的代表属性出现在不同的表中。显然,它们应该保持一致。
例如,某学生的代表数据是学号012,在学生表里是012,在成绩表里也应该是012。这种一致性由外键实现。外键的功能是:它的值一定是另一个表的主键值。学号在学生表里是主键,在成绩表里是外键。成绩表里的学号一定要是学生表里的学号。
于是,学生表里的学号和成绩表里的学号就一致了。可以直观地理解,外键的功能是实现同一事物在不同表中的标志一致性。
5. 数据库中的外键有用吗
当然有用了.
有两个表.
表1:(存放的是用户资料)
包含3列:id,姓名,性别
表2:(存放的是的成绩)
包含3列:userid,课程,成绩.
外键关系:
表2.userid==表1.id
当你在表2中插入成绩时,数据库会自动检查用户是否在表1中存在.
如果外键有级联删除时删除表1的用户时,会同时自动删除表2的相关数据.
6. 主键和外键的作用
主键和外键的作用:
1、保证实体的完整性,加快数据库操作速度,在表中添加记录时,access会自动检查新记录主键值,不允许该值与主键值重复。access会自动按主键值排序好的显示出来。如果没有约束,则是按照用户输入信息的顺序显示出来。主键不接受空值,约束确保唯一数据。
2、外键保证的是数据的完整性。外键:一组数据的主键是另一组数据的的元素;主键约束了外键所在表中不能存在主键类之外的值;外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,就可以是A表的外键。
(6)数据库外键的作用扩展阅读:
主键和外键的注意事项:
1、主键默认非空,默认唯一性约束,只有主键才能设置自动增长,自动增长一定是主键,主键不一定自动增长;
设置主键的方式:在定义列时设置:ID INT PRIMARY KEY;在列定义完之后设置:primary KEY(id)、
2、只有INNODB的数据库引擎支持外键,修改my.ini文件设置default-storage-engine=INNODB 外键必须与参照列的数据类型必须相同(数值型要求长度和无符号都相同,字符串要求类型相同,长度可以不同)。
设置外键的语法:CONSTRAINT 外键名 FOREIGN KEY (外键字段)REFERENCES 参照表 (参照字段) ON DELETE SET NULL ON UPDATE CASCADE 设置参照完整性。
3、外键约束的参照操作:
RESTRICT拒绝参照表删除或更新参照字段;
RESTRICT和NO ACTION相同,但这个指令只在mysql生效;
CASCADE删除或更新参照表的参照字段时,外键表的记录同步删除更新;
SET NULL 删除或更新参照表的参照字段时,外键表的外键设为NULL。