文數字資料庫方面、過去有階層式資料庫(heirarchical database system)、網路式料庫系統(network database system)。大多數近代的資料庫系統,例如,DBASE、FOXBASE、ACCESS、ORACLE、INFORMIX等為關聯式資料庫系統(relational database system)。目前向量式地理資訊系統的屬性大 多儲存在關聯式資料庫系統中。因此僅就關聯式資料庫系統加以介紹。
資料庫特性:
關聯式資料庫系統最基本的觀念便是表格(table)。一個表格式為儲存資料最自然的方 式,每一個表格包含了許多行(column)又稱為欄位(field),於每一行內存著相同性質的資料。 表格內每一列(row)裡包含許多不同性質的資料項目。每一列又稱為一筆記錄 (record)。下面是一個典型的表 格:
表格包含三行(欄位):地籍編號、所有權人、及面積。表格包含三列(記 錄),分別記載六筆土地的資料。
難道一個關連性資料庫就是表格嗎?答案當然是否定的。一個關聯式資料庫系 統必須要滿足一些簡單的規則。
關聯式資料庫系統所處理的對象;而處理後的結果也是一些新的表格。關聯式 資料庫的基本操作。最基本的關聯式操作有:
表格中根據設定選擇條件由原來的表格中,選出需要的資料列構成一個新的表 格。
例如,由表一中橫向擷取面積大於190的記錄,就可以得到下面的新表格。
縱向擷取選取表格內的欄位,構成新的表格。例如由表一中縱向擷取「地籍編 號」和「面積」兩個欄位可以得到下面的表格。
結合可以組合來自不同表格內的資料。結合操作由兩個不同表格中,各取出欄 位加以比較,然後根據比較的結果將兩個表格接合成一個表格。例如、表四為 姓名及住址。如果要知道一宗地所有權人的地址,可比較表一的所有權人欄位 和表四的所有權人欄位,然後結合表一及表四產生表五。
所有權人
沈見宇
張標
住址
台中市文華路120號
台北市虎林街130號
結合表格的方法有許多種,上述的方式稱為(nature join),為最常見的一種 結合方式。上述連結的進行方式可以用下面的方式解釋。表一共有3筆記錄,表四有2筆資料。
表一
表四
所有權人
沈見宇
張標
住址
台中市文華路120號
台北市虎林街130號
因此表一和表四配合共有 3 X 2 = 6 種方式。
然後將所有權人相等的記錄選取出來,然後將重複的所有權人欄位消去其中之一,便成為表五的結果。
雖然各種廠牌的關聯式資料庫進行縱向擷取、橫向擷取及結合的指令有所不 同。但是一定包括這些功能,否則不能稱關聯式資料庫系統。
我們常常利用編號來識別事物,例如,地籍編號,身份證號碼。在關聯式 資料庫表格中的鍵(key)也有同樣的功用。鍵由一個或多個欄位所組成, 可以在表格中區別出唯一記錄。換句話說,在一個表格中,只能找到一個 符合鍵值的記錄。例如,在表一中地籍編號欄位為表一的主鍵,表四中的 所有權人為表四的主鍵。必須注意的是在表四中的所有權人是鍵,但是表 一中的所有權人不是鍵。因為一個人可能有兩筆土地。
向量式地裡地理資訊系統和關聯式資料庫連接時,透過圖形資料中所記載 的的鍵值和關聯式資料庫接合(圖一)。這個鍵直通常稱為圖形的識別碼(ID 或 TAG),這個欄位內的值由地理資訊系統自動加以維護,地理資訊系統使用 者不能自行更改。
圖一
在資料庫內,相同的資料可由不同的方式儲存。例如,表五中所儲存的資 料和表一及表四所儲存的資料相同。資料庫的表格的設計會影響到未來資 料管理、更新、使用上的效率。常態化(normalizartion)就是確保資料 庫效率所發展的技巧。例如,如果以表五的方式,將所有權人的住址的資 訊和土地的資料存在同一個表格。張標的住址必須儲存兩次。造成儲存空 間浪費。當張標變更他的地址,則必須要變更兩筆記錄。如果其中一筆忘 記更改,張標就會有兩個住址。造成資料的不一致。
SQL(Structure Query Language)語言為關聯式資料庫的標準查詢語言。目前 大多數的關聯式資料庫都可以透過SQL進行查詢、管理。 關聯式語言的結構十分容易瞭解。其基本語法為:
select 欄位 from 表格 where 選擇條件
1)select *
from 表一
where 面積 > 190
into 表二
2)select 地籍編號,所有權人
from 表一
into 表三
3)select *
from 表一,表四
where 表一.所有權人 = 表四.所有權人
into 表五
將表一中所有權人姓名和表四中所有權人姓名相同的記錄加以結合,則產 生表五。
4) select 地籍編號,表一.所有權人,表四.住址,表一.面積
from 表一,表四
where 表一.所有權人 = 表四.所有權人 AND 表一.面積 > 190
into 表六
綜合relational 操作
並非以下介紹聚合函數的使用。聚合函數並不是關聯式資料庫的三個基本操作之一。不過SQL查詢語言中的聚合函數提供了一些統計分析的功能,在資料查詢上經常會用到。
5)select sum(面積), count(*)
from 表一
into 表七
使用聚合數時,所有的資料被合併進行統計。
6) select 所有權人,sum(面積), count(*)
from 表一
group by 所有權人
into 表 八
使用聚合函數時,如果使用 group by 時,會依照group by 中的欄位,加以合併分類、進行統計運算。
7)select 表一.所有權人,表四.住址, sum(表一.面積), count(*)
from 表一,表四
where 表一.所有權人 = 表四.所有權人
group by 表一.所有權人
into 表九
使用和聚合函數及relation 操作
8)select 表一.所有權人,表四.住址, sum(表一.面積* 2000) "稅金", count(*)
from 表一,表四
where 表一.所有權人 = 表四.所有權人
group by 表一.所有權人
into 表十
使用計算欄位。並且以稅金作為計算欄位的名稱。
9)select 表一.所有權人,表四.住址, sum(表一.面積* 2000) "稅金", count(*)
from 表一,表四
where 表一.所有權人 = 表四.所有權人
group by 表一.所有權人
order by col3 desc
into 表十一
使用排序功能 col3代表表十一中的第三個欄位. desc 代表由大排到小。