第二章 關聯式資料庫
學習目標 2-1 關聯式資料庫的種類 2-2 資料的完整性(Data Integrity) 2-3 關聯式資料模型的運算 2-1 關聯式資料庫的種類 2-2 資料的完整性(Data Integrity) 2-3 關聯式資料模型的運算 2-4 視界(View) 2-5 常用的視界表格(View Table)
2-1 關聯式資料庫的種類 關聯式資料庫的關聯種類可以分為下列三種: ‧一對一的關聯(1:1) ‧一對多的關聯(1:M) 2-1 關聯式資料庫的種類 關聯式資料庫的關聯種類可以分為下列三種: ‧一對一的關聯(1:1) ‧一對多的關聯(1:M) ‧多對多的關聯(M:N)
2-1.1 一對一關聯(1:1) 當兩個資料表之間做一對一的關聯時,表示「學生資料表」的每一筆 記錄,都必須一對一的關聯到「成績資料表」的記錄,而且「成績資 料表」的每一筆記錄,也必須一對一的關聯到「學生資料表」的記 錄。
一對一關聯實例圖
一對一關聯資料庫關聯圖
2-1.2 一對多關聯(1:M) 當兩個資料表之間做一對多的關聯時(圖2-6),表示「學生資料表」中 的每一筆記錄,可以對應到「線上評量成績表」中的多筆記錄,而且 「線上評量成績表」的每一筆記錄,只能對應到「學生資料表」中的一 筆記錄,這就是所謂的一對多關聯,這種方式是最常被使用。
一對多關聯實例圖
一對多關聯資料庫關聯圖
2-1.3 多對多關聯(M:N) 當兩個資料表之間是多對多的關聯時,表示第一個資料表中的一筆記錄 要能夠對應到第二個資料表中的多筆記錄,並且第二個資料表中的一筆 記錄要能夠對應到第一個資料表中的多筆記錄,像這種關係即所謂的多 對關聯。
在實務上多對多關聯如果只有兩資料表來建置,難太較高,並且容易出 問題,因此,目前一般的作法是採取三個資料表來建置多對多關聯,也 就是說,在原來的兩個資料表之間再加上一個中介處理的資料表,使他 們可以順利處理多對多的關聯。
多對多關聯實例圖
多對多關聯資料庫關聯圖
2-2 資料的完整性(Data Integrity) 完整性法則(Integrity Rule)之功能在確保資料的「完整性」和 「一致性」,可以避免因新增、修改、刪除資料所引起之異常現 象。一般可分為下列三種完整性: 1.實體資料完整性(Entity Data Integrity)作用在單一資料表 <針對主鍵>。 2.值域資料完整性(Domain Data Integrity)作用在單一資料表。 3.參照完整性(Referential Integrity)則作用在相關聯的兩張資 料表上<針對外來鍵>。
2-2.1 實體資料完整性 ‧ 指表格的Primary Key保證實體的完整性(指對主鍵)。 2-2.1 實體資料完整性 ‧ 指表格的Primary Key保證實體的完整性(指對主鍵)。 ‧ 必備條件:主索引(主鍵)必須能識別出唯一的資料列,因此主鍵之鍵值不可為虛值(或稱空值NULL),如此才能代表資料的記錄。若主鍵是由多個欄位連結而成的組合鍵,則組合鍵的每一個欄位值都不可為虛值。 ‧ 目的:保證每一個實體是可以獨一無二的辨別區分出來。 ‧ 適用:基本關連(Base Relation)。
2-2.2 值域資料完整性 所謂值域完整性,乃限制某欄位之值必須在某一限制範圍,或限制某 欄位條件之約束。 2-2.2 值域資料完整性 所謂值域完整性,乃限制某欄位之值必須在某一限制範圍,或限制某 欄位條件之約束。 例如:我們可以設定學生之性別,如果是「男生」 則以1代表,「女生」則以0代表,但不可以是虛值或其他值。
2-2.3 參照完整性 指利用Foreign Key(外來鍵)強制做資料參考的完整性。參照完整性乃藉由「主鍵」與「外來鍵」的關係來規範兩資料表間資料的完整性。 ‧ 必備條件:所有Foreign Key的輸入值,除了NULL之外,其餘的輸入值必須要與相關連的另一個表格的主鍵(Primary Key)相同。 ‧ 目的:確保主鍵與外來鍵所對應資料的一致性,以避免刪除掉有關聯到其他資料表的資料,造成資料的遺失。
2-3 關聯式資料模型的運算 關聯式資料模型的運算有兩種: 1.關聯式代數運算 2.關聯式集合運算
2-3.1 關聯式代數運算 根據E.F.Codd所提出的關聯式代數理論的基本運算共可分為四 種: 1.選取(Select) 2-3.1 關聯式代數運算 根據E.F.Codd所提出的關聯式代數理論的基本運算共可分為四 種: 1.選取(Select) 2.投影(Project) 3.結合(Join) 4.除法(Divide)。
2-3.1.1 選取(Select)-又稱為限制(Restrict) 就是利用SQL Select指令中Where子句來篩選一個資料表(Table) 中符合條件的資料列(記錄),也就是取得Row的資料。請注意這裡 的Select是運算子並不是指SQL語法中的Select。
2-3.1.2 投影(Project) 就是利用SQL Select指令中Select子句來篩選一個資料表(Table) 中符合條件的資料資料行(欄位),也就是取得Column的資料。
2-3.1.3 結合(Join) 它是由兩個或兩個以上的資料表透過某一欄位的共同值域所組合 (一) 內部結合(Inner Join) 一般的結合(Join)都是屬於此種方法。 (二) 外部結合(Outer Join)可分為三種 自然結合(Natural Join)必須在左右兩邊的關聯中找到對 應值組才行,而Outer join則無此規定。
重要觀念 是一個binary運算子。結果關聯中的每一值組由兩個關聯中各取一值組成,但這兩值組在共同屬性上有共同的值。
2-3.1.4 除法(Divide) 除法運算必須要有兩個資料表,一個當被除數(假設是「A資料 表」),一個要當作除數(假設是「B資料表」),若「B資料表」中的 某一資料列(記錄)被包含在「A資料表」時,就可以除法運算來取 出,並且取出的結果會再刪除B資料表中的資料行(欄位)。
重要觀念 取出兩個關係,第一個是二元關聯,而第二個是單元關聯。結果為二元關聯中某屬性的值,此值組須匹配所有在單元中的值。
2-3.2 關聯式集合運算 在關聯式資料模型中,根據集合理論為基礎,共可分為四種的基 本運算: 1.聯集(Union) 2-3.2 關聯式集合運算 在關聯式資料模型中,根據集合理論為基礎,共可分為四種的基 本運算: 1.聯集(Union) 2.交集(Intersection) 3.差集(Difference) 4.卡笛生乘積(Cartesian Product)。
2-3.2.1 聯集(Union) 在SQL語法中,從兩個Table中取出聯集的資料,重複的資料只取 出一筆。
2-3.2.2 交集(Intersection) 在SQL敘述中,交集是一種能夠取出兩個資料表的共同資料列。
2-3.2.3 差集(Difference) 在SQL敘述中,差集是一種取出兩個資料表中只存在於其中一個資 料表中的資料列。
2-3.2.4 卡笛生乘積(Cartesian Product) 在SQL敘述中,我們可以用來求出兩個資料表中的 每一個欄位、每一個列的組合,這也就是關聯式 資料庫中的「乘積」(Product)。當兩個資料表要 作交叉結合時,所得到的資料表,它的欄位數會 是這兩個資料表的總和。
2-4 視界(View) View也有人稱為「視界」、「檢視表」或「虛擬資料表」,事實 觀念。
2-5 常用的視界表格(View Table) 常用的視界表格(View Table)有三種: 一、行列子集視界(ROW-and-Column Subset Views) 二、合併多個關聯表的VIEW(Join Views) 三、統計總覽視界(Statistic Summary Views)