数据库外键约束?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库外键约束?相关的知识,希望对你有一定的参考价值。

参考技术A

数据库外键约束:这个是实现表与表之间的约束,从表的字段值必须在主表中。存在外键约束毕竟是一个约束,只是保证数据完整性的一个手段。

外键的概念:外键是关系数据库三个完整性的五个约束条件之一,是表与表之间建立的一种关系。在Oracle数据库的scott/tiger用户中,表Dept和Emp通过外键进行了关联。在这里Dept表叫主表,Emp表叫从表,外键是字段Deptno。

加入外键的条件:

1、两个表有相同属性字段,取值范围相同;

2、外键在主表中是主键或者是唯一字段;

3、外键可以是多个字段的组合。

数据库系统本身约束手段是更可靠的。对于开发来说,可能觉得建立外键关系没必要,但是到了以后维护阶段,或升级阶段,如果没有这个关系,可能不利维护工作的提升。表关系的建立,也阐述着具体的业务逻辑关系,增加了可读性。

在逻辑性,关联性比较强的时候不妨添加。其他时候简单的外键约束也是可以的,不需要一有关系就添加,但是要有其他机制保证数据完整性,毕竟外键对于开发有时候还是有限制。总的来说前期开发可以不管,后期维护尽量转移到数据库本身的约束来建立关系。

SQL中如何为表添加外键约束

-〉INDEX
(category_id),

->
FOREIGN
KEY
(category_id)
REFERENCES
categories
(category_id),

->
CONSTRAINT
fk_member
FOREIGN
KEY
(member_id)
REFERENCES
members
(member_id),

->
PRIMARY
KEY(article_id)
范例中的添加外键约束就是这种形式
如果是概念的问题,直接参考书籍,一般添加外键约束,主要在创建表中.
参考技术A Java代码
[CONSTRAINT
<约束名>][FOREIGN
KEY][<列名>]REFERENCES<被参照表名>(<主键列名>)例如
Java代码
--删除外键
alter
table
AdItem
drop
constraint
AdOrder_AdItem_FK1
--增加外键
alter
table
AdItem
add
constraint
AdOrder_AdItem_FK1
foreign
key
(AI_nOrderNo)
references
AdOrder
(AO_nOrderNo)
--不检查约束
alter
table
AdItem
nocheck
constraint
AdOrder_AdItem_FK1
--检查约束
alter
table
AdItem
check
constraint
AdOrder_AdItem_FK1

以上是关于数据库外键约束?的主要内容,如果未能解决你的问题,请参考以下文章

怎么添加外键约束

主键约束,外键约束,空值约束,默认值约束,唯一约束,检查约束的各个作用是啥?

高级c#中三层架构中存在外键约束怎么删除

在SQL中如何创建外键约束?

ORACLE语句怎么删除外键约束,只是删约束,不是删表

有外键约束的表,删除父表的数据,会出现哪几种情况?