日期:2014-05-16  浏览次数:20427 次

《阿勇java建站教程》2.3-数据库特殊应用

?

2.3-数据库特殊应用
大家好,我是阿勇,感谢大家阅读这篇文章,并且希望大家能将《阿勇java建站教程》全部看完!
本节继上节内容(T-SQL)之后继续说说数据库相关的内容。这节说的是数据库的“特殊”应用,其实是将数据库应用在了你意想不到的地方。举个例子:
我们打游戏的时候,会对游戏进行一些设置像cs里对鼠标灵敏度、视频、声音进行设置,这样以后在玩这个游戏时,设置都能被保存且生效。是否想过这样的问题:对软件进行的设置都保存在哪?怎么保存的?又是怎么生效的?
软件里的设置参数在软件里就像定义了一个变量,我们可以对该变量进行赋值、修改,比如我们设置了软件的语言为简体中文,此时这个变量的值就是“简体中文”,软件在使用该变量时获得的值就是“简体中文”,软件运行时其变量是有生命周期的,一般的软件停止运行了,该变量就被销毁了,再重启该软件时这样一个定义语言的变量就会恢复到编码时定义的默认值即“默认语言”。为了让我们一次设置,始终起效,我们就需要将设置好的语言变量的值保存起来,怎么保存呢?目前最常用的方法就是将设置信息保存成静态文件。如.xml文件,.cnf文件,.ini文件等等。软件被关闭再次启动时会先读取这些静态文件,将保存好的设置信息读取出来,并且给对应的“变量”赋值。请看如下流程图:
《阿勇java建站教程》2.3-数据库特殊应用
也许你已经想到了,在“读取配置文件”这一步,我们完全可以用数据库代替变为“读取数据库”。
面对如上所举的例子,我们其实有至少三种解决方案:
1.保存在软件变量中
优点:快捷,无复杂操作
缺点:临时保存,软件停止则失效
2.保存成静态文件
优点:永久保存,时效性高
缺点:容易被用户直接读写,暴露软件细节
3.保存在数据库中
有点:结构灵活,永久保存
缺点:附加软件运行成本高

本节内容重点说明第3中方案。
大家对数据库的一般认识就是:数据库保存了业务数据,我们的软件就是对这些业务数据进行逻辑操作的,所以数据库就是一个保存信息的仓库。然而,除了保存业务数据之外,数据库能做的还有很多。除了上述的例子外,下面介绍一个典型的例子:
权限,角色
账户的权限和角色是辅助功能,也是关键功能,这样的功能不是核心业务,是在业务之外的功能。为了能够设计出完整的权限,角色管理系统,很多人有很多的设计思路。简单到用拦截器作权限判断,复杂到有几十张表完善此功能,这些例子相信你在今后的实际工作中一定会遇到的,可以说,帐号权限和角色的管理是一个软件不可缺少的部分。我倾向于在软件中提供高效的功能,让用户在最短的时间内完成最正确的工作。对于账户权限、角色的设计也是如此,一个帐号可以有非常多的权限,可以富有非常多的角色,他们之间没有固定的联系,也可以有固定的联系,但是一旦确定了固定的联系,那么灵活性就会被降低,这有点像“耦合”。因此我主张用户的角色或者权限直接与软件提供的功能对应,甚至可以忽略掉用户的角色和权限。在数据库中可以建立如下模型:
功能表——该表保存软件中所有的功能,可以细致到每个按钮,每个操作,该表和角色表主外键关联
角色表——保存每个角色信息

数据库的应用在很大程度上已经远远超过它本身的含义了,其实数据是从具体事物抽象而来的东西,也就是这种数学模型的建立,才得以用数据记录整个世界,进一步说,软件中的代码也是一种数据,我们所开发的软件就是对数据的理解和操作。这也是clojure的思想——代码即数据。

本文原创写的不好的地方欢迎大家与我一起交流(微信号:zhyy22145),转载请注明出处!-《阿勇java建站教程》2.3-数据库特殊应用

《阿勇java建站教程》统一交流团

?

http://www.ya178.com/public/detailUA-11884-1.html