平时成绩记分系统代码实现过程v基础数据设计Word文档格式.docx
《平时成绩记分系统代码实现过程v基础数据设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《平时成绩记分系统代码实现过程v基础数据设计Word文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
图1.7学生与登录用户之间的关系7
图1.8基础数据的逻辑模型8
图1.9设置“学生”的主键8
图1.10确保所有的表都将会生成9
图1.11最终的逻辑模型9
图1.12逻辑模型转换为物理模型——菜单操作10
图1.13物理模型数据库类型及名称设置11
图1.14自动转换得到的物理模型11
图1.15更改数据库类型12
图1.16配置外键关联的实现类型13
图1.17创建数据库脚本——菜单13
图1.18设置脚本文件路径14
图2.1更改数据库类型23
图2.2更改外键关联的实现类型24
图2.3设置PowerDesigner数据库创建脚本的字符集25
代码目录
代码1.1基础数据表创建脚本15
基础数据管理(管理员业务)
在“平时成绩记分系统工程代码实现过程v1.0-用户登录.doc”中我们实现了一个基本的用户登录的功能。
但登录用户所提供的信息非常简单。
对于一个实际的应用系统来说,仅仅登录名和密码还远远不够往往还需要用户的姓名、联系方式等信息——对于教师来讲,可能还有职称等信息;
对于学生来讲,可能还有班级、专业等信息——这将形成一个复杂的、紧密联系的数据集。
我们把这些暂时不涉及平时成绩记录的、稳定的数据称为基础数据,包括学生、班级和课程(教师数据暂不考虑),由管理员admin管理。
学生可以浏览与自己相关的这些基础数据。
1基础数据设计
我们用PowerDesigner来进行数据库的设计。
大致经过三个步骤:
1)概念模型设计
2)逻辑模型设计
3)物理模型设计
概念模型设计
为了使用继承的关系(学生继承于登录用户)以及复杂的数据联系,需要修改PowerDesigner概念模型的设置,即进行以下操作:
1)点击菜单“ToolsModelOptions…”
PowerDesigner中设置数据模型的特性——菜单
2)左边选择“ModelSettings”,右边点击“Notation”下拉框,选择“E/R+Merise”,再点击“OK”即可。
PowerDesigner中设置数据模型的特性——对话框
所设计的概念模型如下图所示:
基础数据概念模型
逻辑模型设计
逻辑模型可以从概念模型自动转化而得,在PowerDesigner中操作如下:
1)选取欲转换的概念模型(此处为“基础数据概念模型”),再选取菜单“”——“”,如下:
概念模型转换为逻辑模型——菜单操作
2)在对话框中输入逻辑模型名称
逻辑模型名称设置
3)点击“确定”,得到逻辑模型:
转换得到的逻辑模型
4)添加学生与登录用户之间的依赖关系,如图所示(注意“学生”方的基是“0..n”):
学生与登录用户之间的关系
5)得到逻辑模型,如下图:
基础数据的逻辑模型
6)手工将“学生”表“登录名”字段设为主键,同时将它改更加好听的名称:
“学号”,编码改为“studentId”。
如下图所示:
设置“学生”的主键
类似地,将“班级”中“专业编码”改为好听的“专业”,将“选修”及“班级可选修”中的“授课编码”改为“课程”,将“班级可选修”中的“班级编号”改为“班级”。
7)最后,确保所有的表都将会生成,特别是“登录用户”表需要手工设置。
具体的菜单操作为“Model”“Entities…”,对话框设置见下图标注:
确保所有的表都将会生成
最终得到的逻辑模型见下图:
最终的逻辑模型
物理模型
同样,物理模型可由逻辑模型自动转换而来。
操作如下:
1)菜单操作过程为:
“Tools”——“GeneratePhysicalDataModel…”,见下图。
逻辑模型转换为物理模型——菜单操作
2)在弹出的对话框中选择数据库类型,给出物理模型的名称
物理模型数据库类型及名称设置
3)得到物理模型
自动转换得到的物理模型
生成创建数据库的脚本
1)设置数据库类型。
菜单操作为“database”“ChangeCurrentDBMS…”,在弹出的对话框“DBMS”中选择正确的数据库类型。
注意,如果数据库类型即便为“MicrosoftSQLServer2005”,那么也要选择“MicrosoftSQLServer2000”。
更改数据库类型
2)配置外键关联的实现类型为“Declarative”。
菜单操作为“Model”“References…”:
配置外键关联的实现类型
3)如果数据库为SQLSERVER2005,那么需要按照第1步(更改数据库类型),将数据库类型改回为“MicrosoftSQLServer2005”。
4)生成脚本。
菜单操作为“Database”“GenerateDatabase…”:
创建数据库脚本——菜单
5)设置脚本文件路径:
设置脚本文件路径
6)点击“确定”后,生成的创建脚本如下:
代码1.1基础数据表创建脚本
ifexists(select1
fromsys.sysreferencesrjoinsys.sysobjectsoon(o.id=r.constidando.type='
F'
)
wherer.fkeyid=object_id('
SC'
)ando.name='
FK_SC_SC_STUDENT'
altertableSC
dropconstraintFK_SC_SC_STUDENT
go
FK_SC_SC2_LECTURE'
dropconstraintFK_SC_SC2_LECTURE
class_sc'
FK_CLASS_SC_CLASS_SC_LECTURE'
altertableclass_sc
dropconstraintFK_CLASS_SC_CLASS_SC_LECTURE
FK_CLASS_SC_CLASS_SC2_STUDENTC'
dropconstraintFK_CLASS_SC_CLASS_SC2_STUDENTC
student'
FK_STUDENT_STUDENT_C_STUDENTC'
altertablestudent
dropconstraintFK_STUDENT_STUDENT_C_STUDENTC
FK_STUDENT_STUDENT_L_LOGINUSE'
dropconstraintFK_STUDENT_STUDENT_L_LOGINUSE
studentClass'
FK_STUDENTC_CLASS_MAJ_MAJOR'
altertablestudentClass
dropconstraintFK_STUDENTC_CLASS_MAJ_MAJOR
dropconstraintPK_SC
fromsysobjects
whereid=object_id('
andtype='
U'
droptableSC
dropconstraintPK_CLASS_SC
droptableclass_sc
altertablelecture
dropconstraintPK_LECTURE
lecture'
droptablelecture
altertableloginUser
dropconstraintPK_LOGINUSER
loginUser'
droptableloginUser
altertablemajor
dropconstraintPK_MAJOR
major'
droptablemajor
dropconstraintPK_STUDENT
droptablestudent
dropconstraintPK_STUDENTCLASS
droptablestudentClass
/*==============================================================*/
/*Table:
SC*/
createtableSC(
studentIdvarchar(20)notnull,
lectureIdvarchar(30)notnull
declare@CurrentUsersysname
select@CurrentUser=user_name()
executesp_addextendedproperty'
MS_Description'
'
选修'
user'
@CurrentUser,'
table'
'
学号'
column'
studentId'
课程'
lectureId'
addconstraintPK_SCprimarykeynonclustered(studentId,lectureId)
class_sc*/
createtableclass_sc(
lectureIdvarchar(30)notnull,
classNamevarchar(30)notnull
记录该授课所面向的班级,为生成学生选修记录提供范本'
班级'
className'
addconstraintPK_CLASS_SCprimarykeynonclustered(lectureId,className)
lecture*/
createtablelecture(
lectureNamevarchar(100)null
授课'
授课编码'
授课名称'
lectureName'
addconstraintPK_LECTUREprimarykeynonclustered(lectureId)
loginUser*/
createtableloginUser(
idvarchar(20)notnull,
passwordvarchar(50)null,
namevarchar(30)notnull,
telephonevarchar(50)null,
mobilephonevarchar(30)null,
emailvarchar(100)null,
addressvarchar(200)null,
zipCodevarchar(30)null,
contactvarchar(200)null
登录用户'
登录名'
id'
密码'
password'
姓名'
name'
电话'
telephone'
手机'
mobilephone'
email'
地址'
tab