學習資料庫前的必備知識

 


在網路盛行以前(1990前後)電腦只是一個大型的儲存容器。人們會將需要計算的資料輸入這台機器當中,經過簡單運算後將結果列印出報表。這些列印出來的報表有些會被收在辦公室存放起來,有些則是些帳單、收發貨單據等。 隨著以各式線材架設的固網電信盛行後(2000前後至今)發現資電腦的功能越來越強大,已經能夠不受距離或時間限制,即時的反應資料變化並將資料集中管理。為了處理暴增的資料以及更多的服務需求,資料庫的設計從階層式資料庫 (Hierarchical database model) 到網狀資料庫 (Network Model) 設計模式,以及普遍受到歡迎的關連式資料庫(Relational model)設計模式。直到移動通訊以及各種頻寬技術發達,出現依賴大容量記憶體與高效能處理器的巨量資(Big data)設計模式。事實上,這些不同時代的資料庫技術並沒有優劣之分。在當下能夠解決需求並在符合人員技術能力、兼顧軟硬體設備,以及維護成本的設計方式才是最有價值的資料庫。 



階層式設計

階層式資料庫類似資料夾般的結構,如同資料夾般一個資料夾中能包含多個資料夾(一對多的關係)。當用圖形表示時,看起來像棵樹。階層以資料夾表示,關係以線條表示。

 

我們很容易發現,階層式存放資料的方式無法建立1個以上的來源的關係(多對多的關係)。除此之外,若是刪除一個父節點將會毀損全部的資料(譬如不小心誤刪了 D:。


網狀設計

網路式資料庫為了解決多對多關係而產生新的設計模式,與階層式不同點在於一筆記錄可以包含多個來源記錄。網路式資料庫是由儲存資料記錄的集合與連結資料記錄間疊加所組成。很明顯的與階層式的設計方法的不同,尤其是在子記錄節點可以有零個至多個父記錄節點。請將資料想像成檔案,資料記錄是由每筆資料的捷徑與組成。網狀設計仍然可以用階層式設計來解釋,捷徑被分配到不同的組合如此而已。


雖然提供了更高的彈性,能夠更直接、快速的在多對多的關係當中找到對應的資料,但是網路式的設計相對複雜,更新資料是一件相當麻煩事情。


關連式設計

資料與資料之間的關係不再是以完整字串為鏈結,而是以資料值(代碼)做為資料之間的關聯。許多關聯表的集合即形成「關聯式資料庫」。




目前的資料庫技術,能夠模擬出階層式、網路式以及關連式的設計模式,差別只在新增改查的命令語法不同。使用高階的正規化技術,甚至能夠達到物件導向的層級。每筆資料都是由其它物件層層包覆所組成,物件與物件之間可以有各種縱向繼承(Specialization and Generalization) 與橫向組合(Aggregation) 的關係,

沒有留言:

張貼留言