資料層次的概念:
資料層次是表達資料的一種重要關係,在資料庫的設計中,如:組織結構分解、工作任務分解、行政區劃的分解等都是層次關係資料的典型例項。
表達層次關係的資料一般需要實現如下屬性:
1.層次的最大級聯層次數。如:中國->湖南省->長沙市->雨花區,就是4層。
2.能反映同一層次之間的順序關係。如:長沙市 必須在 衡陽市的前面,(因為其是省會)。
3.能獲取任意層次的父節點級子節點(子節點集)。
4.直接獲取任意層次的資料。比如:第三層 市級別的資料。
5.能方便構造層次關係表達樹。
6.層次結構及排序方式的改變不影響其其他資料的內部邏輯關係。
一般有三種方式來表現層次關係的資料:
1.建立多個資料庫表:
如: country: id(主鍵) country_name
province: id(主鍵) country_id(外來鍵),province_name
city: id(主鍵), province_id(外來鍵),city_name
此種方式比較簡單,但設計的靈活性不夠,資料處理起來比較麻煩。
2.採用表的自關聯外來鍵引用
如: district_info: id(主鍵),parent_id,(外來鍵)district_info
通過外來鍵(parent_id)的自身引用主鍵(id)來確立層次關係。
優點:無限級別的層次關係,擴充性強。對於oracle資料庫來說,能簡單通過 start with,,,connect by--語句來實現資料的查詢。
缺點:不能明確看出層次關係,無法實現排序。
3.採用編碼方式來實現層次
district: id,code,name 其中code的特點是上級編碼是下級編碼的字首
優點:通過編碼的內容能夠很容易回去資料的層次關係。
缺點:使用like方法或函式查詢來實現子集的查詢,效率較低,能實現層次關係的級數有限(受code的字段長度影響)。
優化方案:
集合2,3的優點,採用固定編碼級次的長度的方法來設計表。
district:id,code,parent_id,name
其中id為主鍵,code:規定為4位一級。表現的資料如下:
id,code parent_id, name從資料中可以看出,parent_id可以直觀表達層次的上下級關係1 0001 中國
2 00010001 1 湖南
3 000100010001 2 衡陽
4 000100010002 2 長沙
5 0001000100020001 4 雨花
而編碼code可以直觀表達層次關係與同一層次的順序關係。
Xshell怎樣才能實現快速貼上複製
不知道大家對xshell這款終端模擬器熟悉不熟悉,最近本人在使用的時候遇到一些問題,經過多次研究找到了解決方法,現將具體技巧分享給大家,希望能幫助大家解決遇到的問題。xshell 5中文版免費獲取位址 在xshell介面中需要用到之前的一段 自然是選中,熟練的鍵入ctrl c,打算複製,可是再次鍵入...
丟失的檔案怎樣才能恢復
丟失的檔案怎樣才能恢復 如果現在的朋友問我,你能不能幫我找回不小心刪除了的檔案,我可以肯定的告訴他,你只要沒有再往裡面寫入新的資料,我就能幫你找回來。我這麼自信並不是因為我有多麼高深的黑客技術,我只是乙個宅男而已,絕對不是技術宅。為什麼我說可以找回呢,因為我有號用地額資料恢復軟體。是它可以幫我們找回...
怎樣才能增強自己的毅力呢?
一是強化正確的動機。人們的行動都是受動機支配的,而動機的萌發則起源於需要的滿足。什麼也不需要或者說什麼也不追求的人,從來沒有。人,都是有各自的需要,也有各自的追求 只是由於人生觀的不同,不同的 人總是把不同的追求作為自己最大的滿足。史達林說,偉大的目的產生偉大的毅力。從奧斯特洛夫斯基和張海迪身上,我...