想问一下数据库设置外键约束的主要目的

我想问一下,设置外键约束的主要目的是什么,不设这个约束也可以用sql语句链接两个表,我有点晕,能举个简单例子说下吗,我是初学者。呵呵... 我想问一下,设置外键约束的主要目的是什么,不设这个约束也可以用sql语句链接两个表,我有点晕,能举个简单例子说下吗,我是初学者。呵呵 展开
 我来答
glunmer
推荐于2017-11-23 · TA获得超过117个赞
知道答主
回答量:67
采纳率:0%
帮助的人:57.4万
展开全部
外键是该表是另一个表之间联接的字段
外键必须为另一个表中的主键
外键的用途是确保数据的完整性。它通常包括以下几种:
实体完整性,确保每个实体是唯一的(通过主键来实施)

域完整性,确保属性值只从一套特定可选的集合里选择

关联完整性,确保每个外键或是NULL(如果允许的话)或含有与相关主键值相配的值

例子:
表A 字典表, 表B 业务表。
外键应建立在表B 上 。
1、表B 的字典项目的代码只能是表A 中代码内容。
2、表B 可以无条件删除记录。
3、表A 在删除的时候,将根据外键的规则,判断表B 中是否使用了要删除数据的代码,如果有引用,则不能删除。

ORACLE 如何建立表外键
例:学生表student (id, name , sex )
成绩表score (id ,math )
如何创建表,要求 有主键,有约束 解: CREATE TABLE STUDENT(ID CHAR(10), NAME VARCHAR(8),SEX CHAR(1));
ALTER TABLE STUDENT ADD CONSTRAINT PK_STUDENT PRIMARY KEY(ID);
CREATE TABLE SCORE( ID CHAR(10),MATH NUMBER(5,2));
ALTER TABLE SCORE ADD CONSTRAINT FK_SCROE FOREIGN KEY(ID) REFERENCES STUDENT(ID);
* 主键与外键: 键是表中的列(可以是一列,也可以是几列),主键用于唯一的标识表中的数据项;外键用于连接父表和子表。而所谓的父表和子表是根据3NF 范式的要求,为了消除传递依赖,将原表拆成2个相互关联的表,而这个关联就是外键。
刹那轻狂
2010-01-26 · TA获得超过273个赞
知道小有建树答主
回答量:212
采纳率:100%
帮助的人:177万
展开全部
我们现在用的基本上都是关系数据库 那么外键约束就是把数据库中独立的表之间建立关系、关联 复合软件工程思想...这我我个人的理解 下面是给你找的资料~~~
----------------------分割线--------------------------
外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。
FOREIGN KEY 约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了,则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。
外键是用来控制数据库中数据的数据完整性的
就是当你对一个表的数据进行操作
和他有关联的一个或更多表的数据能够同时发生改变
这就是外键的作用

参考资料: http://hi.baidu.com/gun2008/blog/item/3d2be2d337ad73d4a8ec9a1b.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tale12
2010-01-26 · TA获得超过551个赞
知道小有建树答主
回答量:1158
采纳率:0%
帮助的人:716万
展开全部
没啥用处,就是用来限制数据的。如果连表操作错误,可以及时发现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
妄玩创想
2010-01-26 · 射频信号多机测试解决咨询
妄玩创想
采纳数:434 获赞数:1169

向TA提问 私信TA
展开全部
tab1里面有字段ss
ss下有3个值1,2,3
如果tab2的字段dd设置ss为外键约束,则dd字段里面只会出现值1,2,3
如果出现其它值,则会出错.
要想tab2中出现其他值,首先得先在tab1里面有.
你现在可以发挥你的想象力了,起始可以用在很多方面的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lijieyahoo
2010-01-26 · TA获得超过717个赞
知道小有建树答主
回答量:980
采纳率:0%
帮助的人:416万
展开全部
用外键是为了限制两张表的某些字段必须有关联,不至于出现逻辑错误。
比如说
姓名表的字段 id name[姓名] classid[班级id]
班级表 id name[班级名]

班级表的id就是姓名表classid的外键。
classid的值必须在班级表中纯在,学生中该有班级把。
比如说班级表里有 一年级,二年级·····
你不可能让classid的值等于学前班吧····
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式