2012-10-16 17 views
0

最近我的公司指定了一個項目,將管理我公司的營銷團隊。 我有麻煩或未能決定數據庫結構。如何在mysql中爲用戶角色分配和區域分配設計數據庫結構?

在這個項目中有將是繼訪問角色:

1)CMO(首席營銷官)

2)------------總經理

3)------------------區域經理

4)--------------------- ---區域經理/狀態負責人

5)------------------------------ Assistance Manager

6)------------------------------------區域管理

7) ------------------------------------------用戶

訪問級別將會按照上面提到的角色層次。
例如CMO擁有完全訪問權限,區域經理擁有除CMO之外的所有訪問權限等等。

現在第二個主要的事情是 區(結合多個區/狀態後地區將) 區域/國家(這將是使組合多個城市後) 地區/城市

現在,所有用戶將被添加默認情況下,在任何地區 然後管理員分配一個角色和一個地區或國家或地區 最後用戶可以根據自己的角色和指定區域/國家/城市/區域

系統訪問,如果任何用戶訪問的作用是區域經理和指定區域像Region1 現在我們ER將能夠訪問它進來REGION1

請幫我設計一個管理這些所有的東西數據庫結構中的所有國家/區域和他們的城市?

回答

0

在標題爲'users'的數據庫中創建一個表。在這裏你可以創建多個表格或一個表格。基本上,你想在你的表/表中創建一個角色字段和區域字段。當用戶登錄時,他們將被授予基於他們的角色(即1是gm,7是用戶)/區域的訪問權限。

在許多語言中有很多預先構建的解決方案用於您想要執行的操作。我會建議搜索一個。

+0

感謝布倫特林格爾 – user1403850

0

爲了表示你可以用parent_role_id列的意義,其他角色可以父「下坐」創建角色表的層次結構。

例如:

CREATE TABLE `roles` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `role` varchar(45) NOT NULL, 
    `parent_role_id` int(11) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `parent_role_id` (`parent_role_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

如果我想添加一個CMO,他們將保持這一領域的空因爲沒有人是在他們之上。然而,區域經理的父母ID爲5(假設CMO爲1),因爲他們在協助經理下。這使您可以使用一個表來構建一個類似於結構的文件夾。

定位關係的其他用戶可以通過多種方式完成。我認爲,最簡單的是通過一些多對多的關係,如:

CREATE TABLE `users` (
    `id` int(11) NOT NULL, 
    `username` varchar(50) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE `user_roles`(
    `user_id` int(11) NOT NULL, 
    `role_id` int(11) NOT NULL, 
    PRIMARY KEY (`user_id`,`role_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE `user_region` (
    `user_id` int(11) NOT NULL, 
    `region_id` int(11) NOT NULL, 
    PRIMARY KEY (`user_id`,`region_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

如果你正在尋找這些用於管理授權(又名權限),然後是更多的測試和靈活的解決方案可能是訪問控制列表(ACL)取決於您正在使用的語言。

http://en.wikipedia.org/wiki/Access_control_list

+0

AplexP感謝您的解決方案,它真的非常有益的5月主要的問題是根據地區或國家或城市的分配,如果任何用戶都分配一個狀態,那麼他將能夠訪問管理訪問那些所有的用戶報告和細節,在他們的指定州和州城市請幫助 – user1403850

相關問題