实验四 数据库设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四数据库设计
班级:姓名:学号:
任课教师:实验教师:上机时间:【实验目的】
1、掌握规范化数据库设计包括步骤及其任务、方法、结果等。
2、掌握数据库设计过程中关键文档的写法。
3、了解数据库辅助设计工具。
【实验性质】
验证性实验
【实验学时】
2H
【实验内容】
设计题目:学生选课
1.需求分析,给出数据字典与数据流图
数据分析:
(1)选课信息
包括:学号,课程号,选课日期,实践成绩,考试成绩。
(2)学生信息
包括:学号、姓名、性别、地址
(3)课程信息
包括:课程号、课程名称,系编号,教师编号,开课学期。
(4)教师信息
包括:教师编号、教师姓名、系编号、办公室号。
(5)系信息
包括:系编号,系名,教师编号,位置
(6)用户信息
包括:用户名,用户密码。
数据流图
数据流图是描述系统内部处理流程、用于表达软件系统需求模型的一种图形工具,这种表示法中用矩形表示源点和终点,用椭圆表示数据加工,用箭头表示数据流。
本学生管理系统的数据流图如下。
数据字典:
数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。
利用SQL Server 2005建立“学生选课”数据库,其基本表清单及表结构描述如下:
(1)数据分析,设计E-R模型
E-R图表示概念模型(1)学生实体E-R图
(2)教师实体E-R图
(3)课程实体E-R图
(4)选课实体E-R图
(5)系实体E-R图
(6)用户实体E-R图
3.3 合并分E-R图
通过分析上述实体间的联系将分E-R图合并为学生管理系统的基本E-R图,每个实体的属性在上面的分E-R图中已经给出,在此不予给出。
(2)E-R模型转换为关系模型
由系统E—R图转化而得到的关系模式如下
(1)student(sno,sname,ssex,saddress),其中sno为主键。
(2)sc(sno,cno,ctime,sscore,kscore),其中(sno,cno)为主键。
(3)teacher(tno,tname,dno,offno),其中tno为主键。
(4)course(cno,dno,tno,cname,semester),其中cno为主键。
(5)dept(dno,dname,tno,place),其中dno为主键。
(6)admin(names,password),其中(names,password)为主键。
以上各关系模式之间的联系都是通过键码来建立关联的!
(3)数据库说明
在数据字典中,对数据已有详细的说明,此处不在讨论
数据关系
(5)创建表SQL语句
(1)创建学生表:
create table student(
sno nvarchar(10)primary key,
sname nvarchar(10)not null,
ssex nvarchar(2)not null,
saddress nvarchar(20)null)
(2)创建教师表:
create table teacher(
tno nvarchar(10)primary key,
tname nvarchar(10)not null,c
dno nvarchar(10)not null,
offno nvarchar(10)null,
foreign key(dno)references dept(dno))
(3)创建课程表:
create table course(
cno nvarchar(10)primary key,
dno nvarchar(10)not null,
tno nvarchar(10)not null,
cname nvarchar(10)not null,
semester nvarchar(20)null,
foreign key(dno)references dept(dno), foreign key(tno)references teacher(tno))
(4)创建选课表:
Create table sc(
sno nvarchar(10)not null,
cno nvarchar(10)not null,
ctime nvarchar(20)null,
sscore int null,
kscore int null,
primary key (sno,cno),
foreign key(sno)references student(sno), foreign key(cno)references course(cno))
(5)创建用户表:
Create table admin(
names nvarchar(10)not null,
password nvarchar(20)not null,
primary key(names,password))
(6)创建系表:
Create table dept(
dno nvarchar(10)primary key,
dname nvarchar(10)not null,
tno nvarchar(10)not null,
place nvarchar(20)null,
foreign key(tno)references teacher(tno)) (7)创建数据库:
数据名:学生管理表
数据库主文件路径全名:C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA
日志文件路径全名:C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA
create database 学生管理表
on primary
(
Name=’学生管理表db’, --文件逻辑名
Filename=’C:\Program Files\MicrosoftSQLServer\MSSQL.1\MSSQL\DATA\学生管理表.mdf’,--文件磁盘文件路径全称
Size=10,--初始化大小
Maxsize=20,--最大值
Filegrowth=1
)
Log on
(
Name=’学生管理表log’,
File=’ C:\Program Files\Microsoft SQL Server \ MSSQL.1\MSSQL\DATA \学生管理表_log.ldf’, Size=10,
Maxsize=20,
Filegrowth=1
)
(8)创建触发器
create trigger t on student
for delete
as
declare @bh nvarchar(10)
select @bh=deleted.sno
from deleted
if exists(select sno from sc where sc.sno=@bh)
delete from sc where sno=@bh
【实验总结】
请根据实验内容谈谈你对本次实验的收获、感想,或提出你对实验内容的建议等等。
通过本次数据库的实验,对于数据库的规范化和数据库设计有了更进一步的了解和认识。
对数据库的设计的步骤、方法、结果等在整体上有了掌握。
在本次课程设计中,该学生选课管理系统允许用户进行登录查看相关的信息。
拥有不同权限的用户可以执行不同的操作,这和实际相符合,特别是在数据库管理这方面。
在建立数据库表的时候,为数据库中的表建立了关系和相关约束,保证了数据库中的实体完整性和参照性完整性。
然而,由于时间和自身能力的不足,仍有几个操作功能没能和需求分析中要求的相匹配,实现的功能不完善,实用性不强。
是这次数据库中的不足处之一。
通过这次数据库的设计,使我加深了对数据库知道的进一步了解。