Re: [問題] 資料結構跟資料庫的關聯

作者: LPH66 (-6.2598534e+18f)   2014-07-10 14:23:14
※ 引述《jscorpio1 (我 天蠍)》之銘言:
: 一直有這樣的疑問
: 就是資料結構所說的sort、search、tree、graph........
: 到底要怎麼跟資料庫結合?
: 資料存進資料庫,就一定會變成主鍵欄位跟一堆內容欄位
: 比如說是會員資料、商品明細、會員活動紀錄....
: 可以在資料庫裡存成tree或graph嗎?
: 或者該怎麼在資料庫裡進行heap 或 binary search??
: 又或者還是要先把資料從資料庫裡撈出來,放到記憶體裡,
: 再從記憶體裡,去實作資料結構所說的各種方式,達到所要的資料操作
: 最後,再回歸到主鍵跟內容欄位,寫回資料庫
: 有點混亂,不知道有沒有人知道我想表達的問題點。
sort / search 這類比較沒有"資料間關連"的演算法
基本上主流資料庫都已經能做了
(或者該說這就是資料庫系統做出來的主要目的之一
尤其是你提到的 sort (ORDER BY clause) 跟 search (WHERE clause)
這可是資料庫系統最常用的操作)
因此跟這些演算法相關的資料結構 (如 heap 或紅黑樹等等)
資料庫系統裡本來就該內建, 然後讓使用者透過 SQL 指令去叫用
至於像 tree / graph 這種有"資料間關連"的結構則通常有兩種做法
視乎是何種資料之間的關連
如果是不同類資料的關連的話, 資料庫系統有個東西叫 foreign key 可以用來處理
或者就算不用 foreign key 也可以在查詢時使用 table join 來連結
而如果是像 tree 這種同類資料之間的關連
回想一下最一開始不用資料庫的時候, 我們是用指標來抓住這種關連
但指標是什麼? 其實就只是一個用來辨識許多同類東西當中之一的值而已
這種值在資料庫系統有個現成的概念叫做 primary key
因此這種資料結構如果要存進資料庫系統的話
這種指標之間的連結經常是以欄位裡放進別人的 primary key 來表示
這樣一來一樣是可以在資料庫裡面進行所需要的操作的

Links booklink

Contact Us: admin [ a t ] ucptt.com