參與進"數字公交"項目已經有一個多月了,我自己負責的模塊也基本完成並通過測試,本項目基於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則沒有權限.