data model中涉及的表相當(dāng)多,如下圖所示,總體來說,這個(gè)model分四部分內(nèi)容:orgEntity,user,role 和 member group。下面將分別介紹。
注:如果對model的語法不是很熟悉,請參閱:
Legend for data models35
從關(guān)系圖可看出,整個(gè)model的核心是member這張表,在Commerce中,member有三種類別:orgentity,user和 member group,大家在其他表中看到的member_id字段,可能是orgEntity_id,也可能是user_id。因?yàn)楹芏嘞? address,role的信息,orgentity和user都能擁有。orgentity和user的關(guān)系如下圖:

從 圖中可看出,orgentity是樹狀結(jié)構(gòu)的,根節(jié)點(diǎn)是root Organization,orgentity又可分為buyer Organization和seller Organization,user則屬于某個(gè)orgentity。大家可能注意到了,member group雖然也是member,但不在這張membership hierarchy圖中,對此,info center上有這樣一段描述: member groups are not part of the membership hierarchy but are owned by organizational entities. This ownership determines the set of access control policies that apply to accessing the member group.
Organization本身比較簡單,大家只要關(guān)注orgentity和address表就行了,與它關(guān)聯(lián)的其他表一般不用關(guān)心。
user涉及的表主要有users,userreg,cert_x509,address,如果采用數(shù)據(jù)庫認(rèn)證,那cert_x509也不用關(guān)心了,這里 要注意一點(diǎn),用戶的firstname,middlename和lastname等信息是存放在address表中的一條稱為self address的記錄中。
member可以擁有多個(gè)address,但每個(gè)member都會有一條self address,對于user記錄了user的name,email等信息,對于orgentity,記錄了orgentity本身的地址,email,電話等信息。
member之間的關(guān)系在mbrrel表中定義的,sequence字段代表著關(guān)系的層次,1表示parent,2表示grandparent,依次類推。
member group代表著一組member--user,orgentity 或者member group,屬于同一個(gè)組的member擁有相同的權(quán)限,行為等。每個(gè)member group有個(gè)owner,該owner是某個(gè)orgentity,member可以被assign到某個(gè)member group,其關(guān)系定義在mbrgrpmbr表中。系統(tǒng)自定義了很多member group,其中有個(gè)Registered customer group要提一下,該member group用來確定buyer Organization和某個(gè)store的關(guān)系。如果你想在某個(gè)buyer Organization下創(chuàng)建business Account,你要先把該buyer Organization放到store對應(yīng)的Registered customer group中。
Role的關(guān)系就比較簡單了,唯一需要注意的是用戶所能賦予的角色只能是用戶所在Organization擁有的角色集合的子集。