《数据库实验建立表和数据完整性》由会员分享,可在线阅读,更多相关《数据库实验建立表和数据完整性(18页珍藏版)》请在金锄头文库上搜索。
1、计算机科学与技术系 实 验 报 告专业名称 软件工程 课程名称 数据库实验 项目名称 建立表和数据完整性 班 级 ( )班 学 号 姓 名 同组人员 无 实验日期 20 年 月 日 一、实验目的与要求:(简述本次实验要求达到的目的,涉及到的相关知识点,实验的具体要求。)实验目的:1掌握表的基本操作。1)建立表。2)修改表的结构。2索引的建立方法。3掌握数据完整性的功能,加深对数据完整性的理解。实验要求:1)使用实验一的技术建立名称为“学生管理”数据库。2)建立如图所示的订单管理数据库中的5张表,同时完成数据完整性的定义(实体完整性、参照完整性和用户定义的域完整性),各个表的具体描述如下:院系字
2、段名数据类型主关键字外部关键字参照的表取值说明编号短整数Yes名称20个字符唯一,不允许为空值负责人10个字符办公地点20个字符学生字段名数据类型主关键字外部关键字参照的表取值说明学号8个字符Yes院系短整数Yes院系表的编号字段姓名10个字符不允许空值性别2个字符必须取值“男”或“女”生源6个字符状态4个字符教师字段名数据类型主关键字外部关键字参照的表取值说明教师编号8个字符Yes院系短整数Yes院系表的编号字段姓名10个字符不允许为空值性别2个字符必须取值“男”或“女”职称6个字符取值 “教授”、“副教授”、“讲师”或“助教”专业10个字符课程字段名数据类型主关键字外部关键字参照的表取值说
3、明课程编号8个字符Yes课程名称20个字符不允许为空值责任教师8个字符Yes教师表的教师编号字段学时短整数不允许为空值课程性质10个字符取值为公共基础、专业基础、专业选修和任意选修选课字段名数据类型主关键字外部关键字参照的表取值说明学号8个字符YesYes学生表的学号字段课程编号8个字符YesYes课程表的课程编号字段成绩短整型取值在0100之间,并且默认为空值3)修改表的结构,具体要求如下:a.为学生表增加一个“平均成绩”字段,类型为短整型,默认是空值。b.为课程表的“学时”字段重新定义约束:取值为8的倍数,不允许为空值。c.将院系表的“名称”字段的类型修改为varchar(30)。d.为教
4、师表增加一个“工资”字段,类型为5位整数、2位小数的数值型。4) 分别建立如下索引a.在客户表的客户名称字段上建立普通升序索引。b.在产品表的客户名称字段上建立惟一索引。c.在订购单表的订单号字段上建立聚集索引。d.在订单名细表的订单号(升序)、序号(升序)和数量(降序)三个字段上建立一个普通索引。二、实验内容(根据本次实验项目的具体任务和要求,完成相关内容,可包括:实验目的、算法原理、实验仪器、设备选型及连线图、算法描述或流程图、源代码、实验运行步骤、关键技术分析、测试数据与实验结果、其他 )1)、建立数据库create database 学生管理on ( name=order_dat, f
5、ilename=c:mssqldataorderdat.mdf, size=10MB, maxsize=50MB, filegrowth=5MB) log on ( name=order_log, filename=d:mssqllogorderlog.ldf, size=5MB, maxsize=25MB, filegrowth=5MB) 2)、建立表create table 院系( 编号int primary key, 名称char(20)not null, 负责人char(10), 办公地点char(20) , unique (名称) create table 学生( 学号char(8)
6、 primary key, 院系int foreign key references 院系(编号), 姓名char(10) not null, 性别char(2) check(性别like 男 or 性别like 女), 生源char(6), 状态char(4) create table 教师( 教师编号char(8) primary key, 院系smallint foreign key references 院系(编号), 姓名char(10) not null, 性别char(2) check(性别like 男 or 性别like 女), 职称char(6) check(职称like 教
7、授 or 职称like 副教授 or 职称like 讲师 or 职称like 助教), 专业char(10) create table 课程( 课程编号char(8) primary key, 课程名称char(20) not null, 责任教师char(8) foreign key references 教师(教师编号), 学时int not null, 课程性质char(10) check( 课程性质like 公共基础 or 课程性质like 专业基础or 课程性质like 专业选修 or 课程性质like 任意选修) create table 选课( 学号char(8) foreign
8、 key references 学生(学号), 课程编号char(8) foreign key references 课程(课程编号), 成绩int check(成绩=0 and 成绩=100)default null, primary key(学号, 课程编号) 3)修改表的结构,具体要求如下:a为学生表增加一个“平均成绩”字段,类型为短整型,默认是空值。alter table 学生add 平均成绩smallint default null b为课程表的“学时”字段重新定义约束:取值为8的倍数,不允许为空值。alter table 课程add check(学时/8=0) c 将院系表的“名称
9、”字段的类型修改为varchar(30)。alter table 院系alter column 名称varchar(30) d为教师表增加一个“工资”字段,类型为5位整数、2位小数的数值型。alter table 教师add 工资 numeric(5,2)4) 分别建立如下索引a.在客户表的客户名称字段上建立普通升序索引。createclusteredindexcname_indexoncustomer(cnameasc)b.在产品表的客户名称字段上建立惟一索引createuniqueclusteredindexcname_indexonproduct(cname)c.在订购单表的订单号字段上
10、建立聚集索引。createclusteredindexdno_indexondinggou(dno)d.在订单名细表的订单号(升序)、序号(升序)和数量(降序)三个字段上建立一个普通索引。create clusteredindex dno_indexon dingdan(dno asc,dux asc,dshu desc)三、实验分析与小结:(实验过程中的问题分析、产生的原因以及解决方法;实验结果分析; 有待优化思路) 通过本次实验,掌握表的基本操作:建立表、修改表的结构。索引的建立方法以及掌握数据完整性的功能,加深对数据完整性的理解。但是我对这些操作都不怎么熟练,应该多加实践。四、其它得分(百分制)