權限管理中進行數據訪問控制,其基本模式如下
operation target = selector(resource)
selector = user selector + auth filter
這里需要對resource的結構,以及選擇算子的顯式建模。selector必須允許權限系統追加filter,例如
IDataSource包中所使用的Query對象。
sql語言的表達能力有限,
作為選擇算子來使用有時需要resource作一些結構上的調整,增加一些冗余的字段。例如表達一段時間內的利率,我們需要使用from_date和
to_date兩個字段來進行描述,其中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
如果表達一條航線中的多個階段,我們可能會在每條記錄中增加起始站和終點站兩個字段。
更重要的一個常見需求是樹形結構在關系數據庫中的表達。為了能夠直接操縱一個分支下的所有記錄,在層次固定的情況下,我們可能會增加多個分類字段,例如數
據倉庫中的層次維度。在層次數目不確定的情況下,我們將不得不使用層次碼或者類似于url的其他方案,通過layer_code like
'01.01.%'
之類的語句實現分支選擇。為了限制選擇的深度,我們可能還需要layer_level字段。基于層次碼和層次數,我們可以建立多種選擇算子,例如包含所有
直接子節點,包含自身及所有父節點等等。