1. 程式人生 > >用戶、角色、權限數據庫設計

用戶、角色、權限數據庫設計

style str ole 管理 table char per varchar prim

權限管理

權限管理,主要是人員和權限之間的關系,但是如果讓人員直接和權限打交道,那麽權限的賦值、權限的撤銷以及權限的變動會非常的麻煩,這樣引入了,角色,給角色賦權限,然後給用戶分配角色。

這個設計主要涉及6張表,

用戶表(用於存儲用戶的所有信息)

權限表(用於存儲所有的權限)

角色表(用於存儲所有的角色)

用戶和角色的關聯表(用戶和角色的關聯)

角色和權限的關聯表(角色和權限的關聯)

菜單表(裏面關聯了權限,主要是現實用的)

用戶表

CREATE TABLE [dbo].[Users](
    [UserID] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [nvarchar](50) primary key,--帳號
    [Password] [nvarchar](50) ,
    [UserDspName] [nvarchar](50) ,
    [Sex] [char](1),
    [Birthday] [datetime],
    [Phone] [nvarchar](20)  ,
    [Email] [nvarchar](100),
    [EmployeeID] [nvarchar](20) ,
    [Activity] [bit],--是否可用
    [UserType] [char](2) ,
    [Style] [nvarchar](50)
)

權限表:

CREATE TABLE [dbo].[Permission](
    [PermissionID] int identity,
    [Description] [nvarchar](50) --權限名稱
)

角色表:

CREATE TABLE [dbo].[Roles](
    [RoleID] [int] IDENTITY,
    [Description] [nvarchar](200)--角色名稱
)

用戶和角色的關聯表:

CREATE TABLE [dbo].[UserRoles](
    [UserID] [int] NOT NULL,--用戶ID
    [RoleID] [int] not null ,--權限ID
 CONSTRAINT [PK_UserRoles] PRIMARY KEY CLUSTERED 
(
    [UserID] ASC,
    [RoleID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

角色和權限的關聯表:

CREATE TABLE [dbo].[RolePermissions](
    [RoleID] int  NOT NULL,--角色ID
    [PermissionID]int NOT NULL,--權限ID
 CONSTRAINT [PK_RolePermissions] PRIMARY KEY CLUSTERED 
(
    [RoleID] ASC,
    [PermissionID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

菜單表:

CREATE TABLE [dbo].[menu](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [TextCH] [nvarchar](100)  NULL,--菜單的中文顯示
    [TextEN] [nvarchar](200)  NULL,--菜單的英文名稱
    [ParentID] [int] NULL,--父節點
    [orderID] [int] NULL,--同一個父節點下面的排序
    [Url] [nvarchar](200) ,--菜單對於的權限
    [PermissionID] [int] NULL,--權限ID
    [ImageUrl] [nvarchar](50) NULL--菜單圖片鏈接
) ON [PRIMARY]

用戶、角色、權限數據庫設計