子表,父表的定义: 拥有外键的表是子表。主键被其它
表引用的表是父表。
换句话说:因为父表的标识被很多个子表中的记录引用,所以叫父表。
拥有外键关系,并且可以随便删除数据,不影响其它表的数据的那个表叫子表。
使用的时候谁做为谁的外键,主要从以下两点考虑:
1/,删除是如何相互影响的,删除记录受约束的那个是父表,不受约束的那个是子表;
2/,记录必须先存在的是父表;
图
3-4
外键
关于外键、关系以
两种用途:
1/, 最常用的一种: 减少重复数据.表A中拥有外键,表B的数据基本是不允许删除的.这时选择对 INSERT 和 UPDATE 强制关系
即可.
2/,其次,是增加一个从属表. 如果表A删除一条记录时,表B中也随着删除一条相关联的记录,那么外键关系中,表A的主键是表B的外键。这种关系,实际上表B是表A的从属表(即表A是父表),选择对 INSERT 和 UPDATE 强制关系
时,如果向表B中插入数据,表A中必须已经存在对应的记录。选择级联删除相关的字段
时,删除表A中的一条记录,就会删除对应的表B中的一条记录。
参考资料:
1,SQl2000 中 ,设计表>管理关系中 关于外键的5个选项都起什么作用?
创建中检查现存数据
创建关系时将关系应用于外键表中的现有数据。如果选定该对话框,一个错误信息将会通知您有违反约束的数据。
对 INSERT 和 UPDATE 强制关系
如果选择该选项,则只要使用这些语句在外键表中添加或更新数据时都将强制约束。
对复制强制关系
如果选择该选项,则无论何时将外键表复制到一个不同的数据库
,都将强制关系的引用完整性。
级联更新相关的字段
无论何时更新主键值,都指示数据库将新的键值传播到相应的外键字段。
级联删除相关的字段
无论何时删除主表中的行,都指示数据库从外键表中删除相应的行。
2,CASCADE 有 什么作用?
ON DELETE {CASCADE | NO ACTION}
指定当表中被更改的行具有引用关系,并且该行所引用的行从父表中删除时,要对被更改行采取的操作。默认设置为 NO ACTION。
如果指定 CASCADE,则从父表中删除被引用行时,也将从引用表中删除引用行。如果指定 NO ACTION,SQL Server 将产生一个错误并回滚父表中的行删除操作。
如果表中已存在 ON DELETE 的 INSTEAD OF 触发器,那么就不能定义 ON DELETE 的CASCADE 操作。
例如,在 Northwind 数据库中,Orders 表和 Customers 表之间有引用关系。Orders.CustomerID 外键引用 Customers.CustomerID 主键。
如
果对 Customers 表的某行执行 DELETE 语句,并且为 Orders.CustomerID 指定
ON DELETE CASCADE 操作,则 SQL Server 将在 Orders
表中检查是否有与被删除的行相关的一行或多行。如果存在相关行,那么 Orders 表中的相关行将随 Customers
表中的被引用行一同删除。
反之,如果指定 NO ACTION,若在 Orders 表中至少有一行引用 Customers 表中要删除的行,则 SQL Server 将产生一个错误并回滚 Customers 表中的删除操作。
ON UPDATE {CASCADE | NO ACTION}
指定当表中被更改的行具有引用关系,并且该行所引用的行在父表中更新时,要对被更改行采取的操作。默认设置为 NO ACTION。
如果指定 CASCADE,则在父表中更新被引用行时,也将在引用表中更新引用行。如果指定 NO ACTION,SQL Server 将产生一个错误并回滚父表中的行更新操作。
如果表中已存在 ON DELETE 的 INSTEAD OF 触发器,那么就不能定义 ON DELETE 的CASCADE 操作。
例如,在 Northwind 数据库中,Orders 表和 Customers 表之间有引用关系。Orders.CustomerID 外键引用 Customers.CustomerID 主键。
如
果对 Customers 表的某行执行 UPDATE 语句,并且为 Orders.CustomerID 指定
ON UPDATE CASCADE 操作,则 SQL Server 将在 Orders
表中检查是否有与被更新行相关的一行或多行。如果存在相关行,那么 Orders 表中的相关行将随 Customers
表中的被引用行一同更新。
反之,如果指定了 NO ACTION,若在 Orders 表中至少存在一行引用 Customers 表中要更新的行,那么 SQL Server 将引发一个错误并回滚 Customers 表中的更新操作。
3,一个SQL创建外键的例子:
/*建库,名为student_info*/
create database student_info
/*使用student_info*/
use student_info
go
/*建student表,其中s_id为主键*/
create table student
(
s_id int identity(1,1) primary key,
s_name varchar(20) not null,
s_age int
)
go
/*建test
表,其中test_no为主键*/
create table test
(
test_no int identity(1,1) primary key,
test_name varchar(30),
nax_marks int not null default(0),
min_marks int not null default(0)
)
go
/*建marks表,其中s_id和test_no为外建,分别映射student表中的s_id和test表中的test_no*/
create table marks
(
s_id int not null,
test_no int not null,
marks int not null default(0),
primary key(s_id,test_no),
foreign key(s_id) references student(s_id),
foreign key(test_no) references test(test_no)
)
go
分享到:
相关推荐
外键(Foreign Key)则是引用另一个表的主键,用于建立两个表之间的关系,确保数据的一致性和参照完整性。 步骤1:创建概念数据模型(Conceptual Data Model,CDM) 打开PowerDesigner,选择“文件”>“新建”>...
在关系数据库中,外键用于建立和加强两个表之间的联系,确保引用的完整性。本文将详细讲解MySQL中外键的使用及其重要性。 首先,理解外键的定义:外键(Foreign Key)是一个字段,它的值来源于另一个表的主键。这个...
在关系型数据库中,外键是一个字段,它的值来源于另一个表的主键,用于建立和维护两个表之间的关联。级联操作是指当主表中的记录被添加或删除时,根据外键约束,从表的相关记录也会自动进行相应的添加或删除。 在C#...
SQL2005数据库系统是微软公司推出的一款重要的关系型数据库管理系统,对于初学者和专业人士来说,都是一个深入了解数据库管理、查询和优化的良好平台。本课件“SQL2005数据库学习课件 讲解详细”正是针对这一主题,...
本教程旨在帮助初学者及有经验的用户深入理解SQL Server 2000,通过详细讲解与实际操作相结合的方式,让大家能够熟练地建立和管理数据库。 1. **SQL Server 2000概述**:SQL Server 2000是由Microsoft开发的数据库...
### 数据库原理与SQL Server 2021详解...以上是关于数据库原理与SQL Server 2021的详细介绍,涵盖了数据库的基础概念、关系数据库的基本术语、范式理论、E-R模型、SQL Server 2021的新增功能及管理工具等方面的知识点。
SQL Server是一款由微软公司开发的关系型数据库管理系统,广泛应用于企业数据存储、管理和分析。本教程专为初学者设计,旨在帮助你快速掌握SQL Server的基本概念、安装与配置、数据库管理以及查询语言SQL。 1. SQL ...
本篇将详细讲解外键约束的含义、作用以及如何在实际应用中设置。 首先,外键(Foreign Key,简称FK)是一种数据库约束,用于建立并维护两个表之间的关联。它指向另一个表的主键(Primary Key,简称PK),这个“另一...
在SQL Server中,数据以表格形式存储,每个表格称为一个表,表之间可以通过键(如主键和外键)建立关系,形成了关系型数据库的基础。学习SQL Server,首先要理解实体、属性、关系等数据库设计的基本概念。 【安装与...
SQL Server 2000是微软公司推出的一款关系型数据库管理系统,它在企业级数据管理、分析和应用程序开发中扮演着重要角色。本教程通过丰富的图解,使得复杂的数据库概念变得易于理解,非常适合对数据库技术感兴趣的...
接着,教程将带领读者熟悉SQL Server 2000的安装与配置过程,包括服务器的启动、停止以及设置安全性选项,如登录账户、权限管理和角色分配。这部分内容对于确保数据库系统的稳定运行至关重要。 数据库的设计和创建...
此外,还会讲解如何配置SQL Server服务、设置安全选项以及连接到数据库引擎。 2. **数据库设计**:数据库设计是整个应用的基础,本教程将涵盖关系数据库理论,如实体关系模型(ER模型),以及如何使用SQL Server ...
这一章会详细阐述如何安装SQL Server 2000,包括硬件和软件需求、安装选项以及安装过程中的注意事项。同时,也会讲解配置服务器和数据库的步骤,确保系统能够正常运行。 第三章:数据库和表的管理 本章将深入讨论...
本教程将详细讲解如何在SQL Server 2005中进行这些操作,并通过两个实际的例子来展示如何设置关系、主键、约束和默认值。 首先,我们来创建一个新的数据库。在SQL Server Management Studio (SSMS) 中,选择“对象...
以下将详细讲解SQL Developer的一些核心功能和操作技巧。 1. **创建SQL脚本文件** - **方法一**:在SQL Developer的“文件”菜单中,选择“新建”>“SQL脚本”,即可创建一个新的SQL编辑窗口,然后在此窗口中编写...
2. 关系数据库:详细讲解关系理论,包括实体、属性、键、外键等概念,以及第一范式(1NF)、第二范式(2NF)和第三范式(3NF)等规范化原则。 3. SQL语言:SQL(Structured Query Language)是用于管理和处理关系...
- **建立数据库时的选项:** 设定数据库参数。 - **设计数据库:** 规划数据库结构。 - **建立数据字典:** 管理数据库元数据。 - **建立关键字段:** 定义主键、外键等。 - **CREATETABLE语句:** 创建新表。 - **...
2. 安装与配置:详述SQL Server 2000的安装步骤,包括硬件需求、软件环境配置、安装选项选择以及服务器的启动与停止。 3. 数据库管理:讲解如何创建、修改和删除数据库,理解数据库文件的类型(如MDF、NDF、LDF)...
《SQL Server实例大全》是一本全面讲解SQL Server数据库管理系统的实用教程,包含了各种实际操作案例,旨在帮助读者深入理解和熟练掌握SQL Server的核心功能。通过丰富的实例和详尽的注释,本书旨在提升读者在数据库...