MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          樹的一種特殊設計(轉(zhuǎn))

          Posted on 2007-09-12 13:37 leekiang 閱讀(236) 評論(0)  編輯  收藏 所屬分類: oracle
          不考慮極端的情況,通常組織機構(gòu)有個10幾個層次就是頂天了。 所有,可以用一個字段存儲下所有祖先的信息,例如varchar2(300),其中可以用 '.'隔開。 我的設想是這樣的:
          id name Nodecode
          1 a 1
          2 b 1.2
          3 c 1.3
          4 d 1.2.4
          5 e 1.2.5
          6 f 1.2.5.6

          從6可以直接看到它的上級脈絡是6.5.2.1 。當然這里考慮的是級別不多的。但是除非你是很極端的應用,我想還是可以滿足的。在插入和更新的時候注意維護nodecode即可。
          如果要照到祖先,則只要解析一下nodecode即可。
          同理如果要照后代,例如2的后代,則馬上可以通過Like的方式獲得.

          另一篇:
          因為TreeKey是個字符串,而1.10會排到1.2, 1.3之前,很顯然,這不是我們要的結(jié)果。要解決其實也很簡單,在編號前面補0,比如,1.10就寫成0001.0010,1.2就寫成0001.0002,這樣排序就不會有問題了。

          這讓我想起很早前看的微軟的一個有關(guān)樹的軟件代碼,就看到他們是以000x.000x這種方式進行處理的,當時我還感覺他們怎么這么麻煩,現(xiàn)在想來,才發(fā)現(xiàn)是自己無知了,呵呵。


          主站蜘蛛池模板: 荆门市| 双鸭山市| 吉林省| 曲麻莱县| 福清市| 淮安市| 三江| 东乌| 胶南市| 大足县| 罗江县| 白河县| 清河县| 六枝特区| 苏尼特左旗| 宜阳县| 勃利县| 吴江市| 喀喇沁旗| 文成县| 遵化市| 安图县| 阜城县| 绿春县| 武山县| 河曲县| 堆龙德庆县| 岐山县| 肥西县| 浑源县| 新田县| 普宁市| 胶南市| 偏关县| 济源市| 天气| 高密市| 浪卡子县| 胶州市| 长沙县| 抚宁县|