数据库设计实例—教学管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库课程设计报告
教学管理系统
数据库设计
课程设计题目教学管理系统学院软件学院
班级软件技术四班年级2013级
姓名彭超李新徐彤(2014 年11月)
用5行左右的文字对系统进行简要介绍
对教学管理信息统一规范整理,实现各种信息的自动管理。为便于信息的查询,找出各种信息的关联性,根据各种需求设计出合理的报表。
减轻教学日常信息管理的负担,方便学生、教师查询信息和学校对所有信息的管理。以简单便捷的操作获取详尽的信息。
一、数据需求分析
某学校设计学生教学管理系统。学生实体包括学号、姓名、性别、生日、民族、籍贯、简历、登记照,每名学生选择一个主修专业,专业包括专业编号、名称和类别,一个专业属于一个学院,一个学院可以有若干个专业。学院信息要存储学院号、学院名、院长。教学管理还要管理课程表和学生成绩。课程表包括课程号、课程名、学分,每门课程由一个学院开设。学生选修的每门课程获得一个成绩。另外,为了管理教师教学安排,教师包括编号、姓名、年龄、职称,一个教师只能属于一个学院,一名教师可以上若干门课程,一门课程可以有多名老师来上,每个教师所上的每门课都有一个课堂号和课时数。
本系统数据字典如下:
数据项表
数据流
数据流表
二、概念结构设计
1.首先确定系统中的实体
从以上数据需求可以看出,系统共包括5个实体:学生、专业、学院、教师、课程。
2.再确定系统中实体间的关系
根据数据需求描述推出:专业与学生是1对多关系;学生与课程是多对多关系;课程与老师是多对多关系;课程与学院是多对1关系;学院与专业是1对多关系;学院与教师是1对多关系。
3.转化成E-R图
图1 实体-属性图
图2 教学管理ER图
三、逻辑结构设计
在转换为关系模型时,一对多的联系都在相应的多方实体的关系中增加一个外键。本系统由ER模型转换的关系模型是:
学生(学号,姓名,性别,生日,民族,籍贯,专业号,简历,登记照)专业(专业号,专业,专业类别,学院号)
学院(学院号,学院,院长)
课程(课程号,课程名,学分,学院号)
成绩(学号,课程号,成绩)
教师(编号,姓名,年龄,职称)
四、物理结构设计(不写)
五、数据库实施
基于Access的数据库结构设计如下。
指定数据库文件的名称,并为设计好的关系模型设计表结构。
数据库文件保存在“E:\教学管理\”文件夹中,数据库文件名:教学管理.MDB。
表包括:学院、专业、学生、课程、成绩单。对应表结构如表1-2至表1-6所示。
表1-1 学院
表1-2 专业
表1-3 学生
表1-4 课程
表1-5 成绩单
附:教学管理数据库参考数据如表1-1~表1-5所示。
表1-1 学生表
表1-2 学院表
表1-2 专业表
表1-4 课程表
表1-5 成绩单
六、思考题:
当我们进行物理设计时,如果将全校的学生放置在一个关系(表)中,势必带来存储空间大、处理效率低的问题。怎么解决?
由于系统要涉及大量数据的操作,所以索引的建立就成为一种必需。本系统分别在各Course,Student,Teacher,Dept,Score各个表的主键上建立索引。
附录A:
SQL脚本:
1.创建数据库TeachingSystem
GO
CREATE DATABASE TeachingSystem
ON
(NAME=TeachingSystem_dat,
FILENAME="E:\MyProjects\SQL Server\TeachingSystem.Mdf",
SIZE=30,
FILEGROWTH=20%
)
LOG ON
(NAME=StudentSystem_log,
FILENAME="E:\MyProjects\SQL Server\TeachingSystem.Ldf",
SIZE=3,
FILEGROWTH=20%
)
GO
2.创建各主表
GO
CREATE TABLE Dept
(DeptNo varchar(10)NOT NULL
CHECK(DeptNo LIKE'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), DeptName varchar(20)NOT NULL,
Info varchar(256)NOT NULL,
PRIMARY KEY(DeptNo)
);
GO
CREATE TABLE Student
(StudentNo varchar(10)NOT NULL
CHECK(StudentNo LIKE'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), StudentName varchar(20)NOT NULL,
Gender varchar(4)NOT NULL CHECK(Gender='男'OR Gender='女'), Birthday datetime NOT NULL,
EntryScore float(8)NOT NULL CHECK(EntryScore>= 0),
DeptNo varchar(10)NOT NULL,
PRIMARY KEY(StudentNo),
FOREIGN KEY(DeptNo) REFERENCES Dept(DeptNo)
ON DELETE NO ACTION
ON UPDATE CASCADE
);
GO
CREATE TABLE Teacher
(TeacherNo varchar(10)NOT NULL
CHECK(TeacherNo LIKE'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), TeacherName varchar(20)NOT NULL,
Gender varchar(4)NOT NULL CHECK(Gender='男'OR Gender='女'), Birthday datetime NOT NULL,
ProTitle varchar(20)NOT NULL,
Specialized varchar(20)NOT NULL,
DeptNo varchar(10)NOT NULL,
PRIMARY KEY(TeacherNo),
FOREIGN KEY(DeptNo) REFERENCES Dept(DeptNo)
ON DELETE NO ACTION
ON UPDATE CASCADE
);
GO
CREATE TABLE Course
(CourseNo varchar(10)NOT NULL
CHECK(CourseNo LIKE'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), CourseName varchar(20)NOT NULL,