2012-02-11 125 views
1

對於我正在開發的項目,我需要爲用戶設計一個數據庫,幾種不同類型的項目以及類似acl的權限系統。爲ACL設計數據庫

基本上,這就是我想做的事(要複雜得多,但是這足以證明我的意思):

  • 用戶:(ID,姓名,密碼)
  • 文章:( ID,標題,正文)
  • 圖像:(ID,標題,FILE_NAME)
  • 權限:(ITEM_TYPE,ITEM_ID,USER_ID,讀,寫,管理)

(ITEMTYPE一nd itemId在一起是一個複合外鍵,參考文章或圖像,具體取決於item_type)

有人會說使用權限表不是一個好主意,同樣可以通過添加讀取,寫入和管理列來實現文章和圖片,但請記住,可能有多個用戶對同一項目擁有不同的權利。這不是一個選擇。

在我看來,這將工作正常。但是在實現時,我無法找到一個單獨的php orm來給我一些自由來做到這一點。這讓我相信我可能會做錯事。

所以,我的問題是: 實現ACL和設計數據庫的正確方法是什麼? 它是如何完成企業級應用程序? 有沒有非數據庫ACL解決方案?

回答

1

你只需要有一個many-to-many表,它將綁定用戶的權限和可能會解決你的窒息點的對象。 它將具有 - user_id和permission_id和object_id將引用3個不同的表。

手段,將是這樣的:

user_id(references users),permission_id(references permissions),object_id (references image?) 
1 ,2(read),2 
1 ,3(write),2 
1 , 4(exec),2 

希望它可以幫助升技