浅谈考试系统数据库设计及实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈考试系统数据库设计及实现

浅谈考试系统数据库设计及实现[摘要] 数据库的应用设计在软件开发中的应用日趋广泛,它是数据库应用系统开发生命周期中的重要一环和系统开发成败的决定性一步。该文通过“考试系统”实例,深入分析数据库设计的基本原则和相关技巧。 [关键词] 数据库设计 主外键 检索 数据字典 数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。本文对数据库应用设计介绍以下几个方面内容: 1 主外键的使用 数据库中的主键是为了使记录能惟一标识,外键用来关联表与表之间的联系,主键和外键是把多个表组织为一个有效的关系数据库。可以通过主键和外键来了解数据库的设计架构,因此就出现以数据库为驱动的开发方式。开发人员根据数据库的设计和流程顺序开发程序,软件设计人员只需严格控制数据库的设计方向即可控制开发人员的开发过程。目前多数ERP或MIS系统都是按照这种模式进行,因为系统本身的特点就是过程化的,数据库驱动方式就是一种过程化的开发方式,也是一种较为简捷快速的开发方式。 这里,通过“考试系统”中的试题管理模块来体现主外键的使用。试题编号作为惟一标识来标识每道试题,而试题中的试题选项不该与试题放在同一张表中,而是通过另一张试题选项表来管理,此时试题选项表中的试题编号就要外键关联试题表中的试题号,试题选项表再通过试题编号和其自身的选项编号来组合起来作为主键惟一标识,详细表设计如下: Create table T_Subject( SubjectID int, Descriptions text Primary key(SubjectID)) Create table T_SubjectOption( SubjectID int, OptionID int, Descriptions text Primary key(SubjectID,OptionID), Foreign key(SubjectID) references T_Subject(SubjectID)) 通过以上表设计,可以保证在试题选项表T_Subject— Option中的试题号都可以在试题表T_Subject中找到,体现了数据的相互依赖关系,同样通过这样的表结果可以看出试题表与试题选项表之间的关系。 2 数据字典的设计 数据字典(Data Dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。其特点是供人查询对不了解的条目的解释,数据量基本有限,在软件中用于搭配其他模块的属性选择,比如“考试系统”中安排考试的时候下拉选择年级、专业、班级等字典信息,常规的设计方法是每个属性设计一张字典表,如: 年级表 Create table T_Grade( GradeID char(10), GradeName varchar(100), Primary key(GradeID)) 专业表 Create table T_Major( MajorID char(10), MajorName varchar(100), Primary key (MajorID)) 此时只需对这些数据字典表进行编辑即可,但是这样的设计还会存在些问题,这里专业代码MajiorID是主键,不允许重复,且一旦被其他模块选中后,则不允许再被修改,在实际软件使用过程中经常会有需要修改键值属性的时候,比如“网络系统管理”这个专业的专业代码原来是“wlxtgl”,软件经使用后发现代码太长,不方便用户记忆使用,需要将其缩短为wg,而按照以上字典设计就无法再进行修改代码。 当然,数据库中可以将这些关联表的外键设置级联更新,实现专业代码更新,其他有关联的模块都级联更新过来,可想而知,当数据量少的时候级联更新没问题,当数据量大的时候,级联更新就变得很慢,会造成极大的资源浪费,而且在编辑数据字典时,主键的重复判断也不好处理,有什么方法可以解决这些问题呢?不妨看如下表设计结构: Create table T_Major( MajorID int identity, MajorCode char(10) unique, MajorName varchar(100), Primary key(MajorID)) 以上设计是将主键用自动增长类型来实现,由数据库来控制表中记录的惟一性,此时程序就无需担心表记录的重复,而专业编号由另一个属性MajorCode来表示,且该属性设置成unique(惟一),在其他模块关联专业的主键MajorID,并不关联MajorCode,程序可以通过视图来读取MajorCode,这样就可以实现专业代码允许用户

文档评论(0)

linsspace + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档