数据库这门课程,相信计算机相关专业的学生都不陌生。很多时候,一个公司能否 在全球化的浪潮中幸存下来并且日益壮大,数据库起到了很关键的作用。
首先,看一下wiki上对数据库的定义:“A database is an organized collection of data, stored and accessed electronically. Database designers typically organize the data to model aspects of reality in a way that supports processes requiring information, such as (for example) modelling the availability of rooms in hotels in a way that supports finding a hotel with vacancies.”大致意思是说数据库是一组数据集合,以电子化的方式存储数据。数据库在现实生活中的应用很广,比如一个宾馆的空房间就可以建立一个数据库模型。
今天,介绍一下笔者美国留学期间所学的数据库课程,任课老师为Dr. Storey教授。她经常在课上说的一句话是“database is real world representation”.数据库是现实世界的表示。的确,现实生活中的一些名词可以抽象成实体Entity,实体与实体之间互动的动词可以抽象成关系Relationship,通过这样的一种建模方式,我们可以把现实生活中的关键投射成电脑可以识别、储存的记忆单元,之后,当我们想要寻找特定信息的时候,可以通过query查询的方式,来向电脑发出询问请求,如果数据库应用程序和数据管理系统一切正常,就会快速地、精确地告诉我们答案。
在我们的课程上,教授不仅会告诉我们知识点,还会帮我们理论联系实践。比如,教授会问,哪一家企业对数据的挖掘做得很成功,还会讲案例,data mining数据挖掘的各种例子。沃尔玛等大型企业都是我们课程上会提及的例子。
教授的课程活泼生动,讲到激情的时候,会走到讲台下面,和我们进行互动,比如,她会认真地问同学名字的发音,然后提问一个数据库相关的问题,通过这样的教学方式,学生得到了关注,努力开动脑筋,对知识点加深了印象。另外,教授还非常细心,在我们期中考试的时候,给我们带了铅笔,我就去借了一支。
数据库的理论基础是数学。如果大家想要深入了解数据库,函数、集合的概念的必不可少的。另外,想要学好数据库,需要对1NF,2NF,3NF,BCNF等概念也要烂熟于心。要清晰地知道为什么每个列的数据都要是同一个类型(domain integrity constraint)、为什么foreign key作为不同relation的连接非常重要(referential integrity constraint)。就像写代码前先要用算法,我们实现一个数据库前也要先有解决方案,Entity-Retionship model(ER模型)就是我们的解决方案。构建好ER模型之后,把模型转化为relational model,再进行实现,就非常方便,也保证正确性。
现在是一个信息时代,我们看数据不再是几个几十个甚至几千几万个,而是几百万,几亿几十亿,在这么大的信息量的情况下,一个好的数据库尤为重要。