• 工作汇报
  • 开题报告
  • 社会实践报告
  • 实习报告
  • 申请报告
  • 研究报告
  • 党政报告
  • 可行性报告
  • 情况报告
  • 事迹材料
  • 申报材料
  • 述廉报告
  • 调查报告
  • 实验报告
  • 整改措施
  • 整改报告
  • 整改方案
  • 辞职报告
  • 考察报告
  • 离职报告
  • 结题报告
  • 竞聘报告
  • 请示报告
  • 社会调查报告
  • 自查报告
  • 报告写作指导
  • 学习报告
  • 实习周记
  • 述职报告
  • 您现在的位置:书业网 > 范文 > 工作报告 > 实验报告 > 正文

    实验报告二

    来源:书业网 时间:2015-12-29

    《数据库原理》实验报告

    实验名称:数据库完整性约束实验

    班级名称:计算机科学与技术

    数学与计算机学院

    2015年4月12日

    一、实验目的:

    数据库完整性是保证数据库中数据正确性的重要手段,通过实验,使学生加深对数据库完整性的基本概念的理解与掌握,并能够熟练创建、修改、删除各类完整性约束,从而达到灵活应用的目的。

    ? 实体完整性约束验证;

    ? 引用完整性验证;

    ? 唯一约束;

    ? 非空约束;

    ? 缺省值;

    ? 检查约束;

    二、实验内容及要求:

    试验所使用的数据库表结构如下:

    (1) dept(系表)(

    Deptno (系编号 CHAR(8) 主码

    Deptname(系名称) varCHAR(20) 必须取唯一值

    Dpho (电话号码) varCHAR(15) 只能取数字

    Deptadd 系办公地点 CHAR(40))

    (2)class (班级表) (

    classno (班级编号) char(8) 主码

    classname (班级名称) varchar(10) not null

    deptno (系编号) char(8) 系表的外码 )

    (3)Student(学生表)( AGE(年龄) INT

    SEX(性别) VARCHAR(2) 只能取男或女,缺省值为男

    SNO(学号) CHAR(10) 主码

    SNAME(姓名) VARCHAR(16)

    classno(班级编号) CHAR (8) 班级表的外码 )

    (4)Course(课程表)( SCORE(学分) INT

    CNAME(课程名) VARCHAR(32) unique

    CNO(课程号) CHAR(4) 主码)

    (5)SC(学生成绩表)(

    CNO(课程号) CHAR(4) 课程表的外码

    SNO(学号) CHAR(10)

    GRADE(成绩) INT 0<=grade<=100

    主码是(sno,cno))

    (一)、数据库完整性约束试验。

    1、使用查询分析器,建立数据库jxgl,数据库参数默认。

    create database cc

    on primary

    ( name=cc,

    filename='C:\Program Files\Microsoft SQL

    Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\cc.mdf',

    size=30,

    maxsize=50,

    filegrowth=1

    ),

    ( name=cca,

    filename='C:\Program Files\Microsoft SQL

    Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\cca.ndf',

    size=20)

    log on

    (

    name=cc_log,

    filename='C:\Program Files\Microsoft SQL

    Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\cc_log.ldf',

    size=50,

    filegrowth=10%)

    命令已成功完成。

    根据要求用SQL的DDL语言建立dept 、class、Student、Course和SC数据库表,并完成下面题目:

    (1)

    create table dept(

    Deptno CHAR(8) primary key,

    Deptname varCHAR(20) unique,

    Dpho varCHAR(15) check(isnumeric(dpho)=1),

    Deptadd CHAR(40))

    select *from

    dept

    (2)

    create table class (

    classno char(8) primary key,

    classname varchar(10) not null,

    deptno char(8) foreign key references dept)

    select *from

    class

    (3)

    create table Student (

    AGE INT ,

    SEX VARCHAR(2) check( sex='男'or sex ='女') default '男', SNO CHAR(10) primary key,

    SNAME VARCHAR (16),

    classno CHAR (8) references class)

    select *from

    student

    (4)create table Course(

    SCORE INT ,

    CNAME VARCHAR(32) unique,

    CNO CHAR(4) primary key )

    select *from

    course

    (5)create table SC(

    CNO CHAR(4) references course,

    SNO CHAR(10),

    GRADE INT check(0<=grade and grade<=100),

    primary key(sno,cno))

    select *from

    SC

    2、用alter命令修改表结构:

    (1)在学生表中增加一个“联系电话”字段。

    alter table Student add phone varchar(50

    )

    (2)增加约束:“学分” 只能取{1,2,3,4}。

    alter table course add check(score in (1,2,3,4

    ))

    (3)增加约束:学分的缺省值为3 。

    alter table course add default '3' for score

    (4)增加约束:学生表和成绩表的“学号”前两位为 “20”,第三位与第四位必须为数字。

    alter table student add check(left(sno,4) like '20[0—9][0—9]') alter table sc add check(left(sno,4) like '20[0—9][0—9]')

    (5)删除系表中系表中系名称的唯一性约束。

    alter table dept drop constraint UQ__dept__41F0418F4CF5691D sp_help

    dept

    (6)删除学生表中的“联系电话”字段。

    alter table student drop column

    phone

    (7)为SC表中的Sno字段增加外码约束。

    alter table sc add foreign key (sno) references student, sp_help sc

    (8)修改班级表中班级名称的数据类型为char(50)。

    alter table class alter column classname char(50),

    sp_help

    class

    3、在图型化界面中向各个表中输入记录,并观察以下操作的结果

    (1)向课程表中插入记录,且将“课程名”插入重复值,出现什么现象,为什么?

    (2)插入“课程名”为空值的记录,出现什么现象,为什么?

    (3)插入“学分”非{1,2,3,4}的值,出现什么现象,为什么?

    (4)插入前两位不是“20”的学号,出现什么现象,为什么?

    (5)插入分数不在0~100之间的值,出现什么现象,为什么?

    (6)SC中,插入SNO或CNO没有在Student和Course中出现的记录,出现

    什么现象,为什么?

    三、思考与练习。

    1. 外键约束约束有何作用?外键取值有何要求?

    关系的外键必须是另一个关系的主键的有效值或者空值。

    2. 实体完整性通过什么机制保证?

    基本关系的主键都不能取空值。

    3. 唯一性约束与主键有何区别?

    主键约束在表中定义一个主键来唯一确定表中每一行数据的标识符.(非空,惟一)。唯一约束保证在一个字段或者一组字段里的数据与表中其它行的数据相比是唯一的。

    4. SQL Server中唯一性约束通过什么机制保证?

    四、实验总结