想问一下数据库设置外键约束的主要目的
我想问一下,设置外键约束的主要目的是什么,不设这个约束也可以用sql语句链接两个表,我有点晕,能举个简单例子说下吗,我是初学者。呵呵...
我想问一下,设置外键约束的主要目的是什么,不设这个约束也可以用sql语句链接两个表,我有点晕,能举个简单例子说下吗,我是初学者。呵呵
展开
展开全部
外键是该表是另一个表之间联接的字段
外键必须为另一个表中的主键
外键的用途是确保数据的完整性。它通常包括以下几种:
实体完整性,确保每个实体是唯一的(通过主键来实施)
域完整性,确保属性值只从一套特定可选的集合里选择
关联完整性,确保每个外键或是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个相互关联的表,而这个关联就是外键。
外键必须为另一个表中的主键
外键的用途是确保数据的完整性。它通常包括以下几种:
实体完整性,确保每个实体是唯一的(通过主键来实施)
域完整性,确保属性值只从一套特定可选的集合里选择
关联完整性,确保每个外键或是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个相互关联的表,而这个关联就是外键。
展开全部
我们现在用的基本上都是关系数据库 那么外键约束就是把数据库中独立的表之间建立关系、关联 复合软件工程思想...这我我个人的理解 下面是给你找的资料~~~
----------------------分割线--------------------------
外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。
FOREIGN KEY 约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了,则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。
外键是用来控制数据库中数据的数据完整性的
就是当你对一个表的数据进行操作
和他有关联的一个或更多表的数据能够同时发生改变
这就是外键的作用
----------------------分割线--------------------------
外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。
FOREIGN KEY 约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了,则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。
外键是用来控制数据库中数据的数据完整性的
就是当你对一个表的数据进行操作
和他有关联的一个或更多表的数据能够同时发生改变
这就是外键的作用
参考资料: http://hi.baidu.com/gun2008/blog/item/3d2be2d337ad73d4a8ec9a1b.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没啥用处,就是用来限制数据的。如果连表操作错误,可以及时发现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
tab1里面有字段ss
ss下有3个值1,2,3
如果tab2的字段dd设置ss为外键约束,则dd字段里面只会出现值1,2,3
如果出现其它值,则会出错.
要想tab2中出现其他值,首先得先在tab1里面有.
你现在可以发挥你的想象力了,起始可以用在很多方面的
ss下有3个值1,2,3
如果tab2的字段dd设置ss为外键约束,则dd字段里面只会出现值1,2,3
如果出现其它值,则会出错.
要想tab2中出现其他值,首先得先在tab1里面有.
你现在可以发挥你的想象力了,起始可以用在很多方面的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用外键是为了限制两张表的某些字段必须有关联,不至于出现逻辑错误。
比如说
姓名表的字段 id name[姓名] classid[班级id]
班级表 id name[班级名]
班级表的id就是姓名表classid的外键。
classid的值必须在班级表中纯在,学生中该有班级把。
比如说班级表里有 一年级,二年级·····
你不可能让classid的值等于学前班吧····
比如说
姓名表的字段 id name[姓名] classid[班级id]
班级表 id name[班级名]
班级表的id就是姓名表classid的外键。
classid的值必须在班级表中纯在,学生中该有班级把。
比如说班级表里有 一年级,二年级·····
你不可能让classid的值等于学前班吧····
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |