Oracle外键

在Oracle数据库中,外键是用来实现參照完整性的方法之中的一个。打个比喻。外键是指定义外键的表的列的值必须在还有一个表中出现。

被參照的表称之为父表(parent table),创建外键的表称之为子表(child table)。子表中的外键关联了父表中的主键。

外键能够在创建表时定义或者通过ALTER TABLE语句创建。

外键(FK)是用于建立或加强两个表数据之间的链接的一列或多列。

在我们使用主键全局唯一标识符的记录时,我们就可以在我们要找数据的表那里确认我们需要寻找的数据。

例如:

我要在employees表里来确认员工的信息:

    我还可以在departments表里来确认部门的信息:

    但是我们要如何去确定employees表中的随便一条信息呢,比如id = 200的员工他属于那个部门呢?

扫描二维码关注公众号,回复: 6171113 查看本文章

    因为一个部门可以容纳很多个员工,所以在Oracle关系模型中,这种关系又被称为“一对多”,即一条部门对应多个员工。

    为了表达这种一对多的关系,我要在employees表中加入department_id,让他的值和departments表中的其中一条数据联系上。

    这样,我们就可以通过department_id这个列确定employees表的某一天数据对应departments表的那一条数据。

 

    在employees表中,通过department_id字段可以把数据与另一张表关联起来,这种列称为外键。

外键并不是通过列名实现的,而是通过定义外键约束实现的:

外键约束的名称可以任意,FOREIGN KEY(department_id)指定了department_id作为外键,REFERENCES DEPARTMENTD(department_id)指定了这个外键将关联到departments表的department_id列(即departments表的主键)。

 

通过定义外键约束,关系数据库可以保证无法插入无效的数据。即如果departments表不存在department_id=99的记录,employees表就无法插入department_id=99的记录。

 

因为外键约束会降低数据库的性能,所有呢,大部分互联网公司为了用户体验,通常都不会去并设置外键约束,而是靠自身应用程序逻辑的的正确性来使用。这种情况下,department_id仅仅是一个普通的列,只是它起到了外键的作用而已。

 

要删除一个外键约束,也是通过ALTER TABLE实现的

注意:删除外键约束并没有删除外键这一列。删除列是通过DROP FOREIGN KEY实现的。

猜你喜欢

转载自blog.csdn.net/u012289399/article/details/89194523