<!--[if !supportLists]-->1. <!--[endif]-->一個(gè)屬性組(attributeGroup)必須關(guān)聯(lián)于一個(gè)條目(item)或關(guān)系(relationship) <!--[if !supportLists]-->2. <!--[endif]-->一個(gè)屬性組(attributeGroup)可能含有用于標(biāo)識(shí)條目(item)或關(guān)系(relationship)的屬性,或它可能含有描述條目(item)或關(guān)系(relationship)的屬性 <!--[if !supportLists]-->3. <!--[endif]-->不同類型的幾條屬性組(attributeGroup)可能關(guān)聯(lián)相同的條目(item)或關(guān)系(relationship) <!--[if !supportLists]-->4. <!--[endif]-->一個(gè)屬性組(attributeGroup)可能含有多個(gè)屬性,也有可以不含屬性,這時(shí)它充當(dāng)一個(gè)標(biāo)記.
一個(gè)屬性組(attributeGroup)類似于SQL視圖中的一行。它是一個(gè)屬性的投影。相同的屬性可能出現(xiàn)在同一個(gè)條目(item)或關(guān)系的多個(gè)屬性組(attributeGroup)中。屬性組(attributeGroup)可能沒(méi)有屬性,這種情況下它用于充當(dāng)一個(gè)標(biāo)記。
每個(gè)屬性組(attributeGroup)可能有下列描述屬性組(attributeGroup)自身的元屬性
<!--[if !supportLists]-->1. <!--[endif]-->有一個(gè)Id在它所關(guān)聯(lián)的條目(item)或關(guān)系(relationship)的范圍內(nèi)中唯一的,并充當(dāng)key(如果條目(item)或關(guān)系(relationship)只有一個(gè)記錄時(shí)是可選地) <!--[if !supportLists]-->2. <!--[endif]-->記錄的日期/時(shí)間是最后修改時(shí)間(可選的)
為什么提供屬性組(attributeGroup)這樣一個(gè)東西,而不是直接讓條目(item)或關(guān)系(relationship)擁有屬性呢?
因?yàn)檎鎸?shí)世界中一個(gè)對(duì)象從不同角度來(lái)看它可能有不同的屬性,如一個(gè)計(jì)算機(jī),從網(wǎng)管員的角度看,它有主機(jī)名,IP地址,MAC址址,CPU型號(hào),MEM大小, 硬盤(pán)容量等屬性,而對(duì)財(cái)務(wù)部門(mén)的角度來(lái)看,它有訂單號(hào),單價(jià),購(gòu)買(mǎi)日期,使用年限,維護(hù)人等信息, 如果我們提供屬性組(attributeGroup)這個(gè)概念后,用戶在建立模型時(shí)可以從不同角度對(duì)實(shí)物建模,一個(gè)條目(item)可以有一到多個(gè)屬性組(attributeGroup),每個(gè)屬性組(attributeGroup)針對(duì)一個(gè)或多個(gè)使用者.
3.1.4繼承
以上三個(gè)對(duì)象都像類一樣可以繼承,用戶可以用它們來(lái)對(duì)自已的領(lǐng)域建模,它們繼承的行為如下:
屬性組(attributeGroup)的繼承非常類似于普通的類,當(dāng)一個(gè)屬性組(attributeGroup)繼承另一個(gè)屬性組(attributeGroup)時(shí),就具有它的所有屬性,但它沒(méi)有方法。屬性不能重載。
條目(item)的繼承則表示: 當(dāng)一個(gè)條目(item)繼承另一個(gè)條目(item)時(shí),就具有它的所有屬性組(attributeGroup).此外它還有二個(gè)特殊的地方:
1. 當(dāng)一個(gè)條目(item)繼承另一個(gè)條目(item)時(shí),子條目(item)中有一個(gè)屬性組(attributeGroup), 該屬性組在子條目(item)重復(fù)申明了, 或該屬性組(attributeGroup)也有一個(gè)父屬性組(attributeGroup),它的父屬性組(attributeGroup)已經(jīng)存在于父條目(item)中,那么子條目(item)中的該屬性組(attributeGroup)覆蓋父條目(item)中的父屬性組(attributeGroup),
2. 當(dāng)出現(xiàn)上述情況,同時(shí)子條目(item)的約束與父條目(item)不一致時(shí),需要注意, 父條目(item)中的約束必須比子條目(item)中的約束更嚴(yán)格.
這里說(shuō)約束是指條目與屬性組的約束.
關(guān)系(relationship)是條目(item)的一個(gè)子類,因此它的繼承行為與條目(item)的繼承行為完全一致。
3.1.5數(shù)據(jù)類型
Integer 通過(guò)指定范圍來(lái)確定是int8, int16, int32,int64
Numeric 用戶指定精度
Money 專用于存儲(chǔ)貨幣類型的數(shù)據(jù)
String, 用戶指定長(zhǎng)度來(lái)確是是 char, varchar還是text
date/timestamp/duration
boolean
ipAddress ip地址,包括ipv4和ipv6
physicalAddress MAC地址
GUID類型
XML 數(shù)據(jù)
數(shù)組
在這里我就不詳細(xì)說(shuō)了,將會(huì)在概要設(shè)計(jì)中說(shuō)明.
出處:博客園
責(zé)任編輯:bluehearts
上一頁(yè) GraphDatabase在關(guān)系數(shù)據(jù)庫(kù)中的實(shí)現(xiàn) [2] 下一頁(yè) GraphDatabase在關(guān)系數(shù)據(jù)庫(kù)中的實(shí)現(xiàn) [4]
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|