通向架構(gòu)師的道路(第六天)之漫談基于數(shù)據(jù)庫的權(quán)限系統(tǒng)的設(shè)計(jì)(1)_第1頁
通向架構(gòu)師的道路(第六天)之漫談基于數(shù)據(jù)庫的權(quán)限系統(tǒng)的設(shè)計(jì)(1)_第2頁
通向架構(gòu)師的道路(第六天)之漫談基于數(shù)據(jù)庫的權(quán)限系統(tǒng)的設(shè)計(jì)(1)_第3頁
通向架構(gòu)師的道路(第六天)之漫談基于數(shù)據(jù)庫的權(quán)限系統(tǒng)的設(shè)計(jì)(1)_第4頁
通向架構(gòu)師的道路(第六天)之漫談基于數(shù)據(jù)庫的權(quán)限系統(tǒng)的設(shè)計(jì)(1)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、in 26 cases, long-term measures to implement the rate is 77% deployed 40 couples free pre-pregnancy health checks. -Balanced development of education. I attach great importance to control fits and starts work, to ensure that school-age children to school on time, hope dream poor students go to schoo

2、l to help poor students, help students complete nine years of compulsory education. Township school-age children enrollment rate up to 100%. -Home to poverty alleviation work in order. Complete the rural minimum living standard security system and the effective connection between pro-poor developmen

3、t policies, establish the Township poor electronic records and paper file documentation work, and cooperate with the superior unit holders, such as the statistical work of the poor masses. As of now, I enjoy the low 94 families, a total of 305, 44310 rural minimum living standard security issued org

4、anization 7 operational training full-time staff with disabilities participated in the County Federation organized 15 disabled people to participate in free training in farming skills; organization of 14 patients with cataract receiving free checks, participate in the examination will now undergo su

5、rgery had been successful. -Waste management policy in place. Seriously implement the subsidy policies such as direct subsidies for grain, returning farmland to forests this year agriculture agricultural policy subsidies total 554940, of which: farmers direct subsidies for grain 389880; reforestatio

6、n subsidies 165060. -Comprehensive management of public security work steadily. Full implementation of the measures for comprehensive management of social security, increasing crackdown on all illegal and criminal activities. As of now, my alarm 30 received, 7 all kinds of disputes, mediation succes

7、sfully 6; State criminal case 3, case 7, has been investigating the 7. -Stabilisation work of letters and calls for further strengthening. Received mass petitions from 10 successful mediation, 8, investigation 1, collective skipping appeal event does not occur. Meanwhile, further strengthen publicit

8、y and mobilization work, carried out in schools, kindergartens and surrounding environment group woven fire safety and food safety 6 times, 1 traffic safety publicity and education, legal literacy, drug pictures and materials via issuing 600 and guard against cult of special publicity activities 2 a

9、ttended by 300 people, mixture of anti-evil propaganda 70. Advancing the law of six thematic activities, through the easy way, with the film projectionist the village broadcast education 44, 3600 people returning to watch. -Further development of spiritual civilization construction work. Evening lei

10、sure time, organizations in the elderly in the rural culture of Hui Xiang Hui fitness dance square, greatly enriched the lives of the masses. Use of Arbor Day, 51 labor day, May Fourth youth day festivals, organize the education campaign for the festive, educational guide people to foster patriotism

11、, socialism, collectivism and strengthen love and loyalty to the party, firmly follow the party go . Implementation of the one gang double responsibility established number one responsibility, team member management works. Five are team building. Open-minded, innovative ways to meet the actual needs

12、 of target, combining education and political education in party lecture, unified planning, unified plan, take active measures to enhance cadres quality and ability. (B) a solid foundation steadily promoting the construction of一、權(quán)限系統(tǒng)這一天將講述一個(gè)基本的基于數(shù)據(jù)庫的權(quán)限管理系統(tǒng)的設(shè)計(jì),在這一天的課程的最后將講述“左右值無限分類實(shí)現(xiàn)算法”如何來優(yōu)化“系統(tǒng)菜單”的結(jié)構(gòu)

13、而告終。今天的內(nèi)容和前幾天的基礎(chǔ)框架是一樣的它們都屬于基礎(chǔ)知識,在這些基礎(chǔ)知識上還可以擴(kuò)展出無數(shù)的變種與進(jìn)化設(shè)計(jì)。二、先來看客戶的一個(gè)需求2.1用戶實(shí)際需求1.所有的用戶、角色可動態(tài)配置2.所有的系統(tǒng)菜單的權(quán)限要求具體到“增,刪,改、查、打印、導(dǎo)出”這樣的小權(quán)限的設(shè)計(jì)3.所有的權(quán)限基于角色來進(jìn)行劃分和判斷4.一個(gè)用戶可能屬于多個(gè)角色5.系統(tǒng)菜單也能夠動態(tài)的“增、刪、改、查”2.2系統(tǒng)權(quán)限菜單樣例三、基于數(shù)據(jù)庫的系統(tǒng)權(quán)限表設(shè)計(jì)3.1 ER(Entity Relationship)圖圍繞上述需求,我們可以在數(shù)據(jù)庫內(nèi)進(jìn)行如下的表設(shè)計(jì),下面直接給出ER圖:3.2表關(guān)系詳解上述設(shè)計(jì)有6張表,其中:T_U

14、ser表用于存放用戶信息,此處只存放基礎(chǔ)信息T_Role表用于存放系統(tǒng)角色信息T_User_Role表用于存放系統(tǒng)用戶與角色的匹配關(guān)系T_Sys_Menu表這張就是用于存放系統(tǒng)菜單的表了,這張表的設(shè)計(jì)主要使用了如下的表設(shè)計(jì)技巧:注意這邊的MENU_ID與MENU_PID如果這個(gè)菜單項(xiàng)是一級菜單,那么我們把它的MENU_PID設(shè)為0如果這個(gè)菜單是另一個(gè)菜單的子菜單,那么我們就把它的MENU_PID設(shè)為它的父菜單的MENU_ID。有了這樣的結(jié)構(gòu),我們一個(gè)遞歸就能把這顆“樹”顯示出來了,是不是?此處以O(shè)racle數(shù)據(jù)庫為例,不使用遞歸,直接把樹形結(jié)構(gòu)在數(shù)據(jù)庫中就造型造好(當(dāng)然,還有更好的方法如:有人

15、喜歡設(shè)level或者是deep這樣的字段來簡化程序解析樹型結(jié)構(gòu)菜單,稍后我們會來講一個(gè)根本不需要用遞歸的樹型菜單的設(shè)計(jì)來最大程度優(yōu)化設(shè)計(jì)。)顯示整顆樹型菜單結(jié)構(gòu)的Oracle語句:SELECT*FROMT_SYS_MENUSTARTWITHMENU_PID=0CONNECTBYPRIORMENU_ID=MENU_PIDorderbyMENU_ID上述語句,已經(jīng)用數(shù)據(jù)查詢用句就將我們的這個(gè)“樹”的層次關(guān)系理出來了,如果我們手上有一個(gè)控件叫dtree.js,那么一個(gè)循環(huán)就可以把這個(gè)樹顯示出來了,不是嗎?來看dtree.js的應(yīng)用/公式: d.add(menu_id, menu_pid, menud

16、escr, menu_url);d = new dTree(d); d.add(0,-1,菜單); d.add(1,0,報(bào)表查詢,example01.html); d.add(2,1,月報(bào),example01.html); d.add(3,1,季報(bào),example01.html); d.add(4,1,年報(bào),example01.html); d.add(5,0,系統(tǒng)管理,example01.html); d.add(6,5,用戶管理,example01.html); d.add(7,6,新增用戶,example01.html); d.add(8,6,刪除用戶,example01.html);

17、d.add(9,5,角色管理,example01.html); d.add(10,9,新增角色,example01.html); d.add(11,9,刪除角色,example01.html) document.write(d);大家看上面,這個(gè)是dtree.js插件,一個(gè)專門用于生成樹的js插件的使用方法,那么如果我們附以上述的sql語句在數(shù)據(jù)庫中把數(shù)據(jù)選出來后,是不是只要一個(gè)循環(huán)就可以給這個(gè)dtree.js插件顯示了,不是嗎?我們?nèi)绻幌腼@示整顆樹只想顯示如:只顯示系統(tǒng)管理菜單有其下列所有的子菜單,那么我們的Oracle中的Sql應(yīng)該怎么寫呢?經(jīng)查“系統(tǒng)管理”這個(gè)菜單的MENU_ID=10

18、5,于是我們的Sql語句如下:SELECT*FROMT_SYS_MENUSTARTWITHMENU_ID=105CONNECTBYPRIORMENU_ID=MENU_PIDorderbyMENU_ID對吧?很簡單哈!T_Privilege表用于存放系統(tǒng)每個(gè)菜單的詳細(xì)子權(quán)限如“增,刪,改,查”T_Menu_Privilege表這張表就是我們的最終終結(jié)大BOSS表,它里面是一個(gè)完整的系統(tǒng)權(quán)限與角色關(guān)系間的對應(yīng)。比如說:我們想要知道“user”這個(gè)角色,可以操作哪些菜單,哪些權(quán)限,那么我們的SQL語句如下:selectdistinctm.menu_id,m.menu_descr,m.menu_url

19、,m.menu_pid,p.privilege_id,p.privilege_typefromt_menu_privilege mp,t_sys_menu m,t_privilege p,t_user_role rwheremp.privilege_id=p.privilege_idandmp.role_id=r.role_idandmp.menu_id=m.menu_idandr.role_id=userorderbym.menu_id通過這個(gè)結(jié)果我們就知道了1.角色“user”能操作哪些菜單2.角色“user”對某個(gè)菜單具有什么樣的權(quán)限進(jìn)而,我們可以推出:我們想要知道Danzel這個(gè)人,可

20、以操作哪些菜單,以及在哪些菜單上有哪些可供操作的權(quán)限,我們使用如下的SQL語句:selectdistinctm.menu_id,m.menu_descr,m.menu_url,m.menu_pid,p.privilege_id,p.privilege_typefromt_menu_privilege mp,t_sys_menu m,t_privilege p,t_user_role rwheremp.privilege_id=p.privilege_idandmp.role_id=r.role_idandmp.menu_id=m.menu_idandr.user_id=Danzelorderb

21、ym.menu_id;通過這個(gè)結(jié)果我們就知道了1.Danzel這個(gè)人能操作哪些菜單2.Danzel對某個(gè)菜單具有什么樣的權(quán)限3.3界面制作關(guān)于jsp,什么dao層,service層的具體代碼這個(gè)就不講了,這個(gè)沒有意義的哦,我們來講設(shè)計(jì)。登錄后如何顯示左邊的樹型菜單: 取得用戶名 將該用戶名作為參數(shù)input進(jìn)如下的SQL語句得到該用戶在登錄后可以看到的系統(tǒng)菜單:selectdistinctm.menu_id, m.menu_descr, m.menu_url, m.menu_pidfromt_menu_privilege mp,t_sys_menu m,t_privilege p,t_user

22、_role rwheremp.privilege_id=p.privilege_idandmp.role_id=r.role_idandmp.menu_id=m.menu_idandr.user_id=DanzelSTARTWITHMENU_PID=0CONNECTBYPRIORM.MENU_ID=M.MENU_PIDorderbyM.MENU_ID將該結(jié)果直接給于index.jsp頁面上的dtree.js組件,一個(gè)循環(huán),所有菜單曾樹形顯示。知道用戶登錄后能夠?qū)δ男┎藛?,并且在相關(guān)界面操作時(shí)有哪些子權(quán)限如:增、刪、改、查、打印、報(bào)表的設(shè)計(jì): 在登錄時(shí)得到用戶名等信息,然后將該用戶名作為參數(shù)in

23、put進(jìn)入如下的sql語句:selectdistinctm.menu_id,m.menu_descr,m.menu_url,m.menu_pid,p.privilege_id,p.privilege_typefromt_menu_privilege mp,t_sys_menu m,t_privilege p,t_user_role rwheremp.privilege_id=p.privilege_idandmp.role_id=r.role_idandmp.menu_id=m.menu_idandr.user_id=Danzelorderbym.menu_id;得到上述結(jié)果后,使用:Hasp

24、map這樣的結(jié)構(gòu)將該用戶所屬的角色分對每個(gè)菜單有哪些操作(增、刪、改、查、打印、報(bào)表)進(jìn)行存儲,放入用戶的session中,在以后用戶在每個(gè)界面進(jìn)行點(diǎn)擊動作時(shí)進(jìn)行判斷,或者可以寫個(gè)filter來進(jìn)行判斷,是不是就可以作到:知道該登錄用戶在登錄后可以對哪些菜單進(jìn)行操作,并且擁有什么操作權(quán)限啦?相應(yīng)的我們還需要制作如下的界面: 用戶的管理界面 角色的管理界面 用戶與角色的分配界面 系統(tǒng)菜單的管理界面 具體權(quán)限項(xiàng)的管理界面 系統(tǒng)菜單與角色間具體的權(quán)限分配界面好了,有了這些界面,一個(gè)完整的基于數(shù)據(jù)庫引擎的權(quán)限系統(tǒng)算是完成了。嚴(yán)重注意:在制作“系統(tǒng)菜單與角色間具體的權(quán)限分配界面”時(shí),如果在界面上把某個(gè)角

25、色對該條菜單的“查看”這個(gè)選項(xiàng)disable后,那么該角色將不擁有任何該菜單的所有權(quán)限,舉例:某角色對菜單A擁有如下權(quán)限:增、刪、改、打印但是這個(gè)“查看”權(quán)限沒有,也有可能是管理員誤操作,但是從真實(shí)情況我們來說,這個(gè)角色連“查看”的權(quán)限都沒有,連菜單都進(jìn)不了,他能做什么“增、刪、改?!钡绕渌牟僮靼。坎僮鱾€(gè)頭?。∈前??所以一旦界面上該角色對某個(gè)系統(tǒng)菜單沒有了查看權(quán)限后,它對這個(gè)菜單的其它權(quán)限也必須從T_MENU_PRIVILEGE這個(gè)表中刪除。四、改進(jìn)T_SYSTEM_MENU表的設(shè)計(jì)前面我們用的是Oracle特有的遞歸SQL將樹形菜單在從數(shù)據(jù)庫中選取出來時(shí)就已經(jīng)是一顆樹的結(jié)構(gòu)了,但是像MYS

26、QL,SQL SERVER, DB2等可能不帶有這樣的特SQL,那就需我們自己動手去寫遞歸,還有就是很多工程用的是jquery的tree或者是其它相關(guān)的ajax tree,這些tree都需要用到一個(gè)字段叫l(wèi)evel(此處指深度、層次的意思),如果按照原來的表結(jié)構(gòu),要取得這個(gè)level,恐怕是要寫遞歸算法了。就算有些數(shù)據(jù)庫有類似的語句,那也需要你去修改你的SQL語句從未影響了性能與通用性。我們在這邊說,我們無論什么數(shù)據(jù)庫,如果都用相同的SQL就能把我們需要的東西在數(shù)據(jù)庫中就排好樹形結(jié)構(gòu)然后一次性選取出來,那應(yīng)該有多好啊。答案是有的,在原來的T_SYSTEM_MENU表中改動也不大,只需要增加兩個(gè)

27、字段即可,即:lft與rgt(left, right),這種設(shè)計(jì)其實(shí)已經(jīng)有了,我在此只不過結(jié)合實(shí)際例子把它應(yīng)用到實(shí)際上,并且進(jìn)一步詳細(xì)描述如果來實(shí)現(xiàn)它,它就是被稱為:左右值無限分類實(shí)現(xiàn)算法也稱為預(yù)排序遍歷樹算法,對于這種層次型數(shù)據(jù)(Hierarchical Data)一般我們有兩種設(shè)計(jì)方法: 毗鄰目錄模式(adjacencylist model) 預(yù)排序遍歷樹算法(modifiedpreorder tree traversal algorithm)4.1基于lft, rgt的無限分類算法我們來看一個(gè)圖,下面我們把我們原有的菜單畫成下面這樣的層次關(guān)系:我們把原有的系統(tǒng)菜單畫成了一個(gè)個(gè)的橢圓,最外

28、層的就是我們的菜單,然后在每個(gè)橢園的兩個(gè)端點(diǎn)即left與right,按照從左-右,開始用數(shù)字來標(biāo)號,上面這個(gè)圖中可以看到最外層這個(gè)大橢園的lft(左)為1,它的rgt(右)為24。那么我們可以用一條標(biāo)準(zhǔn)的SQL,而非什么數(shù)據(jù)庫自帶的特有的、特殊的SQL來顯示出這個(gè)樹形菜單,來看下面的SQL:SELECTnode.menu_id menuId,node.menu_descr menuDescr,node.lft,node.rgt,node.menu_url menuUrl,(COUNT(parent.menu_id)-1) menuLevel,node.menu_pid pidFROMt_sys

29、_menunode,t_sys_menuparentWHERE node.lftBETWEENparent.lftANDparent.rgtANDnode.menu_descr!=菜單GROUPBYnode.menu_id,node.menu_descr,node.lft,node.rgt,node.menu_url,node.menu_pidORDERBYnode.lft來看顯示的結(jié)果看看上面這個(gè)結(jié)果,怎么樣? 樹形結(jié)構(gòu)也有了(可以用于dtree來顯示); 層次level也有了(可以用于ajax的一些tree); 我們用的SQL又是最標(biāo)準(zhǔn)的所有的數(shù)據(jù)庫都能用到的SQL;嘗到甜頭了是吧?那我們

30、下面來看如何對這樣的基于t, rgt的數(shù)據(jù)結(jié)構(gòu)來作插入操作?4.2如何在現(xiàn)有節(jié)點(diǎn)中插入新的子節(jié)點(diǎn)如果現(xiàn)在我們要在“報(bào)表查詢”這個(gè)圓里加入一個(gè)菜單,假設(shè)我們就叫“周報(bào)”,那么再來看這個(gè)原有的圖發(fā)生了什么樣的改變,來看:看到么,原有的最外層橢園的rgt+2,原有的報(bào)表查詢這個(gè)園的右邊界呢?是不是也加了2啊?而原有的“月報(bào)”這個(gè)圓的lft加了多少?也是+2!那么來看“周報(bào)”這個(gè)圓的lft與rgt關(guān)系:“周報(bào)”的lft= “報(bào)表查詢”這個(gè)圓的lft+1“周報(bào)”的rgt=“報(bào)表查詢”這個(gè)圓的lft+2于是我們就可以整理出在原有葉子中插入child的公式:第一步:選取要被插入new child的外面這個(gè)圓

31、的lft的值第二步:原有的數(shù)據(jù)中所有的rgt如果第一步中得到的lft的值,那么全部+2第三步:原有的數(shù)據(jù)中所有的lft如果第一步中得到的lft的值,那么全部+2第四步:將插入的節(jié)點(diǎn)的lft與rgt的設(shè)計(jì),新節(jié)點(diǎn)的lft =第一步中的lft+1,新節(jié)點(diǎn)的rgt=第一步中的lft+2來看一個(gè)具體的例子:我們要在“報(bào)表查詢”即menu_id=101 中插入一個(gè)新的菜單,叫“周報(bào)”,下面是按照上面四步算法的相關(guān)SQL語句:第一步SELECTlftFROMt_sys_menuwheremenu_id=101;這一步我們得到的值為:2第二步:UPDATEt_sys_menuSETrgt = rgt +2W

32、HERErgt 2;第三步:UPDATEt_sys_menuSETlft = lft +2WHERElft 2;第四步:INSERTINTOt_sys_menu(menu_id, menu_descr, menu_url, lft, rgt)VALUES(113,周報(bào),周報(bào)的url, (2+1), (2+2);插完后我們運(yùn)行查詢SQL:SELECTnode.menu_id menuId,node.menu_descr menuDescr,node.lft,node.rgt,node.menu_url menuUrl,(COUNT(parent.menu_id)-1) menuLevel,nod

33、e.menu_pid pidFROMt_sys_menunode,t_sys_menuparentWHERE node.lftBETWEENparent.lftANDparent.rgtANDnode.menu_descr!=菜單GROUPBYnode.menu_id,node.menu_descr,node.lft,node.rgt,node.menu_url,node.menu_pidORDERBYnode.lftLook, 數(shù)據(jù)正確無誤,我們來看整個(gè)t_sys_menu表里的數(shù)據(jù):Look,整個(gè)最外層的“圓”,右邊界增加了2,從原有的24變成了26。1.3 如何插入一個(gè)新的節(jié)點(diǎn)上面講的是

34、在原有的節(jié)點(diǎn)中插入一個(gè)子節(jié)點(diǎn),現(xiàn)在來講,如何插入一個(gè)新的節(jié)點(diǎn),比如說:我們現(xiàn)在有:報(bào)表查詢,系統(tǒng)管理兩大菜單,我們還想加一個(gè)菜單:保單審核,怎么來做?我們把4.2節(jié)中“如何在現(xiàn)有節(jié)點(diǎn)中插入新的子節(jié)點(diǎn)”里四步公式,稍稍改動一下第一步:選取要被插入新的節(jié)點(diǎn)左邊節(jié)點(diǎn)的rgt的值第二步:原有的數(shù)據(jù)中所有的rgt如果第一步中得到的rgt的值,那么全部+2第三步:原有的數(shù)據(jù)中所有的lft如果第一步中得到的rgt的值,那么全部+2第四步:將插入的節(jié)點(diǎn)的lft與rgt的設(shè)計(jì),新節(jié)點(diǎn)的lft =第一步中的rgt+1,新節(jié)點(diǎn)的rgt=第一步中的rgt+2下面來看我們在“報(bào)表查詢”與“系統(tǒng)管理”中間,插入一個(gè)菜單叫

35、“保單審核”。第一步SELECTrgtFROMt_sys_menuwheremenu_id=101;這一步我們得到的值為:11第二步:UPDATEt_sys_menuSETrgt = rgt +2WHERErgt 11;第三步:UPDATEt_sys_menuSETlft = lft +2WHERElft 11;第四步:INSERTINTOt_sys_menu(menu_id, menu_descr, menu_url, lft, rgt)VALUES(114,保單審核, (11+1), (11+2);運(yùn)行下面的SQL語句我們來檢查一下插入的效果:SELECTnode.menu_id menu

36、Id,node.menu_descr menuDescr,node.lft,node.rgt,node.menu_url menuUrl,(COUNT(parent.menu_id)-1) menuLevel, node.menu_pid pidFROMt_sys_menunode,t_sys_menuparentWHERE node.lftBETWEENparent.lftANDparent.rgtANDnode.menu_descr!=菜單GROUPBYnode.menu_id,node.menu_descr,node.lft,node.rgt,node.menu_url,node.men

37、u_pidORDERBYnode.lft怎么樣,結(jié)果對了吧,呵呵!看看整個(gè)菜單的右邊界吧,從原來的26變成了28了,是不是哦?1.3 如何刪除一個(gè)節(jié)點(diǎn)來看公式第一步:選取要被刪除的菜單的lft的值,rgt的值,以及寬度(width=rgt-lft+1);第二步:刪除所有的位于第一步中得到的lft與rgt之間的節(jié)點(diǎn);第三步:將所有的右邊界大于第一步中得到的rgt的所有節(jié)點(diǎn)的rgt的值減去第一步中得到的width第四步:將所有的左邊界大于第一步中得到的rgt的所有節(jié)點(diǎn)的lft的值減去第一步中得到的width來看實(shí)際例子,我們有下面這樣的數(shù)據(jù):我們想將menu_id=114的保單審核刪除,當(dāng)然,這是

38、一個(gè)父節(jié)點(diǎn),如果把它刪了,其子節(jié)點(diǎn)115即手工審核也必須被一起刪除,要不然它就成為臟數(shù)據(jù)了是不是?套用上述四步公式:第一步:SELECTlft, rgt, (rgt - lft +1) widthFROMt_sys_menuWHEREmenu_id =114第二步:DELETEFROMt_sys_menuWHERElftBETWEEN12AND15第三步:UPDATEt_sys_menuSETrgt = rgt -4WHERErgt 15第四部:UPDATEt_sys_menuSETlft = lft -4WHERElft 15全部步驟完成后,我們來運(yùn)行檢驗(yàn)的SQL:SELECTnode.me

39、nu_id menuId,node.menu_descr menuDescr,node.lft,node.rgt,node.menu_url menuUrl,(COUNT(parent.menu_id)-1) menuLevel, node.menu_pid pidFROMt_sys_menunode,t_sys_menuparentWHERE node.lftBETWEENparent.lftANDparent.rgtANDnode.menu_descr!=菜單GROUPBYnode.menu_id,node.menu_descr,node.lft,node.rgt,node.menu_ur

40、l,node.menu_pidORDERBYnode.lft結(jié)果正確,再來看整個(gè)“菜單”的邊界,從原來的28縮減成了26了,結(jié)果正確。上述這種基于lft, rgt左右值無限分類實(shí)現(xiàn)算法的個(gè)菜單的好處在于: SQL語句不受特定的數(shù)據(jù)庫的限制 SQL語句通用 直接從數(shù)據(jù)庫中遠(yuǎn)取出來的結(jié)構(gòu)化的數(shù)據(jù)即可滿足需要pid的如:dtree.js這樣的JS控件的需要也可以滿足需要level的ajax tree控件的需要。grass-roots party organizations is focus of new party members. Further strengthening the party e

41、ducation campaign, party organization to more excellent talents absorbed, constantly enhance the partys vitality and vigor, a solid job discovery, training activists. The initiative to broaden the scope of training, at the village level organization of young cadres, wealth experts and other personne

42、l in the discovery, selection, training, and guide them to move closer to the party and injected fresh vitality to the building of rural grass-roots party organizations. Second is to further improve the site present situation of grass-roots party branches. With an emphasis on construction of village

43、-level activities, comprehensive corrosion activities of grass-roots party organization construction in various fields, with village-level party organization function setting, achieving more efficient use of venues, activities for grass-roots party organizations and party members, and create good co

44、nditions for serving the masses, by using village-level activities. Third is to conscientiously implement the village group living subsidy distribution work. In strict accordance with the parent document, fully according to the actual situation, further improve the village cadres of the group regist

45、ration through the one card uniform forms, living subsidies timely payment on time each month to the hands of village cadres of the group, to ensure, without delay, not in arrears, and to ensure that earmarks. Four village election preparations are made. Organization survey and the Xiang village cad

46、res, a comprehensive understanding of the village Committee. Using visited members, and masses representative and village group cadres of form, understand masses by wants to, and by needed, and by hope; through held members will, and masses will and village group cadres will, understand village level organization status, and exists highlight problem and future development direction; visited understand complex back soldiers, and wo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論