第1页学生管理系统数据库设计与实现班级:组成员及所完成的工作:系统名称:学生管理系统一.系统需求a.该“学生管理系统”只是对数据库应用技术的一个样本数据库的实例,重在对数据库一些方法的熟悉与掌握,其中包括从数据库的概念模型到ER图的绘制,再到数据库模式的建立(即为数据库及其基本表的建立),而后数据的录入(在此从略),最后完成一些简单的关系运算表达式的表达和相关的Select查询语句的使用。b.系统结构简述:本系统包括六个实体:学生;课程;教师;学院;社团;活动实体之间的关系转换为其他四个表:选修;代课;加入社团;组织活动(都是多对多关系的转换)实体“学院”与“学生”之间一对多的关系转换到表“学生”中注:各个基本表中关键字已在关系模式中说明c.该数据库需要进行如下数据处理:◎要查询所有学生的个人信息:学号,姓名,性别,民族,出生年月,籍贯,身份证号,学院编号,所在专业◎学生要查询本学期所开课程详细情况(成绩除外),并按“课程类型”分组输入:学号输出:学号,姓名,课程名,学分数,学时数,课程类型◎对某个学生的社团活动用清单表示(按社团分组,活动时间升序排序):输入:学号输出:学号,姓名,活动名称,活动地点,活动时间,社团名称,详细内容◎某位教师想查询自己本学期所代的课程及其上课情况:输入:教师姓名输出:教师编号,姓名,性别,课程名,课程类型,上课教室,上课时间第2页学生学号#姓名性别出生年月身份证号籍贯民族宿舍号课程课程编号#课程名课程类型学分数学时数教师教师编号#姓名性别学历家庭住址电话备注二.ER图图1。社团活动ER图图2。课程部分ER图学生选修课程成绩mn教师代课mn社团活动上课教室上课时间组织活动mn加入社团mn入社日期职务所属院系学院n1所在专业社团编号#名称成立年份会长编号所属级别备注活动编号#名称发起日期截止日期活动地点详细内容第3页三.关系模式系统中的实体有:学生;课程;教师;学院;社团;活动关系模式如下:学生(学号#,姓名,性别,民族,出生年月,籍贯,身份证号,宿舍号,学院编号,所在专业)说明:属性中“学院编号”和“所在专业”是一对多关系“所属院系”的转换,宿舍号的格式为:__-_-____(_代表数字)课程(课程编号#,课程名,课程类型,学分数,学时数)选修(学号#,课程编号#,成绩)教师(教师编号#,姓名,性别,学历,家庭住址,电话,备注)代课(课程编号#,教师编号#,上课教室,上课时间)说明:属性中“上课教室”的格式为:__-___,“上课时间”的格式为:_[1-7]_:__[S/D][;_[1-7]_:__[S/D]]社团(社团编号#,名称,所属级别,成立年份,会长编号,备注)说明:属性中“所属级别”的取值为{校级,院级}加入社团(学号#,社团编号#,入社日期,职务)活动(活动编号#,名称,活动地点,发起日期,截止日期,详细内容)组织活动(社团编号#,活动编号#)学院(学院编号#,名称,学院类型,院长编号,院办地址,院办电话)说明:“学院类型”可以看作是“工科”或者“理科”四.物理设计表1。学生表结构字段名类型特殊属性学号char(10)主健姓名char(8)notnull性别char(2)notnull民族char(10)notnull出生年月datetime籍贯char(80)notnull身份证号char(18)notnull宿舍号char(9)学院编号char(6)notnull所在专业char(20)notnull学院学院编号#名称学院类型院长编号院办地址院办电话第4页(此处要列出所有表的结构定义)五.系统实现1.数据库及其基本表的建立(周冬建)数据库的建立用企业管理器,基本表的建立用T-SQL语言:数据库名称为:SM_System建立数据库的T-SQL代码如下:CreatedatabaseSM_SystemOn(name=sm_system_data,filename=’e:\阴文斌_田巍_周冬建\sm_system_data.mdf)Logon(name=sm_system_log,filename=’e:\阴文斌_田巍_周冬建\sm_system_log.lmf)建立基本表的T-SQL代码如下:useSM_Systemcreatetable学生(学号char(10)notnull,姓名char(8)notnull,性别char(2)notnull,民族char(10)notnull,出生年月datetime,籍贯char(80)notnull,身份证号char(18)notnull,宿舍号char(9),学院编号char(6)notnull,所在专业char(20)notnull)createtable课程(课程编号char(6)notnull,课程名char(40)notnull,课程类型char(12)notnull,学分数smallint,学时数smallint)createtable选修(学号char(10)notnull,课程编号char(6)notnull,成绩smallint)createtable教师(教师编号char(6)notnull,姓名char(8)notnull,性别char(2)notnull,学历char(20),家庭住址char(80),电话char(12),第5页备注char(80))createtable代课(课程编号char(6)notnull,教师编号char(6)notnull,上课教室char(6)notnull,上课时间char(18)notnull)createtable社团(社团编号char(6)notnull,名称char(20)notnull,所属级别char(4),成立年份datetime,会长编号char(6)notnull,备注char(80))createtable加入社团(学号char(10)notnull,社团编号char(6)notnull,入社日期datetime,职务char(20))createtable活动(活动编号char(6)notnull,名称char(40)notnull,活动地点char(80),发起日期datetimenotnull,截止日期datetimenotnull,详细内容char(80))createtable组织活动(社团编号char(6)notnull,活动编号char(6)notnull)createtable学院(学院编号char(6)notnull,名称char(40)notnull,学院类型char(4),院长编号char(6)notnull,院办地址char(40),院办电话char(12))输入数据:Insertinto学生values(‘3006201101’,’李红’,’女’,’汉族’,’1985-05-12’,’河北省保定’,’120106198505121234’,’24-401’,’201’,’机械制造’)写出每个数据表数据的输入命令2.创建索引(略)3.创建视图(略)第6页4.创建存储过程(略)5。查询语句(阴文斌,周冬建)教师批注:此处不符合要求,应该创建存储过程实现!◎要查询所有学生的个人信息学号,姓名,性别,民族,出生年月,籍贯,身份证号,学院编号,所在专业Select学号,姓名,性别,民族,出生年月,籍贯,身份证号,学院编号,所在专业From学生◎学生要查询本学期所开课程详细情况(成绩除外),并按“课程类型”分组输入:学号输出:学号,姓名,课程名,学分数,学时数,课程类型设输入的学号的数值为xSelectS.学号,姓名,课程名,学分数,学时数,课程类型From学生asS,选修asX,课程asCWhereS.学号=X.学号andX.课程编号=C.课程编号andS.学号=xGroupby课程类型◎对某个学生的社团活动用清单表示(按社团分组,活动时间升序排序):输入:学号输出:学号,姓名,活动名称,活动地点,活动时间,社团名称,详细内容设输入的学号为x◎某位教师想查询自己本学期所代的课程及其上课情况:输入:教师姓名输出:教师编号,姓名,性别,课程名,课程类型,上课教室,上课时间设输入的教师姓名为xSelectJ.教师编号,姓名,性别,课程名,课程类型,上课教室,上课时间From教师asJ,代课asD,课程asCWhereJ.教师编号=D.教师编号andD.课程编号=C.课程编号and姓名=x完成日期:年月日