這是For Derby的腳本(可以當作學習Derby數據庫的參考,呵呵)
--********************************************************************
-- Membership SQL For Derby
--
-- Installs the tables and initialize the membership data
-- supporting the Java Project and Hibernate
--
-- Author:Kevin 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);