实验 5 数据的完整性管理
实验 5 数据的完整性管理
一、实验目的
- 掌握实体完整性的实现方法。
- 掌握用户定义完整性的实现方法。
- 掌握参照完整性的方法。
二、实验内容
- 数据库的完整性设置。
三、实验步骤
- 可视化界面的操作方法:
- 实体完整性
- 将 student 表的“sno”字段设为主键:在表设计界面中,单击左边的行选定块,
选定“sno”字段,单击工具按钮 设置主键。如图 1 所示:
图 1
- 将“sc”表的“sno”和“cno”设置为主键:在表设计界面中,单击并按住 Ctrl键拖动左边的行选定块,选定 sno 和 cno 字段,单击工具按钮设置主键。如图2 所示:
图 2
- 用户定义完整性
将“ssex”字段设置为只能取“男”,“女”两值:在表设计界面,点击鼠标右键
——CHECK 约束——添加约束,添加 CK_student_sex 名称,然后在约束表达式框中输入“ssex in ('男','女')”。如图 3 所示。
图 3
- 参照完整性
将“sc”表中的“sno”字段设为外键,参照“student”表中的“sno”字段:打开
“sc”表的设计界面,点击工具栏按钮 或点击鼠标右键——“关系”菜单项,在弹
出的属性(properties)对话框中点击“新建”按钮,新建一个名为“FK_SC_Student”的
“关系”,在其属性中点击“表和列规范”右侧的按钮,即:
打开“表和列”对话框,在“主键表(Primary key table)”下拉框中选择“student” 表,在其下的字段选择框中选择“sno”,在“外键表(Foreign key table)”下拉框中选择 “sc”表,在其下的字段选择框中选择“sno”,单击关闭即可。见图 4。
图 4
类似方法再定义一个名为“FK_SC_Course”的“关系”,该关系中,“sc”表中的
“cno”字段设为外键,参照“Course”表中的“cno”字段。
- SQL 命令方式操作方法:
- 实体完整性
- 将“student”表的“sno”字段设为主键: 当“student”表已存在则执行:
alter table student
add constraint pk_sno primary key (sno)
当“student”表不存在则执行:
Create table student(
sno CHAR(5) primary key, sname CHAR(10) NOT NULL,
ssex CHAR(2), sage int,
sdept CHAR(4))
注:可用命令“drop table student”删除“student”表
- 添加一身份证号字段,设置其惟一性。(注:操作前应删除表中的所有记录)
Alter table student
add id char(18) unique (id)
- 将“sc”表的“sno”和“cno”设置为主键: 当“sc”表已存在则执行:
alter table sc add constraint PK_SnoCno primary key (sno,cno)
当“sc”表不存在则执行:
Create table sc( sno CHAR(5), cno CHAR(2),
gradeINT NULL,
constraint PK_SnoCno primary key (sno,cno)
)
- 用户定义完整性
- 将“ssex”字段设置为只能取“男”,“女”两值:当“student”表已存在则执行:
alter table student
add constraint CK_Sex check (ssex in ('男' ,'女'))
当“student”表不存在则执行:
Create table student(
sno CHAR(5) primary key, sname CHAR(10),
ssex CHAR(2) check (ssex in ('男' ,'女')),
sage int,
sdept CHAR(4), id char(18)
)
- 设置学号字段只能输入数字: alter table student
add constraint CK_Sno_Format check (sno like '[0-9][0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9]')
注意:如果表中已有数据不符合以上要求,执行之前要先删除 student 表已有数据。
- 设置身份证号的输入格式: alter table student
add constraint CK_ID_Format check ((id like
'[0-9][0-9][0-9][0-9][0-9][0-9][1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]_') OR
(id like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]'))
- 设置 18 位身份证号的第 7 位到第 10 位为合法的年份(1900-2050) alter table student
add constraint CK_ID_Format2 check (len(id)=18 and ( (convert(smallint,substring(id,7,4) )>=1900)
and(convert(smallint,substring(id,7,4) )<=2050)) )
- 设置男生的年龄必须大于 22, 女生的年龄必须大于 20.
Alter table student
add constraint CK_age check (ssex='男' and sage>=22 or ssex='女' and sage>=20 )
- 参照完整性
1.建立“sc”表中的“sno”字段为外键,参照“student”表中的“sno”字段:
当“sc”表已存在则执行:
alter table sc
add constraint FP_sno foreign key (sno) references student(sno)
当“sc”表不存在则执行:
Create table sc(
sno CHAR(5) constraint FP_sno foreign key references student(sno), cno CHAR(2),
grade INT NULL,
constraint PK_SnoCno primary key (sno,cno)
)
- 完整性验证
- 实体完整性:在“student”表数据浏览可视化界面中输入学号相同的两条记录, 将会出现错误,拷屏记录下出错界面。
或者在命令窗口输入下面两条命令也会出现错误提示,拷屏记录下出错界面。
insert into student values('95001','张三','男',24,'CS','42222919901012903X') insert into student values('95001','李四','女',21,'CS','422229199510129031')
下面的语句用来验证“sc”表中的实体完整性,拷屏记录下出错界面。
insert into sc values('95002', '10',65) insert into sc values('95002', '10',90)
- 用户定义完整性:
使用下面的语句验证“ssex”字段的域完整性,拷屏记录下出错界面。
insert into student values('95009','张匀','大',20,'CS', ‘42222919901012904X’)
- 参照完整性:
使用下面的语句“验证”sc 表中的“sno”字段的域完整性(假设 student 表中没有学号
为“95998”的学生记录),拷屏记录下出错界面。
insert into sc values('98998', '10',98)
四、实验任务:
1、建立课程表的实体完整性,和选课表中课程号 cno 的参照完整性;
2、练习建立表的主外键约束、唯一约束、取空值约束、用户自定义的约束;
3、建立 SC 表的分数字段限定在 0-100 之间。
实验 5 数据的完整性管理相关推荐
- 实验4 数据的安全性管理
实验4 数据的安全性管理 一.实验目的 掌握SQL Server身份验证模式. 掌握创建登录账户.数据库用户的方法. 掌握使用角色实现数据库安全性的方法. 掌握权限的分配. 二.实验内容 1.设置身 ...
- 实验1 应用SQL Server进行数据定义和管理
实验1 应用SQL Server进行数据定义和管理 [实验目的] 1)熟悉SQL Server的配置和管理. 2)掌握数据库的定义和修改方法. 3)掌握表的定义和修改方法. 4)掌握使用SQL语句进行 ...
- 【数据库实验课堂】实验二 使用SQL Server管理数据表
实验二 使用SQL Server管理数据表: 1.请在指定数据库内完成以下内容: 1) 依据数据表的结构创建相对应的数据表,表结构如下所示: **学生信息表(student)**字段名称 字段类型及长 ...
- 数据库系统概论 实验报告答案 实验三:创建及管理数据表
实验三:创建及管理数据表 一.实验目的 熟悉数据表的特点: 熟悉在Management Stuio中创建.编辑及删除数据表: 熟悉使用T-SQL创建.编辑及删除数据表: 二.实验学时 2学时 三.实验 ...
- 数据库系统概论 实验报告答案 实验二:创建及管理数据表
实验二:创建及管理数据表 一.实验目的 掌握数据库模式的创建方法: 掌握数据表的特点: 掌握在Management Stuio中创建.编辑及删除数据表: 掌握使用T-SQL创建.编辑及删除数据表: 二 ...
- 数据科学、管理科学系课程教学课件——FineReport实验指导书节选====明细表、分组表、交叉表
数据科学.管理科学系的数据大屏.数据报表.商务智能.管理信息系统等课程教学,只需简单的数据库基础,解放学生码代码的时间,用更真实的企业案例,更灵活的将思维落地.本节讲述的是通用报表的分析案例:明细 ...
- 数据科学、管理科学系课程教学课件——FineReport实验指导书节选====证券公司年度计划表
数据科学.管理科学系课程教学,0基础也能掌握,本节讲述的是金融经管类专业的数据科学.管理科学系课程案例:证券公司年度计划表 使用数据 fredu数据库:成交量表,年收入趋势表,市值表,收盘价表 ...
- 数据科学、管理科学系课程教学课件——FineReport实验指导书节选====利润中心
数据科学.管理科学系课程教学,0基础也能掌握,本节讲述的是金融经管类专业的数据科学.管理科学系课程案例:利润中心 使用数据 以下数据(Multi1除外)在各模板中均为SELECT * FROM ...
- 数据科学、管理科学系课程教学课件——FineReport实验指导书节选====港口生产运行情况
数据科学.管理科学系课程教学,0基础也能掌握,本节讲述的是物流管理类专业的数据科学.管理科学系课程案例:港口生产运行情况 使用数据 fredu数据库:地图数据.港口排名.集装箱业务线性图.目 ...
最新文章
- c语言中浮点数和整数转换_C中的数据类型-整数,浮点数和空隙说明
- 技术网站 --websystique.com
- Spring jdbc的搭建
- 一般单纯形法的matlab程序,实验报告(单纯形法的matlab程序)
- 目标检测--Selective Search for Object Recognition(IJCV, 2013)
- 战略支援部队信息工程大学的计算机类,中国顶尖的两大“信息工程”高校翻新,南信大、军信大要崛起?...
- mysql inode_Linux中inode的大小、作用讲述
- 【python基础知识】对文本数据库的一些基本操作
- java的观察模式链式,design-pattern-java
- ubuntu下opencv和qt的安装配置
- 网络间谍在2017年被列为全球企业最为严重的威胁
- Linux 中断学习之前言篇---中断之原理篇
- 源码多多- Discuz x2.5 版块的常用设置方法和技巧
- PCB封装库创建流程及注意事项
- 劲爆周鸿祎网络炒作黑幕
- 计算机任务管理器无法响应,Win7系统电脑在任务管理器中关闭进程时总是未响应的解决方法...
- JavaWeb---HTTP与Request
- 编辑视角下,论文摘要、引言、结论怎么写?
- 奥克兰oracle,IEM奥克兰前瞻: 顶级战队决战甲骨文中心
- 爬虫日记(28):scrapy使用中间件调用浏览器