一個實現RBAC的SQL腳本(二) For Derby

原文請參見: 一個實現RBAC的SQL腳本(二)  http://blog.csdn.net/enjoyo/archive/2007/07/21/1701641.aspx

這是For Derby的腳本(可以當作學習Derby數據庫的參考,呵呵)

--********************************************************************

-- Membership SQL For Derby                                          

--                                                                   

-- Installs the tables and initialize the membership data            

-- supporting the Java Project and Hibernate                         

--                                                                   

-- AuthorKevin Yin                                                      

-- http://blog.csdn.net/enjoyo/                                      

-- 歡迎對此腳本提出建議,也歡迎使用本腳本構建您的系統,              

-- 但本人不對你的系統進行任何明示的或暗示的擔保                      

-- 轉載請保留此聲名                                                   

--********************************************************************

 

--角色表

CREATE TABLE mbs_roles_t (

       nRoleID         INTEGER NOT NULL GENERATED ALWAYS AS

                           IDENTITY (START WITH 1, INCREMENT BY 1)

                           PRIMARY KEY,                   --角色ID

       szRoleName          VARCHAR( 128 ) NOT NULL ,    --角色名

       szLoRoleName              VARCHAR( 128 ) NOT NULL ,    --角色名(小寫)

       bIsSysDef            INTEGER NOT NULL DEFAULT 0,    --是系統角色(1)

                                                        --還是用戶添加的角色(0)

       bIsLockedOut              INTEGER not null DEFAULT 0,   --是否被鎖定 0 1鎖定

       szDescription               VARCHAR( 255 ) default NULL,   --角色描述

       UNIQUE ( szLoRoleName )

);

 

--用戶表

CREATE TABLE mbs_users_t (

       nUserID               INTEGER NOT NULL GENERATED ALWAYS AS

                           IDENTITY (START WITH 1, INCREMENT BY 1)

                           PRIMARY KEY,                   --用戶ID

       szUserName          VARCHAR( 128 ) NOT NULL ,    --用戶名

       szLoUserName             VARCHAR( 128 ) NOT NULL ,    --用戶名(小寫)

       szNickName         VARCHAR( 128 ) NOT NULL ,    --用戶暱稱

       bIsAnonymous             INTEGER not null,        --是否是匿名用戶 0 不是 1

       szPassword          varchar(128) not null,           --Password ,plaintext, hashed,

                                                        --or encrypted; base-64-encoded

                                                        --if hashed or encrypted

       szPasswordFormat       INTEGER not null,              --密碼的加密方式

                                                        --0=Plaintext, 1=Hashed, 2=Encrypted

       szPasswordSalt            varchar(128) not null,          --Randomly generated 128-bit value

                                                        --used to salt password hashes; stored in

                                                        --base-64-encoded form

       szEMail         varchar(128) not null,           --用戶EMail

       szLoEMail             varchar(128) not null,           --用戶EMail(小寫)

       szMobilePIN         varchar(16) default null, --用戶手機號

       bIsApproved         INTEGER not null,        --審覈 0 未審覈通過,1審覈通過

       bIsLockedOut              INTEGER not null,        --是否被鎖定 0 1鎖定

       dtCreate         TIMESTAMP not null,          --帳戶創建時間

       dtLastLogin           TIMESTAMP not null,          --最後一次登錄的時間

       nFailedPwdCount INTEGER not null default 0,  --輸入密碼錯誤的次數

       nFailedPQACount          INTEGER not null default 0,  --密碼問題錯誤次數

       nLoginTimes         INTEGER not null default 0,  --登錄次數                  

       UNIQUE ( szLoUserName, szLoEMail )

);

 

--用戶配置表

CREATE TABLE mbs_userprofile_t (

       nUserID               INTEGER NOT NULL,        --用戶ID

       szProfileKey          VARCHAR( 128 ) NOT NULL ,    --用戶配置項鍵值

       szProfileValue               VARCHAR( 255 ) NOT NULL ,    --用戶配置項屬性值

       PRIMARY key( nUserID,szProfileKey )      

);

 

 

--角色與權限對應表

CREATE TABLE mbs_user2role_t (

       nRoleID         INTEGER NOT NULL ,        --角色ID

       nUserID               INTEGER NOT NULL ,        --權限值

       PRIMARY KEY ( nRoleID , nUserID )

);

 

--插入系統預定義用戶角色

INSERT INTO mbs_roles_t (szRoleName, szLoRoleName, bIsSysDef, bIsLockedOut,

        szDescription) VALUES

('Administrators', 'administrators', 1, 0, '管理員用戶組,管理員對系統有不受限制的完全訪問權'),

('Registered Users', 'registered users', 1, 0, '註冊用戶組,可以執行系統中屬於會員的權限'),

('Guests', 'guests', 1, 1, '來賓用戶組,按默認值,來賓跟用戶組的成員有同等訪問權,但來賓帳戶的限制更多'),

('Anonymous', 'anonymous', 1, 0, '匿名用戶組,比來賓用戶的限制更多'),

('Denial Users', 'denial users', 1, 0, '黑名單用戶組,系統將拒絕此用戶組中的用戶的任何操作,此用戶組的優先級最高');

 

--插入超級用戶

INSERT INTO mbs_users_t ( szUserName, szLoUserName, szNickName, bIsAnonymous,

 szPassword, szPasswordFormat, szPasswordSalt, szEMail, szLoEMail, szMobilePIN,

 bIsApproved, bIsLockedOut,      dtCreate, dtLastLogin, nFailedPwdCount, nFailedPQACount,

 nLoginTimes ) VALUES('Admin', 'admin', 'admin', 0, '123456', 0, '', '[email protected]',

 '[email protected]', '',1,0,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,0,0,0);

 

INSERT INTO mbs_userprofile_t (nUserID, szProfileKey, szProfileValue) VALUES

(1,'real name', 'admin'),

(1,'msn', '[email protected]'),

(1,'password question', 'admin'),

(1,'password answer', 'admin'),

(1,'last password change date', CHAR(CURRENT_TIMESTAMP)),

(1,'last lock out date', CHAR(CURRENT_TIMESTAMP)),

(1,'comment', '');

 

INSERT INTO mbs_user2role_t (nRoleID, nUserID) VALUES(1,1);



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章