实验 5   数据的完整性管理

一、实验目的

  • 掌握实体完整性的实现方法。
  • 掌握用户定义完整性的实现方法。
  • 掌握参照完整性的方法。

二、实验内容

  • 数据库的完整性设置。

三、实验步骤

  • 可视化界面的操作方法:
  • 实体完整性

    1. 将 student 表的“sno”字段设为主键:在表设计界面中,单击左边的行选定块,

选定“sno”字段,单击工具按钮 设置主键。如图 1 所示:

图 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 命令方式操作方法:

    • 实体完整性
  1. 将“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”表

  1. 添加一身份证号字段,设置其惟一性。(注:操作前应删除表中的所有记录)

Alter table student

add id char(18) unique (id)

  1. 将“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)

)

  • 用户定义完整性
  1. 将“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)

)

  1. 设置学号字段只能输入数字: 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 表已有数据。

  1. 设置身份证号的输入格式: 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]'))

  1. 设置 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)) )

  1. 设置男生的年龄必须大于 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)

)

  • 完整性验证
  1. 实体完整性:在“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)

  1. 用户定义完整性:

使用下面的语句验证“ssex”字段的域完整性,拷屏记录下出错界面。

insert into student values('95009','张匀','大',20,'CS', ‘42222919901012904X’)

  1. 参照完整性:

使用下面的语句“验证”sc 表中的“sno”字段的域完整性(假设 student 表中没有学号

为“95998”的学生记录),拷屏记录下出错界面。

insert into sc values('98998', '10',98)

四、实验任务:

1、建立课程表的实体完整性,和选课表中课程号 cno 的参照完整性;

2、练习建立表的主外键约束、唯一约束、取空值约束、用户自定义的约束;

3、建立 SC 表的分数字段限定在 0-100 之间。

实验 5   数据的完整性管理相关推荐

  1. 实验4  数据的安全性管理

    实验4  数据的安全性管理 一.实验目的 掌握SQL Server身份验证模式. 掌握创建登录账户.数据库用户的方法. 掌握使用角色实现数据库安全性的方法. 掌握权限的分配. 二.实验内容 1.设置身 ...

  2. 实验1 应用SQL Server进行数据定义和管理

    实验1 应用SQL Server进行数据定义和管理 [实验目的] 1)熟悉SQL Server的配置和管理. 2)掌握数据库的定义和修改方法. 3)掌握表的定义和修改方法. 4)掌握使用SQL语句进行 ...

  3. 【数据库实验课堂】实验二 使用SQL Server管理数据表

    实验二 使用SQL Server管理数据表: 1.请在指定数据库内完成以下内容: 1) 依据数据表的结构创建相对应的数据表,表结构如下所示: **学生信息表(student)**字段名称 字段类型及长 ...

  4. 数据库系统概论 实验报告答案 实验三:创建及管理数据表

    实验三:创建及管理数据表 一.实验目的 熟悉数据表的特点: 熟悉在Management Stuio中创建.编辑及删除数据表: 熟悉使用T-SQL创建.编辑及删除数据表: 二.实验学时 2学时 三.实验 ...

  5. 数据库系统概论 实验报告答案 实验二:创建及管理数据表

    实验二:创建及管理数据表 一.实验目的 掌握数据库模式的创建方法: 掌握数据表的特点: 掌握在Management Stuio中创建.编辑及删除数据表: 掌握使用T-SQL创建.编辑及删除数据表: 二 ...

  6. 数据科学、管理科学系课程教学课件——FineReport实验指导书节选====明细表、分组表、交叉表

      数据科学.管理科学系的数据大屏.数据报表.商务智能.管理信息系统等课程教学,只需简单的数据库基础,解放学生码代码的时间,用更真实的企业案例,更灵活的将思维落地.本节讲述的是通用报表的分析案例:明细 ...

  7. 数据科学、管理科学系课程教学课件——FineReport实验指导书节选====证券公司年度计划表

      数据科学.管理科学系课程教学,0基础也能掌握,本节讲述的是金融经管类专业的数据科学.管理科学系课程案例:证券公司年度计划表 使用数据   fredu数据库:成交量表,年收入趋势表,市值表,收盘价表 ...

  8. 数据科学、管理科学系课程教学课件——FineReport实验指导书节选====利润中心

      数据科学.管理科学系课程教学,0基础也能掌握,本节讲述的是金融经管类专业的数据科学.管理科学系课程案例:利润中心 使用数据   以下数据(Multi1除外)在各模板中均为SELECT * FROM ...

  9. 数据科学、管理科学系课程教学课件——FineReport实验指导书节选====港口生产运行情况

      数据科学.管理科学系课程教学,0基础也能掌握,本节讲述的是物流管理类专业的数据科学.管理科学系课程案例:港口生产运行情况 使用数据    fredu数据库:地图数据.港口排名.集装箱业务线性图.目 ...

最新文章

  1. c语言中浮点数和整数转换_C中的数据类型-整数,浮点数和空隙说明
  2. 技术网站 --websystique.com
  3. Spring jdbc的搭建
  4. 一般单纯形法的matlab程序,实验报告(单纯形法的matlab程序)
  5. 目标检测--Selective Search for Object Recognition(IJCV, 2013)
  6. 战略支援部队信息工程大学的计算机类,中国顶尖的两大“信息工程”高校翻新,南信大、军信大要崛起?...
  7. mysql inode_Linux中inode的大小、作用讲述
  8. 【python基础知识】对文本数据库的一些基本操作
  9. java的观察模式链式,design-pattern-java
  10. ubuntu下opencv和qt的安装配置
  11. 网络间谍在2017年被列为全球企业最为严重的威胁
  12. Linux 中断学习之前言篇---中断之原理篇
  13. 源码多多- Discuz x2.5 版块的常用设置方法和技巧
  14. PCB封装库创建流程及注意事项
  15. 劲爆周鸿祎网络炒作黑幕
  16. 计算机任务管理器无法响应,Win7系统电脑在任务管理器中关闭进程时总是未响应的解决方法...
  17. JavaWeb---HTTP与Request
  18. 编辑视角下,论文摘要、引言、结论怎么写?
  19. 奥克兰oracle,IEM奥克兰前瞻: 顶级战队决战甲骨文中心
  20. 爬虫日记(28):scrapy使用中间件调用浏览器

热门文章

  1. 设计模式 之美 -- 单例模式
  2. 【笔记】震惊!世上最接地气的字符串浅谈(HASH+KMP)
  3. 【牛客网】最长对称子串
  4. .Net Core MVC初学习
  5. TinyMCE的使用-安装
  6. body,td,th {
  7. PLSQL的 dynamic sql小例子
  8. 原创:嵌入图片的HTML内容在FLASH AS3中正确显示的最佳解决方案
  9. 白领们注意啦:“过劳死”27个危险信号!
  10. jQuery日期选择器插件date-input