參與進"數字公交"項目已經有一個多月了,我自己負責的模塊也基本完成并通過測試,本項目基于Oracle的C/S結構,涉及很多數據庫方面的操作,有一些經驗是以前沒有用到的,為了留做它日參考,特記錄于此,假如看到此文的讀者能夠用到,那我更是欣慰.
1.users是用戶表,userid是從sequence得到的唯一序號,作為主鍵,下面的觸發器方便每次插入分配唯一的序列,其他表也可以參考于此.
CREATE OR REPLACE TRIGGER users_trig
before insert on users
for each row
declare
seq_val number;
begin
select s_userid.nextval
into seq_val from dual;
:new.userid := seq_val;
end;
2.org是部門表,其中orgid是當前部門id,porgid是上級目錄id,像這種有父子關系的表中做從某一部門向上或向下的查詢用到了oracle的connect by語句:
select * from org connect by PRior orgid=porgid start with orgid=1
//從部門id為1的部門尋找所有子部門
select * from org connect by prior porgid=orgid start with orgid=1
//從部門id為1的部門尋找所有父部門
3.用戶,角色,權限關系處理角色表里有角色的模塊權限,用1和0表示,1表示有,0表示無,假如系統有10 個模塊,則每一角色的權限用10位的01來表示,用戶被賦予角色,一個用戶可以有多個角色,相對與用戶的權限就是所有它擁有角色的權限字段做與操作的結果.
strSql = "select substr(power," & modID & ", 1) as rightbit from role where roleid in(select roleid from role_user where userid in(select userid from users where loginname='" & strLoginName & "'))"
//列出了當前用戶所擁有角色對當前模塊的權限結果集中假如有1則用戶有權限,假如全為0則沒有權限.