Permission Base v0.1.2 设计概述
Permission Base v0.1.2 设计概述
文档名称 Permission Base v0.1.2 设计概述
作者 蔡克伦
最后更新时间
2006-10-19
1. Domain Model 设计
1.1. 序列
1.1.1. 类图
1.1.2. 概述
Permission Base(授权基础,以下简称 PB)的数据库中包含一张名为“序列”的“键表”,用于产生数据库表的主
键值。“键表”使用了“表唯一键”的方式,即数据库中每一张需要产生无意义自递增主键的表在这张“键表”内都对应
一条记录,这条记录中存放着“表名称”和“下一个 ID 值”。
程序将以线程安全的方式操作“键表”中的单条记录。当要获得某张数据库表的下一个 ID 值时,程序会先从“键
表”中读取对应“表名称”的“下一个 ID 值”,然后将这个值加一,再存入数据库中,最后将取得的原“下一个 ID 值”做
适当的格式变换后返回给调用程序使用。
之所以使用这样一种“人工”的方式来产生“下一个 ID 值”,是因为 Permission Base 使用 NHibernate 作为数据映
射器,目的之一是为了做到程序的数据库无关性,而不同的数据库所内置的产生自递增主键的方式并不相同。
1.2. 系统代码
1.2.1. 类图
1.2.2. 概述
“系统代码”(简称“代码”)用于集中的表示和处理各种公共信息。“系统代码”的设计方案主要是从数据库的角
度出发的。
例如“职员”类有一个“国籍”属性和一个“学历”属性,于是就需要有一个“国籍”类、一个“学历”类,对应的数据库
中也需要一张“国籍”表、一张“学历”表。“职员”类则需要包含一个对“国籍”的引用和一个对“学历”的引用,对应的数
据库中“职员”表中也需要两个外键分别指向“国籍”表和“学历”表。这样的设计在类似“国籍”和“学历”这样的公共信息
比较少时是可行的,但是随着系统复杂性的增加,系统中会出现大量的结构类似的信息表和信息类,数量一直会
到达一个不可接受的地步。
上述问题的一个特征是:这些信息类的内容都是需要动态维护的,但是所需的属性是一样的,对应的数据库
表中包含的字段也是一样的。关键的字段就是两个:“标示”和“名称”,“标示”用于表示不变的主键,“名称”用于表示
1
评论6