关联式资料库课件.ppt
《关联式资料库课件.ppt》由会员分享,可在线阅读,更多相关《关联式资料库课件.ppt(129页珍藏版)》请在三一办公上搜索。
1、第 二 章關聯式資料庫,本章學習目標,1.瞭解何謂關聯式資料庫(Relational Database)及其定義。2.瞭解關聯式資料庫的各種專有名詞及 三種關聯模型。3.瞭解關聯式資料完整性中的三種整合 性法則。,本章內容,2-1 關聯式資料庫(Relation Database)2-2 鍵值屬性2-3 關聯式資料庫的種類2-4 關聯式資料完整性,2.1關聯式資料庫(Relation Database),1.是由一群相互關係的正規化關聯(表格)所組成。2.關聯(表格)之間是透過相同的欄位值(即外鍵FK;Foreign Key)來連繫。3.關聯(表格)中的所有屬性內含值都是基元值(Atomic
2、Value)。,2-1關聯式資料庫(Relation Database),假設學校行政系統中有一個尚未分割的學籍資料表,如下表所示:由上表中,我們可以清楚看出多筆資料重複現象,如果有某一筆資料打錯,將會導致資料不一致現象。例如:在上表中的第5筆記錄的系主任,應該是李碩安卻打成李安。,因此,我們就必須要將原始的學籍資料表分割成數個不重複的資料表,再利用關聯式資料庫的方法來進行資料表的關聯。,因此,我們就必須要將原始的學籍資料表分割成數個不重複的資料表,再利用關聯式資料庫的方法來進行資料表的關聯。何謂關聯式資料庫呢?它是由兩個或兩個以上的資料表組合而成。其目的:1.節省重複輸入的時間與儲存空間。2
3、.確保異動資料(新增、修改、刪除)時的一致性及完整性。因此,我們必須將各種資料依照性質的不同(如:學籍資料、選課資料,課程資料,學習歷程資料等),分別存放在幾個不同的表格中,表格與表格之間的關係,則以共同的欄位值(如:學號欄位)相互連結,以這種方式來存放資料的資料庫,在電腦術語中,稱為關聯式資料庫(Relational Database)。,【定義】1.是由一群相互關係的正規化關聯(表格)所組成。2.關聯(表格)之間是透過相同的欄位值(即外鍵參考主鍵)來連繫。3.關聯(表格)中的所有屬性內含值都是基元值(Atomic Value)。因此,我們可以將上表中的學籍資料表分割為學生資料表與科系代碼表
4、,如何產生關聯式資料庫呢?它是透過兩個資料表的相同欄位值(即系碼)來進行連結。如下所示:註:主鍵與外鍵專有名詞會有後面章節中詳細介紹。,【優點】1.節省記憶體空間 相同的資料記錄不須要再重複輸入。2.提高行政效率 因為資料不須再重複輸入,故可以節省行政人員的輸入時間。3.達成資料的一致性 因為資料不須再重複輸入,故可以減少多次輸入產生人為的錯誤。,關聯式資料庫模型的相關術語通常是用來說明資料庫系統的相關理論,而SQL Server或Access等資料庫管理系統所使用的資料庫相關名詞是利用另成一套術語,不過這些名詞或術語都代表相同意義,如表2-1所示:表2-1 關聯名詞比較表,【關聯名詞】,圖示
5、說明:【重要專有名詞】1.資料表(Table):又稱為表格,它是真正儲存資料的地方。它可視為特 定主題的資料集合。並且它是由資料行與資料列的二維表格 組合而成。例如:上表中的學生資料表。2.資料行(Column):是指資料表中的某些欄位,它是以垂直方 式來呈現。例如:上表中的學號、姓名等。3.資料列(Row):是指資料表中某些記錄,它是以水平方式來呈現。例如:上表中的第一筆記錄。#1 S0001,一心,D001。,圖示說明:【重要專有名詞】4.主鍵(Primary Key;PK):是指用來識別記錄的唯一性,它不可以重複及 空值(Null)。例如:上表中的學生資料表中的學號及科系代碼表中的系碼5
6、.外鍵(Foreign Key;FK):是指用來建立資料表之間的關係,其外鍵內含值 必須要與另一個資料表的主鍵相同。例如:上表中的學生資料表中的系碼。6.關聯性(Relationship):在資料表之間,透過外鍵來參考另一個資料 表的主鍵,如果具有相同欄位值就可以進行關聯。例如:上表中的學生資料表中的系碼與科系代碼表中的系碼都具有 相同欄位值,因此,就可以進行關聯。,在關聯式資料庫中,每一個關聯(表格)會有許多不同的鍵值屬性(Key Attribute),因此,我們可以分成兩個部份來探討:一、屬性(Attribute):是指一般屬性或欄位。如下圖所示。二、鍵值屬性(Key Attribute)
7、:是指由一個或一個以上的屬性所組成,並且在一個關聯中,必須要具有唯一性的屬性來當作鍵(Key)。例如:在關聯式資料庫中,常見的鍵(Key)可分為:超鍵、候選鍵、主 鍵及交替鍵,其各鍵的關係,如下圖所示。,2-2鍵值屬性,【定義】用來描述實體的性質(Property)。【例如】學號、姓名、性別都是用來描述學生實體的性質,並且每一個屬 性一定要有一個定義域(Domain)(亦即資料類型、範圍大小等)。其中,性別屬性的內含值,必須是男生或女生,而不能超出定 義域(Domain)的合法值群。【分類】1.簡單屬性(Simple Attribute)2.複合屬性(Composite Attribute)3
8、.衍生屬性(Derived Attribute),2-2.1 屬性(Attribute),【定義】已經無法再繼續切割成其他有意義的單位,亦即該屬性為 基元值(Atomic Value)。【例如】學號屬性便是簡單屬性。,1.簡單屬性(Simple Attribute),【定義】由兩個或兩個以上的其他屬性的值所組成。【例如】地址屬性是由區域號碼、縣市、鄉鎮、路、巷、弄、號等 各個屬性所組成。【適用時機】戶政事務查詢,房屋仲介網站 那些屬性是屬於複合屬性呢?必須要視需求而定。一般使用者在設定客戶資料表或學生資料表時,地址屬性是視為簡單屬性。【優點】大量查詢時,較快速。where 地址 Like*苓雅
9、區*速度較慢 where 區域=苓雅區 速度較快,2.複合屬性(Composite Attribute),【定義】指可以經由某種方式的計算或推論而獲得的。【例如1】年齡屬性便屬於衍生屬性。以實際的年齡為例,可以由目前的系統時間減去生日屬性的 值,便可換算出年齡屬性的值。年齡=目前的系統時間生日,3.衍生屬性(Derived Attribute),Dim Age As IntegerAge=Year(Now()-Val(TextBox1.Text)Label3.Text=您今年&Age&歲”,程式名稱:ch2ch2-2ch2-2.sln,SELECT DATEDIFF(YY,1971/10/9,
10、getdate();,【例如2】性別屬性也可以當作衍生屬性。假設使用者輸入介面中有身分證字號欄位時,則我們可以判斷使用者的性別是男生或女生。【作法】輸入ID,判斷第二位數字,如果是1代表男生 如果是2代表女生,Dim ID As String Dim Sex_word As String ID=TextBox1.Text Sex_word=Mid(ID,2,1)If Sex_word=1 Then Label3.Text=您是男生 Else Label3.Text=您是女生 End If,基本上,我們會在每一個資料表中,選出一個具有唯一性的欄位來當作主鍵,但是,在一個資料表中,如果找不到具有唯
11、一性的欄位時,我們也可以選出兩個或兩個以上的欄位組合起來,以作為唯一識別資料的欄位。【定義】是指在一個資料表中,選出兩個或兩個以上的欄位組合起來,以作為唯一識別資料的欄位,因此,我們可以稱這種組合出來的欄位,就是超鍵。在一個關聯(表格)中至少有一個超鍵,就是所有屬性的集合。,2-2.2 超鍵(Super Key),【例如】以學生資料表為例,若是全班的學生姓名中,若有人同名同姓時(重複),則我們可以搭配學生的學號,讓學生的學號與學生的姓名兩欄位結合起來(亦即學號姓名)來產生新的鍵。所以,姓名,學號是一個超鍵。因為不可能有兩個學生的姓名與學號皆相同。身份證字號也是一個超鍵。,設定姓名,學號為超鍵,
12、同名同姓,【同理】姓名,學號,身份證字號,年齡,系別,姓名,學號,身份證字號,年齡也都是超鍵。因為它可以造成唯一性的限制。【分析】1.年齡或姓名都不是超鍵。2.最大的超鍵是所有屬性的集合;最小的超鍵則是關聯的主鍵。,在關聯式資料庫模型中,將每一個資料表視為一個實體,而每一個實體利用屬性描述之,而這些屬性就稱為鍵值。其中用來識別資料表中記錄的唯一值的鍵值,稱為主鍵。【定義】1.從候選鍵中選擇一個用來唯一識別值組(記錄)的鍵,稱為主鍵。2.在關聯綱要裡,我們會在主鍵的屬性名稱加一個底線。3.在一個關聯中,只有一個主鍵,若候選鍵未被選為主鍵時,則稱為 交替鍵(Alternate Key)。4.主鍵之
13、鍵值不可為虛值(Null Value)。5.在建立資料表時一般都是以P.K.來代表主鍵。,2-2.3 主鍵(Primary Key),【舉例】學生資料表(學號,姓名,生日,身分證字號,科系)(1)候選鍵:(學號)或(身分證字號)(2)主鍵:學號(3)交替鍵:身分證字號,【如何挑選主鍵?】基本上,我們要從多個鍵值中挑選主鍵時,會依循以下三個原則:1.固定不會再變更的值 在挑選主鍵時,必須要找永遠不會被變更的欄位,否則會增加爾 後的管理和維護資料的困難度與複雜性。例如:學號與身份證字號在決定之後,幾乎不會再改變。2.單一的屬性 在一個資料表中,最好只選取單一屬性的候選鍵作為主鍵,因為 可以節省記憶
14、體空間及提高執行效率。例如:姓名+學號與學號,雖然二者都具有唯一性,但是後者 學號是單一屬性。3.不可以為空值或重覆 依照關聯式資料完整性規則,主鍵的鍵值不可以重覆,也不可以 為空值(NULL)。例如:姓名欄位就不適合當作主鍵欄位。因為可能會重複。,以圖2-1關聯式資料庫為例:步驟一:先建立一個學生資料表,並且包括學號、姓名及系碼 三個欄位名稱,如下圖所示:,【SQL Server 上機實作】,步驟二:將滑鼠移到欲設定主鍵欄位名稱的最左邊,再按功能表中 的設定主索引鍵圖示即可。設定後的結果如下圖示:說明:學號欄位名稱的最左邊就會自動出現一支黃色的鑰匙,即代表 學號設定為主鍵。,步驟三:請在學生
15、資料表中先輸入五筆記錄如下圖示:再新增第六筆記錄,其學號為S0001的李安,系碼為D001的學生。以證明主鍵是具有唯一性,不可以重複的。因此,SQL Server就會馬上出現錯誤的畫面,即代表第六筆無法新增。如下圖所示:,第六筆無法新增,【定義】是指資料表中的主鍵,是由兩個或兩個欄位以上所組成,這種 主鍵稱為複合鍵(Composite Key)。【使用時機】當表格中某一欄位的值無法區分資料記錄時,可以使用這種方法。【例如】在表2-2a中縣市的欄位值有重複,無法區分出每一筆記錄,所以縣市欄位不能當作主鍵欄位。因此,必須要把縣市與區域兩個欄位組合在一起,當作主鍵欄位。如表2-2b所示。,2-2.4
16、 複合鍵(Composite Key),重複,重複,以上面的例子為例:步驟一:先建立一個城市區域資料表,並且包括縣市及區域兩個 欄位名稱,並輸入四筆記錄。如下圖所示:,【SQL Server 上機實作】,步驟二:將滑鼠移到欲設定主鍵欄位名稱的最左邊,按住滑鼠左鍵往下選取縣市及區域兩個欄位名稱,再按功能表中的設定主索引鍵圖示即可。設定後的結果如下圖示:說明:縣市及區域兩個欄位名稱的最左邊就會各出現一支黃色的鑰匙,即代表縣市及區域設定為複合鍵。,【定義】候選鍵就是主鍵的候選人,並且也是關聯表的屬性子集所組成。【條件】一個屬性(欄位)是要成為候選鍵,則必須同時要符合下列兩項條件:1.具有唯一性 是指
17、在一個關聯表中,用來唯一識別資料記錄的欄位。例如:超鍵(Super Key)。但可以是由多個欄位組合縣市+區域而成。2.具有最小性 是指除了符合唯一性的條件之外,還必須要在該屬性子集中 移除任一個屬性之後,不再符合唯一性。亦即鍵值欄位個數為最小。例如:縣市+區域組合成來符合唯一性的條件。並且在移除任 一個屬性區域之後,縣市不再符合唯一性。因此,縣市+區域就是候選鍵。,2-2.5候選鍵(Candidate Key),【特性】1.候選鍵可以唯一識別值組(記錄),大部份關聯都只有一個候選鍵。2.若候選鍵只包含一個屬性時,稱為簡單(simple)候選鍵。例如:學號 若包含兩個或兩個以上屬性時,稱為複合
18、(composite)候選鍵。例如:縣市+區域,【舉例1】假設現在有一個學生資料表,其相關的欄位如下所示:學生資料表(學號,姓名,生日,身分證字號,科系)請找出此資料表中的兩個候選鍵。【解答】第一個候選鍵(1)找出具有唯一性的欄位 學號+姓名共同組成時,滿足唯一性。(2)檢查是否具有最小性 但是學號+姓名 不滿足最小性,因為在移去姓名屬性之後,學號仍然具有唯一性。因此,我們必須要縮減為最小欄位為學號,所以找到第一個候選鍵。,學生資料表(學號,姓名,生日,身分證字號,科系)【解答】第二個候選鍵(1)找出具有唯一性的欄位 身分證字號+科系共同組成時,滿足唯一性。(2)檢查是否具有最小性 但是身分證
19、字號+科系 不滿足最小性,因為在移去科系屬性 之後,身分證字號仍然具有唯一性。因此,我們必須要縮減為最小欄位為身分證字號,所以找到第二個候選鍵。所以,學號或身分證字號皆為候選鍵,【舉例2】假設現在有一個通訊錄資料表,其相關的欄位如下所示:通訊錄資料表(姓名,生日,電話,地址)請找出此資料表中的一個候選鍵。【解答】(1)找出具有唯一性的欄位 姓名+生日共同組成時,滿足唯一性。(2)檢查是否具有最小性 並且姓名+生日 也滿足最小性,因為在移去生日屬性之後,姓名就不具有唯一性。因此,姓名+生日 兩個欄位組合,缺一不可,所以這種候選鍵又稱 為複合式候選鍵。所以,姓名+生日為複合式候選鍵,問題,?,在關
20、聯式資料庫中,任兩個資料表要進行關聯(對應)時,必須要透過外來鍵參考主鍵才能建立,其中主鍵值的所在資料表稱為父關聯,而外來鍵值的所在資料表稱為子關聯。【定義】外來鍵是指父關聯嵌入的鍵,並且外來鍵在父關聯中扮演主鍵的角色。因此,外來鍵一定會存放另一個資料表的主鍵,主要目的是用來確定資料的參考完整性。所以,當父關聯的主鍵值不存在時,則子關聯的外來鍵值也不可能存在。,2-2.6 外來鍵(Foreign Key),父關聯,子關聯,【外來鍵的特性】1.子關聯的外鍵必須對應父關聯的主鍵。2.外鍵是用來建立子關聯與父關聯的連結關係。例如:張三同學可以找到對應的系主任。說明:在SQL語言中,通常是主鍵值=外來
21、鍵值當作條件式 例如:在SELECT之WHERE子句中撰寫如下:說明:以上SQL指令是用來聯結學生資料表 和科系代碼表兩個資料表。,父關聯,子關聯,嵌入,參考,【外來鍵的特性】3.外來鍵和父關聯的主鍵欄位必須要具有相同定義域,亦即相同的 資料型態和欄位長度,但名稱則可以不相同。【舉例1】相同的資料型態和欄位長度 假設現在有一個關聯圖如下:其中,科系代碼表的系碼欄位的資料類型為nvarchar(4),現在欲改為nchar(10)的資料類型,則會出現以下的錯誤產生:,【舉例2】外來鍵和父關聯的主鍵欄位名稱則可以不相同假設現在有一個關聯圖如下:其中,科系代碼表的系碼欄位名稱,現在欲改為科系代碼欄位名
22、稱,則是可以的。如下圖所示:註:因此,我們可以清楚得知,子關聯的外來鍵參考父關聯 的主鍵時,是透過相同的欄位值。而非相同的欄位名稱,【外來鍵的特性】4.外來鍵的欄位值可以是重覆值或空值(NULL)。(1)重覆值的例子說明:在上表中,代表張三與李四都是就讀資工系,父關聯,子關聯,重覆值,參考,【外來鍵的特性】4.外來鍵的欄位值可以是重覆值或空值(NULL)。(2)空值(NULL)的例子說明:在上表中,代表王五尚未決定要就讀那一個科系,父關聯,子關聯,參考,空值,1.父關聯表中的主鍵值,一定不能為空(Null),也不能有重複現象。2.子關聯表中的外鍵值,可以為空(Null),也可以有重複現象。,【
23、歸納主鍵與外鍵的關係】,以上面的例子為例:步驟一:先建立一個學生資料表與科系代碼表,如下圖所示:,【SQL Server 上機實作】,步驟二:在ch2_DB資料庫中的資料庫圖表上,按下右鍵之後,再點選新增資料庫圖表,如下圖所示:,按右鍵,步驟三:在加入資料表對話方塊中,滑鼠先移到科系代碼表上,按住Ctrl鍵,再點選學生資料表之後,再按加入鈕,最後再按關閉鈕即可。,步驟四:顯示兩個資料表準備作關聯圖,而在每一個資料表中都有一個比較粗體的欄位名稱,即所謂主鍵,也就是具有唯一性的欄位。步驟五:在上圖中,請將滑鼠移到科系代碼表內的系碼欄位上(即主鍵),按住滑鼠左鍵拖曳到學生資料表內的系碼欄位上(即外鍵
24、),此時便會出現一條長條形的方塊之後,放掉滑鼠左鍵,此時,馬上出現一個資料表和資料行之編輯關聯對話方塊。,在按確定鈕之後,即可建立學生資料表與科系代碼表的資料庫關聯圖了。如下圖所示:,主鍵,外鍵,步驟六:儲存資料庫關聯圖名稱。在建立完成資料庫關聯圖之後,再按工具列上的儲存鈕之後,會出現選擇名稱的對話方塊,此時,請輸入學生科系資料庫關聯圖後,再按確定鈕即可。,假設現在有甲與乙兩個資料表,其關聯式資料庫中資料表的關聯種類可以分為下列三種:1.一對一的關聯(1:1):甲資料表中的一筆記錄,只能對應到乙資料表中的一筆記錄,並且乙資料表中的一筆記錄,只能對應到甲資料表中的一筆記錄。2.一對多的關聯(1:
25、M):甲資料表中的一筆記錄,可以對應到乙資料表中的多筆記錄,但是乙資料表中的一筆記錄,卻只能對應到甲資料表中的一筆記錄。3.多對多的關聯(M:N):甲資料表中的一筆記錄,能夠對應到乙資料表中的多筆記錄,並且乙資料表中的一筆記錄,也能夠對應到甲資料表中的多筆記錄。,2-3 關聯式資料庫的種類,【定義】假設現在有甲與乙兩個資料表,在一對一關聯中,甲資料表中的一筆記錄,只能對應到乙資料表中的一筆記錄,並且乙資料表中的一筆記錄,只能對應到甲資料表中的一筆記錄。【舉例】以成績處理系統為例,當兩個資料表之間做一對一的關聯時,表示學生資料表中的每一筆記錄,只能對應到成績資料表的一筆記錄,而且成績資料表的每一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关联 资料库 课件

链接地址:https://www.31ppt.com/p-3805509.html