外键约束保证参照完整性。外键约束限定了一个列的取值范围。一个例子就是限定州名缩写在一个有限值集合中,这个值集合是另外一个控制结构——一张父表
下面我们创建一张参照表,它提供了完整的州缩写列表,然后使用参照完整性确保学生们有正确的州缩写。第一张表是州参照表,State作为主键
CREATE TABLE state_lookup
(state VARCHAR2(2),
state_desc VARCHAR2(30)) TABLESPACE student_data;
ALTER TABLE state_lookup
ADD CONSTRAINT pk_state_lookup PRIMARY KEY (state)
USING INDEX TABLESPACE student_index;
然后插入几行记录:
INSERT INTO state_lookup VALUES ('CA', 'California');
INSERT INTO state_lookup VALUES ('NY', 'New York');
INSERT INTO state_lookup VALUES ('NC', 'North Carolina');
我们通过实现父子关系来保证参照完整性,图示如下:
--------------- 外键字段存在于Students表中
|State_lookup | 是State字段
--------------- 一个外键必须参照主键或Unique字段
| 这个例子中,我们参照的是State字段
| 它是一个主键字段(参看DDL)
/|\
---------------
| Students |
---------------
上图显示了State_Lookup表和Students表间一对多的关系,State_Lookup表定义了州缩写通用集合——在表中每一个州出现一次。因此,State_Lookup表的主键是State字段.
State_Lookup表中的一个州名可以在Students表中出现多次。有许多学生来自同一个州,一次,在表State_Lookup和Students之间参照完整性实现了一对多的关系。
外键同时保证Students表中State字段的完整性。每一个学生总是有个State_lookup表中成员的州缩写。
外键约束创建在子表。下面在students表上创建一个外键约束。State字段参照state_lookup表的主键.
1、创建表
CREATE TABLE students
(student_id VARCHAR2(10) NOT NULL,
student_name VARCHAR2(30) NOT NULL,
college_major VARCHAR2(15) NOT NULL,
status VARCHAR2(20) NOT NULL,
state VARCHAR2(2),
license_no VARCHAR2(30)) TABLESPACE student_data;
2、创建主键
ALTER TABLE students
ADD CONSTRAINT pk_students PRIMARY KEY (student_id)
USING INDEX TABLESPACE student_index;
3、创建Unique约束
ALTER TABLE students
ADD CONSTRAINT uk_students_license
UNIQUE (state, license_no)
USING INDEX TABLESPACE student_index;
4、创建Check约束
ALTER TABLE students
ADD CONSTRAINT ck_students_st_lic
CHECK ((state IS NULL AND license_no IS NULL) OR
(state IS NOT NULL AND license_no is NOT NULL));
5、创建外键约束
ALTER TABLE students
ADD CONSTRAINT fk_students_state
FOREIGN KEY (state) REFERENCES state_lookup (state);
分享到:
相关推荐
本文中主要介绍了传统数据库没有物联网的速度基因,时序数据库的数据存储设计,时序数据库编程语言之争,时序数据库整合趋势明显等相关内容。本文来自csdn,由火龙果软件Anna编辑、推荐。而且“增删改查”是传统...
N11数据库管理工具是一款专为Windows 10操作系统设计的高效、易用的数据库管理应用,它提供了全面的功能,帮助用户轻松管理和操作各种类型的数据库。N11数据库工具不仅适用于初学者,也适合有一定数据库管理经验的...
KingbaseDTS数据库迁移工具KingbaseDTS数据库迁移工具KingbaseDTS数据库迁移工具KingbaseDTS数据库迁移工具KingbaseDTS数据库迁移工具KingbaseDTS数据库迁移工具KingbaseDTS数据库迁移工具KingbaseDTS数据库迁移工具...
Excel VBA与数据库整合应用范例精讲(范例文件代码) 内容简介 《Excel VBA 数据库整合应用范例精讲》用180个实例介绍了利用Excel VBA来操作数据库(包括Access、SQL Server和FoxPro)的实用方法和技巧。 全书共11章...
tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份...
Oracle数据库课程设计医院系统数据库源代码。包含Java代码和SQL语句。源码中默认使用的数据库为运行的Oracle数据库 如需修改,在java源码/database.propertie中修改即可!Oracle数据库课程设计医院系统数据库源代码...
神通数据库驱动jar,Java 连接神通数据库驱动包(亲测有效)神通数据库驱动jar,Java 连接神通数据库驱动包(亲测有效)神通数据库驱动jar,Java 连接神通数据库驱动包(亲测有效)神通数据库驱动jar,Java 连接神通...
中国高校数据库是一个专门为UCHome等社交网络平台设计的数据库资源,包含了丰富的中国高等教育机构的数据信息。这个数据库的主要目的是为了提供一个全面、准确的高校信息源,以便用户在社区环境中进行交流、分享和...
《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle...
腾讯云数据库mysql产品认证答案涵盖了mysql数据库、腾讯云、云数据库、mysql数据库认证和腾讯云云数据库产品等方面的知识点,是一份非常重要的认证考试答案,能够帮助考生更好地掌握mysql数据库管理和维护知识。
Activiti 适配达梦数据库教程 activiti 是一个开源的 Workflow 和 BPM system,它提供了强大的工作流引擎和业务流程管理功能。然而,activiti 默认支持的数据库只有 MySQL、 PostgreSQL、Oracle 等少数几种,而达梦...
数据库系统是计算机科学中的核心课程,它涉及到数据的组织、存储和检索,是信息系统和软件开发的基础。本套"数据库系统概论电子版课件"是针对计算机专业学生设计的入门教程,适合作为学校课程教材,帮助学生系统地...
在使用采用sqlserver作为数据库的大型软件,因断电、异常操作、磁盘物理坏道等引起的数据库出现“置疑”标志,可以通过这个工具快速修复。 这个工具的原理很简单:新建同名数据库,然后用出现质疑的数据库数据文件...
本工具用于对比SQL数据库,以源数据库为标准 数据库, 然后拿目标数据库与标准数据库比较,如果目标数 据库少 了表,或少了字段,或字段类型长度不一样,或索引 不一样, 或存储过程,视图,触发器,默认值等不一样,就产生 ...
汽车品牌车系车型sql数据库.zip汽车品牌车系车型sql数据库.zip汽车品牌车系车型sql数据库.zip汽车品牌车系车型sql数据库.zip汽车品牌车系车型sql数据库.zip汽车品牌车系车型sql数据库.zip汽车品牌车系车型sql数据库....
数据库系统概念 (本科教学版·原书第7版) 数据库领域的殿堂级作品。夯实数据库理论基础,修炼数据库技术内功的之选。对深入理解数据库,深人研究数据库,深入操作数据库都具有极强的指导作用! 《数据库系统概念》...
iH实时数据库安装与维护 iH实时数据库是一种高性能、实时数据处理的数据库管理系统,广泛应用于工业自动化、物联网、智能制造等领域。本文将详细介绍iH实时数据库的安装、维护、客户功能等方面的知识点。 一、iH...
在IT行业中,数据库管理系统(DBMS)的选择对任何应用程序的性能和稳定性至关重要。Nacos作为一个流行的微服务管理和配置中心,通常会与常见的数据库如MySQL、Oracle等进行集成。然而,对于国内用户,尤其是那些需要...
神通数据库帮助手册是一份全面介绍神通数据库操作和管理的资源集合,涵盖了多个关键领域,包括SQL语言、数据库备份与恢复、读写分离集群、数据库审计、数据库进程守护以及数据库接口。下面将对这些主题进行详细阐述...
软件数据库设计文档模板 software database design report document" 在软件开发项目中,数据库设计是非常重要的一步骤,它直接影响到软件系统的性能、安全性和可维护性。本文档提供了一份软件数据库设计文档模板...