SQL Server 2000数据库中实现数据参照完整性的方法分析

合集下载

SQL_Server_2000_5

SQL_Server_2000_5
特点: 程序化数据完整性可以通过相关的程序语言及
工具在客户端或服务器端实施。 使用存储过程或触发器来实施程序化数据完整 性。
实施数据完整性方法比较 方法 约束 默认值 规则 触发器 影响 依存于表的定义,性能最好 独立的数据对象,可以绑定一个或 多个表 独立的数据对象,可以绑定一个或 多个表 依存于表的定义,提供级联和复杂 的应用程序功能,可以撤销事务 功 开 事务 能 销 前后 中 低 前 中 中 低 中 高 高 前 前 后
(1)主键约束 主键约束是指表的一列或几列的组合在表中 具有唯一性,即可以唯一地标识表的一条记 录。一个表中可以有一个以上的列组合,这 些组合可以唯一标识表中的行,每个组合就 是候选键。数据库管理员从候选键中选一个 作为主键。
主键的要求: 一个表中不能有两行包含相同的主键值 不能在主键的任何列中输入NULL值 每个表都应有一个主键 IMAGE和TEXT类型的列不能作为主键
创建外键
CONSTRAINT constraint_name FOREIGN KEY(Colunm1, Colunm1,……) REFERENCES erf_table(ref_column1, ref_column1,……) ON FILEGROUP
例3
(3)唯一性约束 唯一性约束指定一个或多个列的组合值具有 唯一性,以防止在列中输入重复的值,通过 唯一性约束实施数据完整性。 主键具有唯一性,所以主键不能实施唯一性 约束。 一个表可以定义多个唯一性约束,但只能定 义一个主键约束。 唯一性约束的列可以为NULL,但是不允许一 行以上的值为NULL。
例9
sp_unbindrule 'tt.xb' GO DROP RULE r_xb

第九讲实现SQL Server 2000数据完整性

第九讲实现SQL Server 2000数据完整性

在企业管理器中删除规则
选取该规则, 右键/删除
删除规则
删除规则 前必须 解绑规 则。可 以在属 性窗口 中删除 掉已绑 定的规 则。如 不先解 绑,则 系统会 报错。 如右图 所示。
比较规则与CHECK约束
请大家自己看教材P146比较规则与CHECK约束的联 系与区别。
使用默认


默认与规则一样,也 是一种数据库对象。 如右图。 默认也有创建,绑定, 解绑,删除,其操作 类似于规则的操作。 所以课堂上不再讲解, 请大家自己来练习。
CREATE TABLE 系 (系部代码 char(2) CONSTRAINT ix_xbmc UNIQUE, 系部名称 char(30), 系主任 char(8))
约束的创建
约束的创建
创建检查约束 使用企业管理器创建:在表设计器中,选取该字段,右 键选取“CHECK约束”(如下页图) ♦使用SQL 语句创建
完整性的类型

实体完整性 域完整性 参照完整性 用户定义的完整性
完整性的类型



实体完整性 实体:表中的记录,一个实体就是指表 中的一条记录。 实体完整性:在表中不能存在完全相同 的记录,且每条记录都要具有一个非空 且不重复的主键值。 实现实体完整性的方法:设置主键、惟 一索引、惟一约束、指定IDENTITY属性
请自己完成创建表指定外键 的语句
返回
约束的创建
返回上一页
查看约束的定义
一、使用企业管理器查 看约束信息
1在表设计器的窗口中可 以查看主键、空值、默认 值约束信息 2在右键/属性中可以查 看外键约束、CHECK约 束。
二、使用系统存储过程 查看约束信息 EXEC sp_help EXEC sp_helptext

数据库SQL Server 2000实验报告

数据库SQL Server 2000实验报告

数据库原理及应用实验报告实验题目:定义表和数据库的完整性和表数据的插入,修改和删除系:经济学班级:、、、、、、、、、、学号:、、、、、、、、、、、姓名:、、、、、、、、任课教师:、、、、、、、、、、时间:2012年11月一、实验目的(1)了解SQL Server 2000的基本数据类型,空值的概念,以及表的结构特点。

(2)学会使用T-SQL语句和企业管理器创建表结构和修改表结构。

(3)学会使用SQL Server 2000提供的数据完整性功能,并在创建表是定义表的数据的完整性。

通过实验进一步理解数据完整性的概念和分类。

(4)掌握使用T-SQL语句和企业管理器对数据表进行插入,修改和删除数据的操作,并体会数据完整性约束的作用,加深对数据完整性及其约束的理解。

通过本实验,要熟练掌握INSERT,UPDATE,DELETE语句和使用方法。

二、实验环境装有SQL Server 2000的实验机。

三、实验前准备1.要明确能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。

2.创建数据库必须要确定数据库名、所有者、数据库大小和存储数据的文件。

3.确定数据库包含哪些表以及包含的各表的结构并且弄明白各表之间的关系。

还要了解SQL Server 的常用数据类型,以创建数据库的表。

4.了解常用的创建数据库和表的方法。

企业管理器创建和语句创建都要会。

5 .要会进行数据的插入、删除、修改的操作方法。

四、实验内容(1)用企业管理器在数据库中创建名称为“020李”的数据库,在其中创建学生表student,课程表course,学生选课表sc,根据课本中的表结构创建后,如下图所示Student表Sc表Course表(2)用T-SQL语句在“020李”数据库中创建客户基本信息表customers,货品信息表goods,订单信息表orders,它们定义如下:create table customers(customerID int identity(1,1) primary key,Cname varchar(8) not null,address varchar(50),city varchar(10),tel varchar(50),birthday datetime,type tinyint default 1);create table goods( goodsid int constraint C1 primary key, goodsname varchar (20)not null,price money ,description varchar(200),storage int,provider varchar(50),Status tinyint default(0));create table orders(orderid int identity(1,1) constraint c2 primary key ,goodid int not null references goods(goodsid) on delete cascade,customerid int not null foreign key(customerid)references customers (customerid) on delete no action,quantity int not null constraint c3 check(quantity>0),ordersum money not null,orderdate datetime default(getdate())); customers表Goods表Orders表(3)、使用SQL语句在SPJ数据库中创建第2章习题10中的四张表;供应商表S,零件表P、项目表J和供应情况表SPJ,数据类型自行设计,注意同时定义主键、外键和其他的数据完整性。

SQL server2000的使用 参照完整性

SQL server2000的使用  参照完整性
参照完整性
外键的约束
参照完整性
是一个在两张表上的约束条件,要求在一 张表中某些列的取值要受到另一张表中某 些列值的限制,换句话讲,一张表中列的 取值要参照另一张表中的列值。参照完整 性是通过外键实现的。如果成绩表中含有 与学生基本表的主键(学号)相对应的列, 则称这个学号是成绩表的外键。参照完整 性的意义在于成绩表中学号取值只能是在 学生表中学号的取值范围。
在成绩表中[学号] 例:在成绩表中[学号]列上建立外键的作用
当往成绩表中插入数据时,[学号] 当往成绩表中插入数据时,[学号]列的取值要来自 学生基本表中学号值,也就是说,成绩表学号取 值要参照学生基本表中学号值。如下图:(插入 限制) 学号 X101 X10之前 一定要到学生基本表中查看一下,查看所 插入的学号是否为学生基本表中已经存在 的学号值。这非常符合现实生活,一个学 校的学生必然要属于这个学校的注册生, 才有资格选课学习且拥有成绩表。 当要删除学生基本表中数据时,首先要 检查成绩表中没有要删除的学号对应的数 据行,则可以删除学生基本表中数据行。 如果在成绩表中还有要删除的学号对应的 数据行,则需要明确判定如何操作,一般 是不允许删除。如下图所示:(删除限制)
学生基本表
成绩表
学号 X101 X102 X103 X104
学号 没有 学号 为 X104 的数 据
删除操作成功!
学生基本表 学号 X101 X102 X103 X104
删除操作失败!
成绩表
学号 存在学 号为 X104的 X104的 数据
正确删除次序是首先删除或修改成绩表中学 号为X104的所有数据行,然后再到学生基 号为X104的所有数据行,然后再到学生基 本表中删除学号X104的数据行。 本表中删除学号X104的数据行。

第6章 SQL Server 2000 数据完整性

第6章 SQL Server 2000 数据完整性

[EXECUTE] sp_bindrule ’规则名 称’,’表名.字段名’|’自定义 数据类型名’
3. 解绑规则
[EXECUTE] sp_unbindrule ’表名.字 段名’|’自定义数据类型 名’
4. 删除规则 DROP RULE 规则名称[,…n]
第六章
6.6.2使用企业管理器管理规则
(3)在弹出的“索引/键”属性对话框 中,选择“索引/键”选项卡,单击“新 建”按钮,然后在“索引名”文本框中 输入唯一约束的名称,再从列名选项下 拉框中选择字段名称(本例为“系部名 称”),最后选择“创建UNIQUE”复选框 和“约束”单选框,如图6.8。 (4)单击“关闭”按钮,关闭对话框, 完成唯一约束的创建。这个时候,不只 是该表的主键必须为唯一,并且被设置 成为唯一约束的字段同样必须为唯一。
第六章
2. 规则的绑定和解绑
将创建好的规则绑定到某列或将规则 从某列解绑都是在“规则属性”对话 框中完成的,步骤如下: (1)打开企业管理器,展开到数据库 节点; (2)单击规则图表,在右方打开规则 详细信息,右击需要绑定或解绑的规 则,在弹出的快捷菜单中选择“属性” 打开属性对话框,如图6.18;
第六章
2. 使用SQL语句创建检查 约束
使用SQL语句在创建表的同时创建 检查约束,如下例: 【例6.4】利用SQL语句创建“课 程”表,并且在创建的同时,创建 检查约束,使学分字段被约束在1至 7之间。程序清单如下:
USE student GO
CREATE TABLE 课程
(课程号 int PRIMARY KEY,
(2)在表设计器中,选择需要设为 主键的字段,如果需要选择多个字 段时,请按住Ctrl再选择其他列。 (3)选择好后,用鼠标右击该字 段,从弹出的菜单中选择“设置主 键”如图6.2, (4)执行完命令后,在该列前面会 出现钥匙图样,说明主键设置成功

数据完整性在SQL SERVER中的实现(自己做的)

数据完整性在SQL SERVER中的实现(自己做的)

(6)例: CREATE TABLE S_B (学号 CHAR(5), 书号 CHAR(5), 借阅时间 DATATIME, 归还时间 DATATIME, CONSTRAINT P_Y PRIMARY KEY (学号, 书号))
1)列级、表级区别:
在列级定义同时定义的约束称为列级完整性约束定义; 作为表的独立的一项定义的完整性约束称为表级完整性 约束。 如果完整性约束涉及到该表的多个属性列,必须定义在 表级上,否则既可以定义在列级也可以定义在表级。 简而言之: 列级约束:列级约束是行定义的一部分,只能应用于一 列上。 表级约束:表级约束是独立于列的定义,可以应用在一 个表中的多列上
4、用户定义的完整性
(1)用户定义的完整性是应用领域需要遵守 的约束条件,其允许用户定义不属于其他任何 完整性分类的特定业务规则。所有的完整性类 型都支持用户定义完整性。
(2)常见的实现机制: 规则(Rule)、创建数据表时所有约束 (Constraint)、触发器(Trigger)、存 储过程(Stored Produre)
2、参照完整性
(1)参照完整性是指在两个表的主码和外码之 间数据的完整性,含义包括: 参照完整性保证被参照表和参照表之间 数据的一致性 可以防治数据丢失或者无意义的数据 可以禁止在从表中插入被参照表中不存 Байду номын сангаас的关键字的记录
(2)定义FOREIGN KEY 约束
语法: Create table myTB1 ( id nvarchar(32) not null primary key, name nvarchar(32), foreign key(id) references myTB(id) )
(3)定义D EFAULT 约束

详解sql中的参照完整性(一对一,一对多,多对多)

详解sql中的参照完整性(一对一,一对多,多对多)

详解sql中的参照完整性(⼀对⼀,⼀对多,多对多)⼀、参照完整性参照完整性指的就是多表之间的设计,主要使⽤外键约束。

多表设计: ⼀对多、多对多、⼀对⼀设计1.⼀对多关联主要语句:constraint cus_ord_fk foreign key (customer_id) REFERENCES customer(id)创建客户表——订单表⼀个客户可以订多份订单,每份订单只能有⼀个客户。

-- 关联(1对N)create table customer(id int PRIMARY KEY auto_increment,name varchar (20) not null,adress varchar (20) not null);create table orders(order_num varchar(20) PRIMARY KEY,price FLOAT not NULL,customer_id int, -- 进⾏和customer 关联的字段外键constraint cus_ord_fk foreign key (customer_id) REFERENCES customer(id));insert into customer(name,adress) values("zs","北京");insert into customer(name,adress) values("ls","上海");SELECT * from customer;INSERT INTO orders values("010",30.5,1);INSERT INTO orders values("011",60.5,2);INSERT INTO orders values("012",120.5,1);SELECT * from orders;notice: constraint: 约束的意思。

SQL Server2000在数据规划过程中的数据完整性实现

SQL Server2000在数据规划过程中的数据完整性实现
在 S QL
Se
v r
e r

其 简便 的操 作 强 大 的功能 成 为 了很 多 数 据 库 开 发初学 者
的首选 工 具

但 是 大 多 数初 学 者 使 用 S QL

Se
r v e r
200 0


2000

中强 制域完 整 性 的方 法 有很 多 常

建数据库 和 表 的 时候 会 遇 到


实 体完 整性 的定 义 比 较 简单 可 以 通 过 在 建 立 表 的 时

候指 定 主 键
1 1

( P R IMA R Y KE Y
) 来 完 成 也 可 以 在 创建 表 以

域完整 性

后 通 过 创 建表 的 U NI QU E 约 束来 进 行


只 是在 定义 的时候
MA R Y
M Y) 但是可 以没有 U IU , N Q E约束 。如果一张表中定义了 U IU N Q E约束或者主键 ( R MA Y M Y , 么就 不能在定 P I R )那 义了 U I ̄ 约束或主键 (  ̄M R E 的行上定 义其 NQ P A Y K Y) 他的 U IU NQ E约束或主键 (  ̄MA Y M Y 。 P R ) 13 引用完整性 .
y s te
m


gr a lity

t ic
o
le br ie f y in l f the
s e
duc
e s
ho w
th e
s
to u s e
r e s s e
tr a in s
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

外键约束 、 触发器来保证数据的参照完整性。 关键词 S L evr00 数据完整性 参照完整性 外键约束 触发器 Q re 0 S 2
中图 分 类号 T 3 1 3 P 1. 2 1 文献 标 识 码 A 文章编号 1 13— 6 4 0 1 0 5 1
Th t f r nilne ryo ay i e Daa Re e e t t g i f aI t An lssi SQLSev r 0 0 Daa a e n re 0 t b s s 2
gvsa xm l t a a z o h Q e e 0 0 e srsrf e t neryo a ho g efri e i nea pe o n yehw teS L sr r2 0 nue e rn a itgi f t tru ht o g ky e l v e i l t da h en
一 首先创建用户数据库
商品销售
g o
dle货品表 et e we hr 品名称 = 蒙牛小利乐枕高钙牛奶 ’ e货 ’ 由于对货 品表进行修 改或删除记录的货品 “ 蒙牛小利乐枕 高钙牛奶” 已经被提货表所引用 , 即提货表 中存在“ 蒙牛小利乐
枕高钙牛奶” 的货 品记 录 , 外键 定义中的关键词 0 e t n - 1dle o c q e a tno p ae o c o 决 定对于货品表 中这样 的记 录是不允许 i nu dt n t ne ea

故上述两种操作不 能执行。 如果外键定 货品名称 vrhr4 )N TNU LP I R E 一 设置 进行修 改或删除操作的。 aca(0 O L R MA YK Y, 义中的关键词变成 o e t csae nu dtcsa e上述两个 ndl e acd p a cd , e o ea 主键 字 段 操作能够执行 , 只是提货表 中相关联的记 录将跟着一起 变化 , 即 库存量 i , n t 包含“ 牛小 利乐枕高钙牛奶 ” 蒙 的记录 的货 品名称都将变成 “ 蒙 单价 r l e , a

g 0
c aeal 提货 表 r tt e e b
牛牛奶 1或 包含“ 牛小利乐 枕高钙牛奶 ” ” 蒙 的全部 记录都将被 删除。 可见外键约束即对创建外键 的表有约束作用 , 也对 引用 的 主键表有约束作用 ,约束 的结果保证了两个表数据 的一致性 即
( 货编 号 i e t ( , ) o n lpi r e , 将标 参 照 完 整性 。 提 n i n t 1 1 nt ul r yky 一 td i y ma 2 触发 器 、 识列设置 为主键字段 货 品名称 vrhr4 )f eg e ee n e 货 品表 ( 品 a a( 0 o i k yrf ecs c r n r 货 触发器是一种高功能高开支的数据完整性方法 ,触发器能 名 称 )o ee o c o nud tn co , 一 创 建 外 键 ndl e tno p a o t n tn a i e ai 强 制实现更加复杂的数据完整性。 触发器作用于表上 , 较复杂的 客户 名 称 vrhr4 ) a a(0 , c 约束条件在触发器中定义 ,触发器只能对 它所作用 的表实施所 定 义的完整性约束 , 当触发器所保 护的数据发生变化 时 , 触发器 提货数量 i , n t 会 自动被激活 , 执行触发器中的命令 , 从而保证数据不违背完整 提货 日期 dt iedf lgta ( aem e ute t )一 设提货 日期 的默认 t a de 性约束 。 值为当前 日期 例如 : 了保证输入到提货表 中的所有货 品 , 为 在货品表中都 ) 存在 的, 利用外键来保证。但对于复杂的数据一致性 的要求 , 利 在提货表定义中 , 在货品名称字段上创建了外 键 , 并引用 了 用外键就不 能实现 。例如 , 在提货表中输入记录时 , 要求提货数 货 品表 中的主键字段货 品名称 ,其中 o e t n t n的含义 ndl e oa i e co 且库存量 自动变为库存 量 一提货量 。 这些 问题利 是禁止删除货 品表 中被提货表引用 的记录 , 如 , 例 货品表 中的蒙 量小于库存量 , 用外键是无法实现 的只能用触发器实现 , 触发器程序如下 : 牛小利乐枕纯牛奶这种货品 , 在提货表中有记 录 , 以货品表 中 所 c aer gr 交 r t tge 成 e i 蒙牛小 利乐枕 纯 牛奶所 对应 的记 录不 允 许删 除 ,nu dt n o pa o e o 货 表 ae ne n提 frisr t t atn的含 义是 禁止修 改货 品表 中被提货 表引用 的货 品名 称 。 co i
Z a L ja h o iu n
( p l a o n eh i l H g , i nn cncl iesy F xn A p ct na dT cnc e e La ig i i a Co o Teh iaUnvr t i ui 13 0 0 0) 2
Ab t c T i p p rit d c stec n e to aaitgi , h p fd t tgi n terlt n ld tb s , n sr t hs a e nr u e h o c p f t ne r y tet eo aai e r yi eai a aa a e a d a o d t y n t h o
秉 创外来制束个或个上 过建键强约两表两以表
日 :紊 享 奚
忡 、 据表 据 据中 和之 来 行 数
一 芬夕 芝 , 薮 素 部 萄 吾s s 据

4 办公 自动化 杂 志 0。
cetdt ae 品销售 ra aa s 商 e b
g o
us e
c n tan s tig r . o sr i t,rg e s
} 量 - 凳登 _ 熏 量


— — —
l茎 鐾 ±
壹生 J 箜罂 生 一 塑I
垄 l ! 望I 坌

薹兽— _ —— J _


保 证嘉
I 一 数 r J 据二 一
S ev r 0 0数 据 库 中实 现数 据 QLS re 0 2 参照完整性 的方 法分 析
赵 丽 娟 ( 宁工程技术大 学应 用技术 学院 阜新 13 0 ) 辽 2 0 0
摘 要 文章介绍 了数据完整性的概念 , 关系数据库 中数据完整性 的类型 , 并通过实例重点分析 了在 S LSre 00中如何通过 Q e r 0 v 2
相关文档
最新文档