数据库课程设计报告设计题目:培训中心信息管理系统学生姓名(学号):温婕20101020219学生姓名(学号):母洁菲20101020213 专业班级:信息二班学院名称:数学与计量经济学院指导老师:姚兰2013 年7 月14 日目录1绪论 (2)1.1开发背景 (2)1.2系统边界 (2)1.3成员分工 (2)2需求分析 (3)2.1功能需求 (3)2.2数据需求 (4)2.3用户视图 (5)2.4初始数据库大小及增长速度 (6)2.5查找的类型和平均数量 (6)2.6网络和共享访问需求 (6)2.7性能要求 (7)2.8安全性 (7)2.9备份和恢复 (7)3概念结构设计 (8)3.1 局部E-R图 (8)3.2全局E-R图 (9)4逻辑结构设计 (10)4.1将E-R图转化为关系模型 (10)4.2关系模型的优化 (10)4.3基表设计 (10)4.4索引设计 (13)4.5视图设计 (13)4.6授权设计 (14)4.1存储过程设计 (16)4.8触发器设计 (20)5数据库实施 (20)5.1数据库定义 (20)5.2基本表定义 (21)5.3索引定义 (22)5.4视图定义 (22)5.5角色及授权 (23)5.6存储过程定义及调用实例 (24)5.7触发器定义 (24)6完整代码 (27)1绪论1.1开发背景所设计的数据库管理系统为培训中心信息管理系统,培训中心的日常业务是:学员发来的电报、文件、电话,经收集、分类后,予以分别处理。
如果是报名的,则将报名数据送给负责报名的职员,他们要查阅课程文件,检查是否额满,若不满,在学员文件、课程文件上登记,并开出报名单交财务人员,财务人员开发票经复审后通知学员;如果是付款的,则由财务人员在账目文件上登记,经复审后给学员一张收据;如果是查询的,则交负责查询的部门在查询课程文件后给出大幅;如果是要注销原来选修的课程,则由注销人员在课程、学员、账目文件上作相应更新后通知学员;另外,课程管理员要经常对课程数据进行维护。
1.2系统边界1.3成员分工需求分析:母洁菲概念结构设计:母洁菲、温婕逻辑结构设计:温婕、母洁菲具体实施:温婕维护设计:温婕2需求分析2.1功能需求2.1.1数据录入录入新课程的详细信息录入新学员的详细信息录入新账目的详细信息录入新教师的详细信息录入新助教的详细信息录入新班级的详细信息2.1.2数据更新、删除更新/删除课程的详细信息更新/删除学员的详细信息更新/删除账目的详细信息更新/删除教师的详细信息更新/删除助教的详细信息更新/删除班级的详细信息2.1.3数据查询查询指定课程的详细信息查询指定学员的详细信息查询指定账目的详细信息查询指定教师的详细信息查询指定助教的详细信息查询指定班级的详细信息查询现有报名人数未满班级的详细信息查询指定班级所对应学员的详细信息查询指定学员所对应账目的详细信息查询指定学员所对应课程的详细信息查询指定学员所对应班级的详细信息查询指定课程所对应学员的详细信息查询指定课程所对应班级的详细信息查询指定课程所对应教师的详细信息查询指定课程所对应助教的详细信息查询指定时间段的学费折扣信息查询指定时间段开课的班级的详细信息2.2数据需求(1) 课程信息表(Course)的数据包括课程id(自动编号),课程编号(唯一),课程名,学时,课次(2)学员信息表(Student)的数据包括学生id(自动编号),学员编号(唯一),学员姓名,学员性别,出生日期,联系电话,电子邮箱,身份证号码。
其中性别应只能有‘M’和‘F’两种输入,学员的年龄由当前日期减去出生日期得出。
(3)职工信息表(Staff)的数据包括职工id(自动编号),职工编号(唯一),职工姓名,出生日期,部门,职务,联系电话,在职状态,入职时间,离职时间。
其中性别应只能有‘M’和‘F’两种输入,职工的年龄由当前日期减去出生日期得出。
(4)班级信息表(Class)的数据包括班级id(自动编号),班级编号(唯一),班级名,对应课程号,老师编号,助教编号,开班日期,结班日期,上课时段,上课地点,学费,班级容量。
(5)报名信息表(Sign_up)包括学员号,班级号,报名日期,是否付款。
其中是否付款信息只有两种选项:Y OR N 默认N(6)账目信息表(Account)包括学员号,班级号,折扣额,交款日期。
其中当账目信息中更新一个条目,报名信息中对应条目的‘是否付款’信息自动更新为‘Y’(7)学员-班级成绩+评价表(Result) 包含学员号,班级号,是否结课,考试时间,考试成绩,老师满意度,助教满意度。
说明:1)班级(培训班)是课程的细分,比如“英语六级词汇”(课程)会按照开班的不同细分为“英语六级词汇2013年春季班”“英语六级词汇2013年夏季班2”等。
2)当学员通过报名管理员报名时,会新建一个条目到 Sign_up表中,报名管理员将报名信息打印,移送到财务管理员手中,财务管理员根据学员相关信息,新建这个学员的账目信息到Account表中,建立完成之后自动在Result表中新建相应条目(“是否结课”默认‘N’,其他非主码列置空),由信息管理员对Result表中的学员相关信息进行更新。
Sign_up、Account、Result的主码都是(班级编号,学生编号)2.3用户视图2.4初始数据库大小及增长速度初始大小:大约有20个课程信息大约有1500位学员大约有50个班级大约有20位教师大约有30位助教大约有10名管理员负责该系统的各项工作增长速度:每学期大约有500名新学员档案信息加入数据库,400名学员结业,已结业学员信息仍保存在数据库中,在学员档案的状态属性里注明结业;每学期大约会新增15个班级,15个班级课程结束,已结束班级信息仍保存在数据库中,方便查询某一时间段内相应班级的信息及其对应的学员信息;每学期大约会有2—3门课程信息发生变动,加入新的课程信息,删除已废弃课程信息;每年大约有10名新职员信息加入数据库,5—10名左右的离职人员信息仍保存在数据库中,并在职工档案表职务栏内注明离职;2.5查找的类型和平均数量查询课程信息——每天大概80次查询学员信息——每天大概100次查询班级信息——每天大概80次查询账目信息——每天大概40次查询教师信息——每天大概20次查询助教信息——每天大概20次2.6网络和共享访问需求系统能够支持至少3名成员并发访问。
所有管理员必须安全地和该系统数据库实现网络互联。
2.7性能要求在上班时间但非高峰期单个记录的搜索时间要少于1秒,高峰期各种搜索的响应时间要少于5秒。
在上班时间但非高峰期多个记录的搜索时间要少于5秒,高峰期各种搜索的响应时间要少于10秒。
在上班时间但非高峰期更新保存记录的时间要少于1秒,高峰期要少于5秒。
2.8安全性数据库必须有口令保护。
每个管理员应该分配到一个特定用户试图的数据库访问权限。
每个管理员只能在适合他们完成工作需要的窗口中看到特定数据。
2.9备份和恢复数据库必须在每天晚上12点备份。
3概念结构设计3.1 局部E-R图3.2全局E-R图4逻辑结构设计4.1将E-R图转化为关系模型课程(课程id, 课程号,课程名,学时,课次)班级(班级id, 班级号,班级名,课程号,老师编号,助教编号,开班日期,结班日期,上课时间,上课地点,学费,班级容量)职工(职工id, 职工号,姓名,性别,年龄,部门,职务,联系电话,在职状态,入职时间,离职时间)学员(学员id, 学员号,姓名,性别,年龄,联系电话,电子邮箱,身份证号码)报名信息(学员号,班级号,报名日期)学员-班级结果(学员号,班级号,是否结课,考试时间,考试成绩,老师满意度,助教满意度)账目文件(学员号,班级号,折扣额,交款日期)4.2关系模型的优化4.3基表设计表4.33 Class表4.4索引设计1、Class表:主序:按照开班日期顺序排列次序:按照班级编号顺序排列2、Student表按照id顺序排列3、Staff表按照id顺序排列4、Account表主序:按照交款日期顺序排列次序:按照班级编号顺序排列5、Sign_up表主序:按照报名日期顺序排列次序:按照班级编号顺序排列6、Result表主序:按照学生编号顺序排列次序:按照班级编号顺序排列4.5视图设计UserView功能:查询班级提供有效信息,为其报名提供有效信息主要为咨询管理员提供方便组成:班级号,课程号,课程名,班级名,开班日期,结班日期,上课地点,上课时段,课时,课次,价格,班级容量,已报名人数StudentClass功能:查询学员所选的所有班级的详细信息,为学生打印班级信息提供数据 组成:学员号,学员名,班级名,任课教师,任课教师电话,开班日期,结班日期,上课地点,上课时段,学时,课次,价格,班级容量)ClassStudent功能:班级对应学员的基本信息和考试信息组成:班级号,学生号,班级名,学生姓名,性别,年龄,电话,Email,身份证号,考试时间,考试成绩)AccountView功能:查询学员对应班级的交款信息,为打印学员账单提供信息组成:交款日期,学员姓名,学员号,班级名,班级号,学员电话,学员身份证号,交款额)SignUpView功能:查询学员对应班级的报名信息,为查询学员是否交款提供信息,便于回访组成:报名时间,是否交款,学员姓名,班级名,费用,电话,身份证号,学员号,班级号)EvaluationTE功能:查询老师对应班级的满意度组成:学员号,班级号,老师号,老师姓名,班级名,结班日期,评价学员,老师满意度) EvaluationAS功能:查询助教对应班级的满意度组成:学员号,班级号,助教号,助教姓名,班级名,结班日期,评价学员,助教满意度) TeacherClass功能:查询老师所教班级的详细信息,为老师的时间规划和教学计划的指定提供参考组成:班级号,老师号,课程号,老师名,班级名,课程名,开班日期,结班日期,上课地点,上课时段,课时,课次,班级容量)AssistantClass功能:查询老师所教班级的详细信息,为老师的时间规划和教学计划的指定提供参考组成:班级号,助教号,课程号,助教名,班级名,课程名,开班日期,结班日期,上课地点,上课时段,课时,课次,班级容量)4.6授权设计1、咨询管理员权限:查看视图UserView、ClassStudent、StudentClass、TeacherClass、EvaluationTE、EvaluationAS常用操作:查询该培训中心的所有课程;查询该培训中心某一课程所对应的全部班级;查询某一时间段的可选班级;查询某一班级的全部学员信息;查询某一学员的课程信息;查询某学员所选班级信息;查询某学员所选班级的对应的班主任、教师信息、上课时间、成绩;查询某门课程的学费信息;查询某学员对某班老师、助教的评价信息2、信息管理员权限:维护(插入、更新和删除)基本表Course、Class、Result;查看、更新基本表Student;插入、更新视图ClassStudent、StudentClass常用操作:维护(插入、更新和删除)课程信息;维护(插入、更新和删除)班级信息;查询、更新学员信息;3、报名管理员权限:查看视图UserView、ClassStudent、StudentClass;维护(插入、更新和删除)基本表Student、Sign_up、视图SignUpView常用操作:查询该培训中心的所有课程;查询该培训中心某一课程所对应的全部班级;查询某一时间段的可选班级;维护(插入、更新和删除)学员信息;4、财务管理员权限:维护(插入、更新和删除)基本表Account、视图AccountView ;查询、插入Result常用操作:维护(插入、更新和删除)学员付款信息;查询某一学员的付款信息;5、职工管理员权限:维护(插入、更新和删除)基本表Staff;查看视图EvaluationAS、EvaluationTE、TeacherClass、AssistantClass常用操作:维护(插入、更新和删除)职工信息;查看老师、助教的对应班级的基本信息查看老师、助教的满意度4.1存储过程设计插入1. 课程(Course)插入形式:AddCourse 'KJF2004','数学分析一册',72,362. 职工(Staff)插入形式:AddStaff 'AS100009','钱塘','M','1991-6-18','培训部','助教','158********','在职'3.学员(Student)插入形式:AddStudent '1005','蓝天','F','2000-8-29','189********','lantiant@','234344************'4.班级(Class)插入形式:AddClass 'JEO10033048KDP','数学分析中级班春季班','JEO1003','TE100009','AS100002','2013-06-07','2013-07-09','每天:00-10:00','河西上课点',1299,305,报名表(Sign_up)插入形式:AddSign_up '1000','KYM10012013C2','2013-2-3'6.学员成绩+评价表(Result)插入形式:AddResult '1000','KYM10012013C2'7.账目表(Account)插入形式:AddAccount '1000','KYM10012013C2','1','2013-05-04' 更新1、更新课程完整信息UpdateCourse1@CourseNumber char(10),@CourseName varchar(100),@CourseHour int,@CourseTimes int2、更新课程课时、课次UpdateCourse2@CourseNumber char(10),@CourseHour int,@CourseTimes int3、--更新职工部门、职务UpdateStaff1@StaffNumber varchar(20),@StaffDepartment varchar(20),@StaffPost varchar(10)4、----更新职工电话UpdateStaff2@StaffNumber varchar(20),@StaffPhone varchar(20)5、----更新职工在职状态UpdateStaff3@StaffNumber varchar(20),@StaffState char(4),@StaffOutDate datetime6、---更新学员联系方式UpdateStudent1@StudentNumber varchar(20),@StudentPhone varchar(20),@StudentEmail varchar(100)7、---更新学员出生日期/身份证号UpdateStudent2@StudentNumber varchar(20),@StudentBorn datetime,@StudentId_card varchar(30)8、----更新班级的开班日期/结班日期/上课时段/上课地点/价格/班级容量UpdateClass1@ClassNumber char(20),@ClassStart_date datetime,@ClassEnd_date datetime,@ClassPeriod varchar(40),@ClassPlace varchar(50),@ClassFee money,@ClassCapacity int9、----更新班级的老师和助教UpdateClass2@ClassNumber char(20),@ClassTeacher_number varchar(20),@ClassAssistant_number varchar(20)10、--更新报名时间UpdateSign_up@Sign_upStu_number varchar(20),@Sign_upCla_number char(20),@Sign_upDate datetime11、--更新学生成绩UpdateResult1@ResultStu_number varchar(20),@ResultCla_number char(20),@a float12、--更新学生对老师和助教评价create proc UpdateResult2@ResultStu_number varchar(20),@ResultCla_number char(20),@te float,@as float删除1---通过课程号删除课程deleteCourse1@CourseNumber char(10) 2--通过课程名删除课程deleteCourse2@CourseName char(10)3---通过班级号删除班级DeleteClass1@ClassName char(10)4、---通过班级名删除班级DeleteClass2@ClassName char(10)5、---通过职工号删除职工DeleteStaff1@StaffName varchar(20) 6、---通过职工名删除职工DeleteStaff2@StaffName varchar(20) 7、---通过学员号删除学员DeleteStudent1@StudentName varchar(20) 8、---通过学员名删除学员DeleteStudent2@StudentName varchar(20) 9、---通过删除报名信息DeleteSign_up@stu int,@cla char(20)10---删除账目信息DeleteAccount@stu_number int,@cla_number char(20)4.8触发器设计1.insert_sign_up所属表:Sign_up功能:当某一班级报名人数已满,就无法再添加这个班的报名信息到Sign_up 表中,并显示提示信息2.pay_not所属表:Account功能:当向Account添加一项纪录的时候,Sign_up表中对应的纪录的pay_not属性自动设置为’Y’3.sign_up_date所属表:Sign_up功能:当报名日期晚于开班日期,便无法报名,不能向Sign_up表中添加相应数据,并显示提示信息源代码:4.exam_date所属表:Result功能:考试时间一定要在结班日期之前,开班日期之后,否则无法向Result 中添加考试时间,并提示。