湖南文理学院数据库原理与应用报告专业班级:电信12101班学生姓名:学生学号:指导教师:刘长青设计时间:2015.1.4-2015.1.10目录一、需求分析1、数据需求2、数据流图3、数据字典二、概念结构设计三、逻辑结构设计四、物理结构设计五、数据库的实施1、创建数据库2、数据表的维护与创建3、数据库索引和视图4、查询操作六、数据库触发器的规划和设计七、数据库的安全管理与维护八、结论学生考勤管理系统一、需求分析为物电学院设计一个学生考勤管理系统,该系统主要实现对学生基本信息、教师基本信息、学生考勤等的管理,学生考勤管理系统功能需求包括:学生基本信息表,教师基本信息表,班级表,专业表,课程表,班主任表,请假信息表,上课出勤记录表。1、数据需求:(1)学生基本信息表:学号,姓名,性别,班级,专业,院系(2)教师基本信息表:姓名,性别,编号(3)班级表:班主任,名称,编号(4)专业表:专业名称,编号(5)课程表:课程号,课程名,课程性质(6)班主任表:编号,姓名,性别(7)请假信息表:编号,学号,原因,开始时间,结束时间,请假天数,申请请假时间,班主任审批状态,班主任审批时间(8)上课出勤记录表:编号,上课时间,学号2、数据流图:学生考勤学生信息课程教师请假信息表学号课程编号编号3、数据字典(1)数据项数据项:学号别名:学生编号含义说明:唯一标识每个学生类型:字符型长度:9位取值范围:000000000-999999999取值含义:前四位表示学年,第5,6,7位表示专业和班级,第8,9,表示学号(2)数据结构数据结构:学生含义说明:学生考勤管理系统子系统的主体结构数据,定义了一个学生的有关信息组成:学号、姓名、性别、班级、专业、电话号码(3)数据流数据流名:请假信息表说明:学生请假信息及相关课程数据流来源:学生基本信息表,教师基本信息表、课程信息表数据流去向:请假学生、课程、组成:请假原因+学生学号+请假时间平均流量:500条/年高峰流量:50/天(4)数据存储数据存储:学生基本信息表说明:记录学生的基本信息写文件的处理:新生入学报到后从学院新生登记表中获取信息输入流出数据流:为请假信息表提供学生基本信息组成:学号、姓名、性别、班级、专业、手机号码、数据量:平均每年2000条存取方式:随机存取二、概念结构设计E-R模型:三、逻辑结构设计1、学生表student字段名数据类型可否为空键引用备注stu_nochar(10)否主键学生学号stu_namevarchar(30)否学生姓名stu_sexchar(2)否性别stu_classchar(13)否外键所属班级stu_majorchar(30)否外键所属专业Stu_tellvarchar(20)否电话号码2、专业表major字段名数据类型可否为空键引用备注major_idnumber否主键专业编号major_namechar(20)否专业名称学生学号姓名性别专业班级院系专业班级班主任属于管理请假考勤课程授课教师假条课程号课程名课程性质姓名性别编号编号学号……原因编号专业名称编号名称班主任编号姓名性别11属于111n1n1n1n1n1n1mm电话电话电话3、教师表teacher字段名数据类型可否为空键引用备注tea_nochar(10)否主键任课老师编号tea_namechar(20)否任课老师姓名tea_sexchar(2)否性别tea_tellVarchar(20)否电话号码4、班主任表classteacher字段名数据类型可否为空键引用备注classtea_nochar(5)否主键任课老师编号classtea_namechar(20)否任课老师姓名classtea_sexchar(2)否性别classtea_majornumber否外键所属专业classtea_tellVarchar(20)否电话号码5、学生上课出勤记录表kaoqin_record字段名数据类型可否为空键引用备注kaoqin_idchar(13)否主键上课出勤编号sk_timedate否上课时间stu_numberchar(10)否外键学生学号stu_statuschar(10)否学生上课考勤状态teacher_nochar(10)否外键教师编号course_nochar(13)否外键课程编号6、课程信息表course字段名数据类型可否为空键引用备注course_nochar(13)否主键课程编号course_namechar(20)否课程名称course_xzchar(4)否课程性质7、班级表classes字段名数据类型可否为空键引用备注class_nochar(10)否主键课程编号class_namechar(20)否课程名称classtea_nochar(5)否外键课程性质8、请假信息表qingjia字段名数据类型可否为空键引用备注idnumber否主键请假代号class_idchar(10)否外键班级代号stu_novarchar2(20)否外键学生学号leave_reasonvarchar2(200)否请假原因start_timedate否开始时间end_timedate否结束时间day_numbernumber否请假天数qingjia_timedate否申请请假时间class_tea_idchar(5)否外键class_tea_sp_statuschar(10)否班主任审批状态class_tea_sp_timedate否班主任审批时间备注:status表示审批状态:0为等待审批,1为同意请假,2为不同意请假。四、物理结构设计确定数据库的物理结构整个数据库包括八个表,每个表都有不同的联接关系,还有创建的视图也将表联系起来。存取途径:索引存取方法(1)按学生所在班级建立索引,可提高查询速度。(2)查询常用到的字段(学生学号、学生姓名、课程编号、教师姓名),可创建索引。五、数据库的实施1、创建数据库CREATEDATABASE[studentkaoqin]ONPRIMARY(NAME=N'studentkaoqin',FILENAME=N'E:\fsf\sql\studentkaoqin.mdf')(NAME=N'studentkaoqin_log',FILENAME=N'E:\fsf\sql\studentkaoqin_log.ldf')2、数据表的创建和维护(1)表的创建--专业表majorcreatetablemajor(major_idintnotnull,major_namechar(10)notnull,constraintpk_majorprimarykey(major_id))--教师表teachercreatetableteacher(tea_nochar(10)notnull,tea_namechar(20)notnull,tea_sexchar(2)check(tea_sex='男'ortea_sex='女'),tea_tellvarchar(20)notnull,constraintpk_teacherprimarykey(tea_no)--班级表classescreatetableclasses(class_nochar(10)primarykey,class_namechar(20)notnull,))--学生表studentcreatetablestudent(stu_nochar(10)notnull,stu_namevarchar(30)notnull,stu_sexchar(2)check(stu_sex='男'orstu_sex='女'),stu_tellvarchar(20)notnull,stu_classchar(10)referencesclasses(class_no),stu_majorintreferencesmajor(major_id),constraintpk_studentprimarykey(stu_no))--课程信息表coursecreatetablecourse(course_nochar(13)primarykey,course_namechar(20)notnull,course_xzchar(4)notnull)--学生上课出勤记录表kaoqin_recordcreatetablekaoqin_record(kaoqin_idchar(13)primarykeynotnull,sk_timedatetimenotnull,stu_numberchar(10)referencesstudent(stu_no),stu_statuschar(10)notnull,teacher_nochar(10)referencesteacher(tea_no),course_nochar(13)referencescourse(course_no))--请假信息表qingjiacreatetableqingjia(idintprimarykey,class_idchar(10)referencesclasses(class_no),stu_nochar(10)referencesstudent(stu_no),leave_reasonvarchar(200)notnull,start_timedatetimenotnull,end_timedatetimenotnull,day_numberintnotnull,qingjia_timedatetimenotnull,class_tea_idchar(5)referencesclassteacher(classtea_no),class_tea_sp_statuschar(10),class_tea_sp_timedatetime,)--班主任表classteachercreatetableclassteacher(classtea_nochar(5)notnull,classtea_namechar(20)notnull,classtea_sexchar(2)check(classtea_sex='男'orclasstea_sex='女')classtea_tellvarchar(20)notnull,classtea_majorintreferencesmajor(major_id),constraintpk_classteacherprimarykey(classtea_no))(2)添加约束手机号码的限制altertablestudentaddconstraintck_telphone1check(Telphonelike'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')altertableclassteacheraddconstraintck_telphone2check(Telphonelike'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')altertableteacheraddconstraintck_telphone2check(Telphonelike'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')(3)添加内容--1、学生表student添加内容insertintostudentvalues('201210101','黄小明','男','2012101','1','18244889098')insertintostudentvalues('201210102','张乐','男','2012101','1','18244787991')insertintostudentvalues('201220101','刘丹','男','2012201','2','18299238952')insertintostudentvalues('201220102','程冬冬','男