Hibernate中对象关系设计方案请教,(实例)

03-08-15 新疆朋友
主要是要设计一个软件中心,下列表都已经存在,目前打算使用HIBERNATE来重新编写。

1、Email_info 电子邮件,主关键字为email,如果是个人的有person_id (个人之允许有一个邮箱) , 还含有临时邮箱和单位邮箱

2、Person_base 存放个人的基础信息 ,主关键字为person_id,所在部门使用dept_id来表示。

3、Auth主关键字为email,存放个人帐号的信息,主要是email和口令。

4、Perm 存放个人帐号的权限,一个帐号可以在多个应用中拥有不用的权限,主关键字是email和应用的ID

5、App 存放应用的信息,主关键字是app_id,包含应用的名称以及该应用所包含的所有权限。(因为公司统一认证,包含了很多不同的应用)

6、Deptcode 部门编码表,主要是dept_id和部门名称的对照表。

7、Soft 软件的信息,主关键字为soft_id , 由于软件使用两级分类,因此有soft_sort1_id 和 soft_sort2_id 两个分类的ID,软件信息中由增加人的信息,使用person_id来表示。

8、Soft_sort1 主关键字为soft_sort1_id , 软件主分类的ID 和 名字的对照表

9、Soft_sort2主关键字为soft_sort2_id ,软件二级分类的ID和名字的对照表,包含了soft_sort1_id 信息。

业务流程 :

1、增加科室代码库

2、增加人员信息

3、申请电子邮箱,使用邮箱名创建用户帐号,帐号名和邮箱名相同

4、给帐号分配权限。

5、用户登陆后,添加软件。(需要指定软件的两级分类)

逻辑关系

dept 部门和 person_base人员是一对多关系

person_base 和 email 应该是一对一关系,但是email 中的每一个并不和person_base一一对应,因为含有单位邮箱。

Email和 AUTH应该是一对一关系,但是单位邮箱不能建立帐号。

实现的功能:

在查询软件时,显示软件的信息和添加人的信息,(包含人员姓名和部门名称)

上述表都已经存在,目前打算使用HIBERNATE来重新编写,对如何将表映射为对象的设计不太熟悉,是否使用一一对应的方式,将主要的表映射为对象即有部门,人员,认证,权限,应用,软件等对象,不知是否还有别的设计方案,另对代码库该如何处理。请高手指教。

         

windman
2003-08-15 10:13
主键不要用有实际意义的field,应该用无实际意义,仅仅用来标识记录的id来做主键

有几种生成方式

建议仔细阅读Hibernate的参考,在它的自带文档中...

新疆朋友
2003-08-15 12:59
主键不要用有实际意义的字段,我想它应该是一个原则,并不适合所有情况吧。我也看了几个例子,但是太简单,有没有复杂的实例供参考。

希望能说详细点,提供连接也行。

windman
2003-08-15 16:30
这是最基本的O/R maping原则,也是必须的,Hibernate的参考上面清楚写了的,你还是先好好认真看看它的帮助再说吧

虽然说Hibernate使用比较简单,但想仅仅参考一个比较复杂点的源程序就搞定Hibernate,也没那么容易。

weihello
2003-10-02 10:54
其实,各位所谈的所谓主关键字即是OID(Object ID)

OID为什么不能具有业务含义? 这不仅仅是o/r的需要,也是对象世界的需要。

这里,我举个简单的例子,我有个同事认为,身份证号码是唯一的,于是在一个交警系统用了身份证做所谓的主关键字,结果发生了这样的结果:竟然导致两个人的违章积分都记到一人的头上。实际上,身份证号码并不唯一。

OID不能具有任何业务含义,这早在上个世纪八十年代面向对象世界已经提出。合适的时机我将做详细的阐述。具体详情可以去www.erproad.org参看。

另外,我感觉你在Hibernate对象关系方面还是需要进一步认识。Hibernate世界的对象关系和普通对象关系是有区别的。详情请参看我编译的文章 http://www.erproad.org/article/HibernateObjRela.htm

猜你喜欢
2Go 1 2 下一页