0

計劃創建訪問控制系統。記住一個教育機構,我創建了像主門,區域,建築,層次,部分,房間(每個表都帶有外鍵關係)的周邊表.....現在我想創建部門表和員工表,但是如何我可以定義一個部門到特定的邊界嗎?因爲用戶的部門可以是一個房間或整個建築物。將所有外圍表外鍵插入部門表中並不是一種合適的方式,我猜。我還希望訪問路徑,不想授權,如果用戶通過不同點來到檢查點。我是數據庫設計的新手,可能有一個我沒有想到的簡單方法..請用最佳設計理念幫助創建上述內容。 在此先感謝..如何爲訪問控制和跟蹤創建數據庫設計?

回答

2

創建以來可固定位置的層次結構的點是管理誰應獲得哪些位置,你出去時的過密的外國管理的單個表所有這些位置的更好鍵(自引用關係)。

考慮下面的ERD:

ERD

在這裏,你有一個可以包含其他安全區域的安全區域。人們被授予訪問適當的區域。訪問較低級別區域意味着訪問所有包含較低級別區域的區域。

使用漸進式外鍵意味着必須處理分層數據,這在SQL中可能是一種麻煩。爲了簡化層級導航,我建議使用訪問號碼,正如我在回答this question時詳細描述的那樣。

在任何類型的訪問控制系統中要考慮的一件事是最大限度地減少安全管理員要維護的數據量。許多人將有相同的訪問規則。因此,您可能希望擴展上述ERD以使用基於角色的安全其中不是個人被授予對區域的訪問權限,並且個人被授予對組的訪問權限。有關基於角色的安全性的更多信息,請參閱我對this question on dba.se的回答。如果可能有所幫助,則可以使用基於角色和個人訪問規則的混合模式。

另一個需要考慮的選擇是您的ACCESS表可能包含允許不允許標誌。這些可以用於允許訪問更大的區域,同時特別禁止訪問其中包含的較小區域。這種方法可以減少每個人需要管理的數據量。

+0

非常感謝你@joel。訪問編號是一個很好的分組方法。 – Prasanth 2012-08-17 12:48:26