Ofbiz数据库表结构设计答题.docx
文本预览下载声明
PAGE \* MERGEFORMAT15
目录
TOC \o 1-3 \h \z \u HYPERLINK \l _Toc440494264 Ofbiz数据库表结构设计 PAGEREF _Toc440494264 \h 2
HYPERLINK \l _Toc440494265 1. ofbiz数据库表结构设计 - PARTY PAGEREF _Toc440494265 \h 2
HYPERLINK \l _Toc440494266 2. ofbiz数据库表结构设计 - CONTACT_MECH PAGEREF _Toc440494266 \h 4
HYPERLINK \l _Toc440494267 3. Ofbiz数据库表结构设计 - 订单ORDER PAGEREF _Toc440494267 \h 8
HYPERLINK \l _Toc440494268 4. ofbiz数据库表结构设计 - 订单支付ORDER_PAYMENT_PREFERENCE PAGEREF _Toc440494268 \h 10
HYPERLINK \l _Toc440494269 5. ofbiz数据库表结构设计 - 库存INVENTORY PAGEREF _Toc440494269 \h 12
HYPERLINK \l _Toc440494270 6. ofbiz数据库表结构设计 – Payment Invoice PAGEREF _Toc440494270 \h 13
Ofbiz数据库表结构设计
转载: HYPERLINK /s/blog_a2ca5d8c01017fa0.html /s/blog_a2ca5d8c01017fa0.html
ofbiz数据库表结构设计 - PARTY
ofbiz的精华就在于其数据结构(表结构)的设计。数据结构的通用性也决定了ofbiz几乎可以适用任何企业应用。我们首先来看看PARTY相关的表结构设计。
在ofbiz中,PARTY是个抽象概念,它可以是一个人(用户、员工、家人等等),也可以是个组织(公司、部门、项目组、供应商、集团客户等等)。然而毕竟个人和组织的许多属性是不同的,比如姓名就只有个人有,组织只有组织名称等等,因此,在PARTY基础上派生出两个对象(两张表),PERSON带表个人,PARTY_GROUP代表组织。我们注意到在PERSON和PARTY_GROUP两张表里,有PARTY_ID作为外键指向PARTY表的PARTY_ID主键,而PARTY_ID在PERSON和PARTY_GROUP里同时也扮演着主键的角色。这种设计模式大大简化了程序开发的复杂度。
?
下面再来看看PARTY的角色。ofbiz中并没有一个我们习惯的ROLE表,而只有一个ROLE_TYPE表。其实这个ROLE_TYPE就是我们习惯的ROLE,可能是ofbiz觉得现实中分不清什么是ROLE,什么是ROLE_TYPE,取而代之的是ROLE_TYPE里有个PARENT_ROLE_TYPE_ID指向自己,用此方式来表示一个ROLE_TYPE(角色)的层级结构。
PARTY_ROLE是PARTY和ROLE_TYPE的多对多关系表,我们当然能够理解,一个PARTY通常会有多个角色。
ofbiz的角色相关的设计中,最精妙的是PARTY_RELATIONSHIP。PARTY_RELATIONSHIP的几个主要字段是PARTY_ID_FROM、PARTY_ID_TO、ROLE_TYPE_ID_FROM、ROLE_TYPE_ID_TO、PARTY_RELATIOSHIP_TYPE_ID。现实社会中,每个人都有不同的角色,每个人与其他人或组织也有不同的关系,PARTY_RELATIONSHIP就是为了这些复杂的人以及组织之间的关系而设计的。比如,某个人P是某个公司O的雇员,那么在PARTY_RELATIONSHIP表中,PARTY_ID_FROM指向PARTY表中的P这条数据,PARTY_ID_TO指向PARTY表中的O这条数据,ROLE_TYPE_ID_FROM指向ROLE_TYPE表中的EMPLOYEE(ofbiz的初始数据中有),ROLE_TYPE_ID_TO指向ROLE_TYPE表中的ORGANIZATION_UNIT(ofbiz的初始数据中有),PARTY_RELATIONSHIP_TYPE_ID指向PARTY_RELATIONSHIP_TYPE表中的EMPLOYMENT(ofbiz的初始数据中有)。用这种方式,我们可以表示出社会上几乎所有的人、组织之间的关系。在PARTY_RELATIONSHI
显示全部