回想一下,一年前从学校毕业,当时自己觉得自己本事不小,差点鼻孔朝天,有点眼高手低。当时毕业答辩的时候,那个答辩老师是个山东人,口音不是很清楚,提出了两个问题,一个是数据库和数据仓库的区别,另一个是学生的主键你是如何保证不能被另一个学生修改了。
现在突然想到了这两个问题,结合自己这一年来的工作经验,做出以下回答,希望能过关吧。
1.关于数据库和数据仓库
数据库是面向事务的设计,数据仓库是面向主题设计的。数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。数据仓库的定义:面向主题的、集成的、与时间相关且不可修改的数据集合。数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
2.关于主键问题:
数据库学生数据的主键是学号,这个是教务处生成的,一般不会被修改和删除,有较好的唯一性,所以用它来当做学生的主键。
在学生的界面,从数据库根据学号查询出的结果,学生只能查看到自己的信息,并进行修改,没有删除自己信息的权限。如果学生查看到了非自己的数据,他应该向管理员进行反馈。可能由于种种原因他进行了修改,数据库中的数据也就随之修改了,那该怎么办呢。这个时候就要引入一个操作记录表了。主键id自增列,记录操作的sql语句和内容(即操作类型和内容),更重要的是记录操作时间和操作人,为以后管理员方便查询操作记录,如果有精力还可以在管理员界面做出一个查询页面,展示操作记录。还可以在学生界面,存储登陆人的信息作为session,每次操作的时候,可以匹配学号主键和登录人(操作人)的学号是否一致,不一致的时候要弹出警告栏,不能进行修改,甚至强行退出登陆。
在管理员界面,由于有了操作记录表,可以方便的查询到每次操作的记录,防止个别人的不认账行为,另外管理员也不能进行删除操作记录。如果本事过大,还可以做出一个功能为查询最近几次的操作记录,可以左右对比每次更新的内容和操作人来。