2010年11月8日星期一

我给数据库课程的建议以及任课老师的回复——无语了

老师好

Database design(COMP211)讲得太抽象了。它讲的大概是数据库原理吧,但我们连实际的数据库都还没见过。
其中介绍的很多概念、优点、缺点都是从最抽象的角度解释的,(作者)力图概括所有数据库系统的特征,而不涉及它们的具体实现。老师当然是理解那些抽象概念背后的东西的,讲解起来自然轻松,但我们却是不知道的。这就像你知道个位数加法,于是会算123+789=912,而我不知道背后的加法法则,看得一头雾水,以致同学们听课的兴致不高。
学了快2个月的数据库,我们很多同学连电脑上实际的数据库文件、数据库管理系统都没见过;更别说书写SQL语句,上机调试了。
最近老师又教了我们数据库的规范化。我觉得这就好比一句java代码都没学过,老师就教我(面向对象)设计模式了,工厂方法动机是什么、怎么实现、什么优点、什么坏处……我们根本无法动手实验、调试,无法感受老师讲的东西;测验前只能死记硬背,这恐怕并不是学校希望的吧!
我觉得应该将“动手做”提前,理论知识延后。让我们先感受一个具体的数据库和数据库管
理系统(如MSSQL和SQL Server Management Studio),学会操作它,懂得用sql查询、更改、新建;然后老师再教导理论知识,从抽象的角度概括,同时可再辅以其他的数据库(如Oracle)的特点。同学们有了之前MSSQL的基础,理解那些内容应该轻松多了。

老师的回复

谢谢你对我的教学的建议。一个扎实的数据库基础(特别是数据库的关系模型)和理论知识对一个学生之后的学习很重要,这是上机操作的前提。如果一个学生不懂得主键、参照完整性、一对多关系等等,他怎么能在ACCESS中设计出良好的数据库呢?我们下周就要上机操作了,另外我给你看看你们将来关于数据库的学习课程。
第二年:数据库管理系统
第三年:数据仓库
第四年:数据库管理和数据库编程
你们有机会深入地学习Oracle数据库。

原文

Thank you for your suggestions to my teaching in the Database Design course. It is very important for students to have a solid understanding of the database fundamentals (especially the relational data model) and the design theory prior to any lab sessions. If a student does not know what are meant by the term primary key, referential integrity, one-to-many relationship etc, how can s/he create a "good" database in MS Access? There is a roadmap that we have to follow and the lab sessions will be available next week.
In addition, there are 3 more database-related courses in our program and you will have the opportunities to have a deeper understanding of the Oracle DBMS:
Second year:  DBMS
Third year: Data warehousing and Data Mining Fourth year: Database administration and programming.

评价

冥顽不化。老师采用的一种古典的、学院式的教学方法,在很多情况下这并不是一种优秀的教学方法。“不闻不如闻之,闻之不如见之,见之不如知之,知之不如行之,学至于行之则止矣。行之,则明——荀子”
数据库并不是一门玄学,它是一门实践课,和程序设计一样。看网上的众多程序设计教程,有多少不是先给你一个Hello word,尽管你可能不理解为什么能输出hello word。哪一份入门教程先教你该语言的进化史了?哪一份入门教程先教你数据结构了?哪一份入门教程先教你编译原理了?哪一份入门教程先教你上下文无关文法的重要性了?哪一份入门教程先教你面向对象设计模式了?哪一份入门教程先教你全套关键字了?全都没有!
我目前发现的理想切入点是实体关系图,由此展开关系键、关联映射。然后立即在数据库操作系统平台上操作,我准备的是SQL Server,立即实践关系键——主要是主键和外键。可以先讲解构建数据库,也可以先讲解查询数据库——通过SQL语句。之后可以讲视图、储存过程等等。一切都是环环相扣,水到渠成。
老师还说必须先学完理论才能设计出良好的数据库。没有人能第一次设计就达成完美设计!他必须经过困惑和失败。我们现在没有为哪个公司设计数据库。设计值得失败!失败了才能知道哪里导致失败,如何避免失败。经过了几次失败,摸索出了一些模模糊糊的规律,这时教导范式,就有理清思路、总结提升的作用。……
我计划圣诞节或寒假写一份数据库学习教程。

1 条评论:

匿名 说...

无语了。。顽固不化@!!!