外键

外键是在从表里设置还是在主表里设置的

 

首先我要说的是外键是在从本表 也就是你说的表里设置的.
主外键肯定是有联系的,因为如果你建了两张表
Student_info和Student_numeric
学生信息表和学生成绩表
现在说如果有个学生不读书了 我们就肯定要在学生信息表里删除这个学生的信息,在学生信息表里面,包括他的 ID , Name , Adderss 等的信息,就是说在学生信息表里面删除这个学生,那么在学生成绩表里面呢,这个学生不存在了,在学生成绩表里面还有这个学生的成绩,肯定是不行的,肯定要级联的删除了,这里就要用到级联删除了,否则就说不过去了.

还有就是用主外键可以使各个表连接起来而不至于是零散的,你如果用的是SQLServer的话在企业管理器里的视图里就可以看到他们的关系了,整个表是连接起来的 一看就把各个表之间的关系搞清楚了.

 

 

外键是用来控制数据库中数据的数据完整性的
就是当你对一个表的数据进行操作
和他有关联的一个或更多表的数据能够同时发生改变
这就是外键的作用

 

外键属性当然是可以去掉的,如果你不想再用这种约束,对编程当然不会有什么影响,但相应的录入数据的时候就不对录入的数据进行“参照完整性”检查了。  

例如有两个表

A(a,b) :a为主键,b为外键(来自于B.b)

B(b,c,d) :b为主键   

如果我把字段b的外键属性去掉,对编程没什么影响。

如上面,A中的b要么为空,要么是在B的b中存在的值,有外键的时候,数据库会自动帮你检查A的b是否在B的b中存在。

1、外建表达的是参照完整性:这是数据固有的,与程序无关。因此,应该交给DBMS来做。

 

 

 

如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了.

 

则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了        FOREIGN KEY 约束防止这种情况的发生.

 

 

如果主键表中数据的更改使之与外键表中数据的链接失效(即上面的数据孤立了的情况),则这种更改(删除)是不能实现的,从而确保了引用完整性。

 

 

如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值(即上表中的主键)相关,则该操作不可实现

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值