Posted on 2005-11-26 10:48
canonical 閱讀(648)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
設(shè)計(jì)理論
權(quán)限管理中進(jìn)行數(shù)據(jù)訪問(wèn)控制,其基本模式如下
operation target = selector(resource)
selector = user selector + auth filter
這里需要對(duì)resource的結(jié)構(gòu),以及選擇算子的顯式建模。selector必須允許權(quán)限系統(tǒng)追加filter,例如
IDataSource包中所使用的Query對(duì)象。
sql語(yǔ)言的表達(dá)能力有限,
作為選擇算子來(lái)使用有時(shí)需要resource作一些結(jié)構(gòu)上的調(diào)整,增加一些冗余的字段。例如表達(dá)一段時(shí)間內(nèi)的利率,我們需要使用from_date和
to_date兩個(gè)字段來(lái)進(jìn)行描述,其中to_date的值與下一條記錄的from_date相同。
value from_date to_date
0.01 2003-01-01 2003-05-01
0.012 2003-05-01 2004-01-01
如果表達(dá)一條航線中的多個(gè)階段,我們可能會(huì)在每條記錄中增加起始站和終點(diǎn)站兩個(gè)字段。
更重要的一個(gè)常見(jiàn)需求是樹(shù)形結(jié)構(gòu)在關(guān)系數(shù)據(jù)庫(kù)中的表達(dá)。為了能夠直接操縱一個(gè)分支下的所有記錄,在層次固定的情況下,我們可能會(huì)增加多個(gè)分類(lèi)字段,例如數(shù)
據(jù)倉(cāng)庫(kù)中的層次維度。在層次數(shù)目不確定的情況下,我們將不得不使用層次碼或者類(lèi)似于url的其他方案,通過(guò)layer_code like
'01.01.%'
之類(lèi)的語(yǔ)句實(shí)現(xiàn)分支選擇。為了限制選擇的深度,我們可能還需要layer_level字段。基于層次碼和層次數(shù),我們可以建立多種選擇算子,例如包含所有
直接子節(jié)點(diǎn),包含自身及所有父節(jié)點(diǎn)等等。