黄欣
摘要:针对目前数据库课程中教学案例选取存在的问题,分析和研究了国内主流数据库课程教材中所设计的案例数据库,提出以论坛数据库“simpleforumdb”作为课程的教学和实验案例数据库,并给出该案例数据库的详细设计。
关键词:数据库;课程教学;案例数据库设计
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)31-0001-02
Optimal Design of Case Database in Database Course Teaching
HUANG Xin
(Jiaxing Technician College Department of Trade and Tourism,Jiaxing 314036, China)
Abstract:Aiming at the problem of selecting the teaching cases in, we analysis and research the case database designed int the domestic and mainstream textbook of database course. We propose a forum database named “simpleforumdb” as teaching and laboratorial case, and the detailed design of this database is given at the mean time.
Key words:database;course teaching;case database design
数据库技术是现代IT技术的重要支撑技术,是构建各类信息系统与应用系统的核心技术和重要基础[1]。教育部的相关文件指出“当代大学生应具备利用数据库技术对信息进行管理、加工和处理的意识与能力,用以解决本专业领域中的问题的能力”[2]。
国内主流数据库课程教材在组织内容时,虽然有的侧重数据库实现原理的介绍,有的以某一数据库管理系统(如Oracle、MySQL等)为平台介绍数据库技术的应用,有的兼顾理论和技术,但无一例外都引入了一个或多个数据库教学项目作为贯穿全书各章节、演示数据库关键概念和技术的案例。许多在教学中广泛使用的案例数据库较为简单,与实际工程项目相差较大,不能很好地覆盖数据库课程所有知识点,导致学生在未来工作中遇到实际项目时无法快速上手。如何设计合理的教学案例数据库已成为数据库课程教学亟待解决的重要课题。
1 主流数据库课程教材使用的案例数据库分析
下面从本专科两个教学层次,选取两本主流数据库课程教材中引入的案例数据库加以分析各自的优点和不足。
1.1 图书管理系统数据库
由南京师范大学郑阿奇教授主编的数据库课程系列教材被列为普通高等学校国家级规划教材,在职业院校和应用型本科院校的数据库课程教学中广泛使用。该教材以图书管理系统数据库作为教学案例[3]。
1.1.1 图书管理系统数据库逻辑结构
图书管理系统数据库的逻辑结构[3]如下:
1)管理员表:Administrator(角色名,密码,备注)
2)读者表:TReader(借书证号,密码,姓名,性别,出生时间,专业,借书量,照片,备注,联系方式)
3)图书表:TBook(ISBN,书名,作译者,出版社,出版年月,价格,复本量,库存量,分类号,内容提要,封面照片)
4)借阅表:TLend(借书证号,ISBN,图书ID,借书时间,应还时间)
5)还书表:HLend(编号,借书证号,ISBN,图书ID,借书时间,还书时间)
6)借出表:TBLend(图书ID,ISBN,是否借出)
1.1.2 图书管理系统数据库设计分析
优点:图书管理系统数据库设计较为完整,学习者不难结合其他程序设计语言(如C#、JSP、ASP.NET等)构造出一个实用的数据库应用系统作为课程设计。另外,该案例数据库的属性较为丰富,可涵盖SQL语言的主要数据类型。
不足:第一,可能是为了方便数据查询,图书管理系统数据库设计上存在不规范问题:部分表没有达到3NF的规范化要求。例如在借阅表TLend中,存在非主属性ISBN对码(借书证号, 图书ID , 借书时间)的部分函数依赖[4]。还书表HLend也存在类似问题。改进的方法是从借阅表TLend和还书表HLend中去除属性ISBN,同时在TLend中加入“编号”属性作为该表的主码。第二,图书管理系统数据库的设计存在冗余问题,部分属性属于冗余属性,可以从相关表中去除[4]。例如图书表TBook中每本书的“复本量”和“库存量”可通过对借出表TBLend中相关记录进行聚集函数查询(使用函数count)得到,所以这两个属性应该从图书表Tbook中去除(如果存在,为了维护数据完整性系统将付出很大的性能代价)。第三,和企业实际工程项目相比,图书管理系统数据库略显简单。
1.2 学生选课数据库
由中国人民大学王珊和萨师煊两位教授编著的《数据库系统概论》一书引入的案例数据库——学生选课数据库在国内多数本科院校授课时广泛采用[5]。《数据库系统概论》也是国内第一部介绍数据库的教材,一直被国内大多数本科院校作为课程教材和主要教学参考书。
1.2.1 学生选课数据库逻辑结构
学生选课数据库的逻辑结构[5]如下:
1)学生表:Student(Sno,Sname,Ssex,Sage,Sdept),其中属性Sno表示学号,Sname表示学生姓名,Ssex表示学生性别,Sage表示学生年龄,Sdept表示学生所在系。
2)课程表:课程表Course(Cno,Cname,Cpno,Ccredit),其中属性Cno表示课程号,Cname表示课程名,Cpno表示先修课程的课程号,Ccredit表示课程学分。
3)选课表:选课表SC(Sno,Cno,Grade),其中属性Grade表示选课成绩。
1.2.2 学生选课数据库设计分析
优点:学生选课数据库由学生表Student,课程表Course和选课表SC构成。该案例数据库设计相当简洁且符合关系规范化要求,因而在国内数据库课程教学中广泛采用。
不足:第一,由于组成数据库的表的数量较少,属性定义不能完全涵盖SQL语言的主要数据类型(如在定义学生选课数据库的表时无法使用日期时间类型)。第二,学生表Student的属性Sage是派生属性,应改为Sbirthdate(学生出生日期)较为合理,且可在定义时使用日期时间类型。第三,相比企业实际工程项目,学生选课数据库过于简单。教师在讲授复杂查询技术、存储过程、触发器等内容时,设计例题会比较勉强,无法设计出实用性强的例题(有时仅仅为了说明相关理论或技术而举例,无法让学生理解该理论或技术的实际价值)。
2 案例数据库的优化设计
2.1 设计良好的案例数据库应满足的条件
基于前面对主流数据库课程教材中引入的案例数据库的分析,我们认为一个设计合理、实用、新颖,具有较高教学价值的案例数据库应该满足:
1) 案例数据库应来源于真实工程项目或对实际项目进行简化,具有一定的实用性、启发性和创新性,能完整贯穿数据库课程主要知识点,对学生进行数据库知识学习和技能训练起到良好的辅助效果[6]。
2) 案例数据库的所有数据表应符合关系规范化要求,所有数据表均应达到3NF甚至BCNF。
3) 案例数据库的数据表数量应当在5~6个最为适宜。实践教学表明,如果案例数据库中表的数量太多,对于初学者而言,在学习多表连接查询或嵌套查询时会有一定的干扰;表的数量太少,在讲授存储过程、触发器等内容时,教师不易设计例题。
4) 构成案例数据库的数据表中应包含较多的属性,这样才能涵盖SQL语言的主要数据类型,以便让学生接触和理解各种数据类型的使用方法。毕竟对于任何程序设计语言而言,数据类型始终是最基础、最重要的教学内容之一。
5) 案例数据库的记录数量要达到一定规模,以便能更好地满足教学和实验的需求。
2.2 论坛数据库“simpleforumdb”
论坛模块是各类网站中必备的模块之一[7],也是学习各种程序设计语言最理想的入门项目。我们在对“嘉兴人网”、“天涯”等典型论坛结构分析的基础上,设计出论坛数据库“simpleforumdb”项目作为课程的案例数据库。该案例数据库具有很好的工程项目背景且符合前文提到的设计良好的案例数据库应满足的条件,可用于实际项目(或对其稍加改造)[8]。论坛数据库“simpleforumdb”的逻辑结构如下:
1) 用户等级表:rank(rankno, rankname, minimumintegral),其中属性rankno表示等级编号,属性rankname表示等级名称,属性minimumintegral表示达到某级别的最低积分。
2) 用户表:user(username,emailaddress, password, registerdate, integral, userrank, status, lastactivetime, lastenunciabletime),其中属性username表示用户名,属性emailaddress表示电子邮箱地址,属性password表示密码,属性registerdate表示注册日期,属性integral表示用户积分,属性userrank表示用户等级,属性status表示状态(是否在线),属性lastactivetime表示上次活跃时间,属性lastenunciabletime表示上次发表时间。
3) 版块表:column(columnid, columnname, moderator, columndescription, parentcolumnid),其中属性columnid表示版块编号,属性columnname表示版块名称,属性moderator表示版主的用户名,属性columndescription表示版块说明,属性parentcolumnid表示父版块编号。
4) 主帖表:mainpost(mainpostid, belongedcolumnid, poster, title, content, posttime, clickrate),属性mainpostid表示主帖编号,属性belongedcolumnid表示主帖所属版块编号,属性poster表示发表主帖用户的用户名,属性title表示主帖标题,属性content表示主帖内容,属性posttime表示发帖时间,属性clickrate表示点击率。
5) 跟帖表:replypost(replypostid, belongedmainpostid, replyer, replycontent, replytime),属性replypostid表示跟帖编号,属性belongedmainpostid表示跟帖所回复的主帖编号,属性replyer表示回复用户的用户名,属性replycontent表示回复内容,属性replytime表示回复时间。
3 结束语
通过对现有的国内主流数据库教材中引入的案例数据库进行比较分析,我们设计了具有较强工程背景和较高教学价值的案例数据库——论坛数据库“simpleforumdb”,以取代传统的图书管理系统数据库和学生选课数据库,用于数据库课程教学和实验教学。实践表明,教学案例数据库的优化设计对于改善教学效果,提高学生实践能力,培养学生的创新精神起到重要作用,最大限度地满足了教师教学和学生实验的需求。
参考文献:
[1] 朱敏.SQL Server课程教学方法探究[J].新课程·中旬, 2014, 5(1): 96-97.
[2] 教育部高等学校非计算机专业计算机基础课程教学指导分委员会.关于进一步加强高校计算机基础教学的基点意见[M].北京: 高等教育出版社, 2004.
[3] 郑阿奇.SQL Server 2008应用实践教程[M].北京: 电子工业出版社, 2010:14-21.
[4] 西尔伯沙茨(Silberschatz A.)等著,数据库系统概论(原书第6版)[M]. 杨冬青,等,译.北京:机械工业出版社,2012:184-189.
[5] 萨师煊,王珊.数据库系统概论[M]. 4版.北京: 高等教育出版社, 2006:28-33.
[6] 张欢枝.案例教学法在SQL Server数据库教学中的运用研究[J].计算机光盘软件与应用,2013,2:270.
[7] 付逍遥.基于SSH架构的论坛系统设计与实现[J].福建电脑, 2015, 7: 107.
[8] 胡秉玺.网上论坛系统设计与实现[D].西安电子科技大学,2014:10-20.