1. 程式人生 > >SQL通用許可權資料庫表結構設計

SQL通用許可權資料庫表結構設計

####1、使用者組表

CREATE TABLE [dbo].[rrl_group] (
	[Id] int NOT NULL IDENTITY(1,1) ,
	[name] nvarchar(50) NOT NULL ,
	[status] int NOT NULL ,
	[CreateUserId] int NOT NULL ,
	[CreateUserName] nvarchar(20) NULL ,
	[CreateTime] datetime NOT NULL ,
	[ModifyUserId] int NOT NULL ,
	[ModifyUserName] nvarchar(20) NULL ,
	[ModifyTime] datetime NULL ,
	[code] nvarchar(50) NULL ,
	[type] int NOT NULL DEFAULT ((0)) 
)

####2、許可權表

CREATE TABLE [dbo].[rrl_rule] (
	[Id] int NOT NULL IDENTITY(1,1) ,
	[name] nvarchar(100) NOT NULL ,
	[title] nvarchar(100) NULL ,
	[status] int NOT NULL ,
	[CreateUserId] int NOT NULL ,
	[CreateUserName] nvarchar(20) NULL ,
	[CreateTime] datetime NOT NULL ,
	[ModifyUserId] int NOT NULL ,
	[ModifyUserName] nvarchar(20) NULL ,
	[ModifyTime] datetime NULL ,
	[pid] int NOT NULL DEFAULT ((0)) ,
	[url] nvarchar(150) NULL 
)

####3、使用者表

CREATE TABLE [dbo].[rrl_user] (
	[Id] int NOT NULL IDENTITY(1,1) ,
	[username] nvarchar(50) NOT NULL ,
	[password] nvarchar(64) NOT NULL ,
	[name] nvarchar(20) NOT NULL ,
	[phone] nvarchar(20) NULL ,
	[dept] nvarchar(50) NULL ,
	[status] int NOT NULL ,
	[CreateUserId] int NOT NULL ,
	[CreateUserName] nvarchar(20) NULL ,
	[CreateTime] datetime NOT NULL ,
	[ModifyUserId] int NOT NULL ,
	[ModifyUserName] nvarchar(20) NULL ,
	[ModifyTime] datetime NULL 
)

####4、使用者組-許可權關係表

CREATE TABLE [dbo].[rrl_group_rule] (
	[id] int NOT NULL IDENTITY(1,1) ,
	[rule_id] int NOT NULL ,
	[group_id] int NOT NULL 
)

####5、使用者組-使用者關係表

CREATE TABLE [dbo].[rrl_group_user] (
	[id] int NOT NULL IDENTITY(1,1) ,
	[user_id] int NOT NULL ,
	[group_id] int NOT NULL  
)

ID為Guid的所有表結構建立SQL:

CREATE TABLE [dbo].[auth_group] (
[id] varchar(36) NOT NULL PRIMARY key,
[group_key] nvarchar(50) NOT NULL ,
[group_name] nvarchar(50) NOT NULL ,
[group_type] int NOT NULL DEFAULT 1,
[status] int NOT NULL DEFAULT 1,
[create_user_id] varchar(36) NULL ,
[create_user_name] nvarchar(20) NULL ,
[create_time] datetime NULL DEFAULT getdate(),
[modify_user_id] varchar(36) NULL ,
[modify_user_name] nvarchar(20) NULL ,
[modify_time] datetime NULL
);

CREATE TABLE [dbo].[auth_group_rule] (
[id] int NOT NULL IDENTITY(1,1) PRIMARY key,
[rule_id] varchar(36) NOT NULL ,
[group_id] varchar(36) NOT NULL 
);

CREATE TABLE [dbo].[auth_group_user] (
[id] int NOT NULL IDENTITY(1,1) PRIMARY key,
[user_id] varchar(36) NOT NULL ,
[group_id] varchar(36) NOT NULL 
);

CREATE TABLE [dbo].[auth_rule] (
[id] varchar(36) NOT NULL PRIMARY key ,
[pid] varchar(36) NULL ,
[rule_key] nvarchar(100) NOT NULL ,
[rule_name] nvarchar(100) NOT NULL ,
[url] nvarchar(150) NULL ,
[status] int NOT NULL DEFAULT 1,
[create_user_id] varchar(36) NULL ,
[create_user_name] nvarchar(20) NULL ,
[create_time] datetime NULL DEFAULT getdate(),
[modify_user_id] varchar(36) NULL ,
[modify_user_name] nvarchar(20) NULL ,
[modify_time] datetime NULL
);

CREATE TABLE [dbo].[auth_token] (
[id] int NOT NULL IDENTITY(1,1) PRIMARY key,
[user_id] varchar(36) NOT NULL ,
[token] nvarchar(50) NOT NULL ,
[status] int NOT NULL DEFAULT 1,
[create_time] datetime NOT NULL ,
[valid_time] datetime NULL,
[login_info] nvarchar(250) NULL 
);

CREATE TABLE [dbo].[auth_user] (
[id] varchar(36) NOT NULL PRIMARY key ,
[username] nvarchar(50) NOT NULL ,
[password] nvarchar(64) NOT NULL ,
[name] nvarchar(20) NOT NULL ,
[phone] nvarchar(20) NULL ,
[dept_id] varchar(36) NULL ,
[dept_name] varchar(50) NULL ,
[status] int NOT NULL DEFAULT 1,
[create_user_id] varchar(36) NULL ,
[create_user_name] nvarchar(20) NULL ,
[create_time] datetime NULL DEFAULT getdate(),
[modify_user_id] varchar(36) NULL ,
[modify_user_name] nvarchar(20) NULL ,
[modify_time] datetime NULL 
);

CREATE TABLE [dbo].[logger_2018] (
[id] int NOT NULL IDENTITY(1,1) PRIMARY key,
[log_type] varchar(10) NULL ,
[source_path] varchar(255) NULL ,
[message] text NULL ,
[user_id] varchar(36) NULL ,
[user_name] varchar(255) NULL ,
[log_time] datetime NULL DEFAULT (getdate()) 
);

**備註:**此處Id採用自增的形式,為了方便還是建議採用GUID,這樣在插入資料之前即可知道Id的值,寫入資料較為方便。此外,如果表直接建立了外來鍵關係的話,資料傳輸將會很頭疼,建議不要採用外來鍵的形式。