資料庫程式設計與系統管理 sql server 2005 express 第六章 進階資料庫設計

21
資資資資資資資資資資資資 資資資資資資資資資資資資 SQL Serv SQL Serv er 2005 Express er 2005 Express 第第第 第第第 第第第第第第第 第第第第第第第

Post on 20-Dec-2015

245 views

Category:

Documents


0 download

TRANSCRIPT

資料庫程式設計與系統管理資料庫程式設計與系統管理

SQL Server 2005 ExpressSQL Server 2005 Express

第六章第六章進階資料庫設計進階資料庫設計

22

Chapter 6 OutlineChapter 6 Outline

6-1 6-1 建立示範資料庫 建立示範資料庫 6-2 6-2 設定整合限制設定整合限制6-3 6-3 設定欄位的識別 設定欄位的識別 6-4 6-4 使用者自訂資料型態 使用者自訂資料型態 6-5 6-5 設定計算欄位 設定計算欄位 6-6 6-6 使用資料庫圖表管理資料表 使用資料庫圖表管理資料表 6-7 6-7 瀏覽資料表的各種設定 瀏覽資料表的各種設定 6-8 6-8 本章總結本章總結

33

6-1 6-1 建立示範資料庫建立示範資料庫建立示範資料庫建立示範資料庫 (TradeDB)(TradeDB) 的方法的方法 使用第使用第 55 章介紹的方法手動建立章介紹的方法手動建立 使用指令碼使用指令碼 (Script)(Script) 整批建立整批建立 (( 現在要使用的方現在要使用的方法法 ))

使用資料庫還原使用資料庫還原 (( 第第 1515 章章 )) 使用資料庫附加使用資料庫附加 (( 第第 1515 章章 ))

請在請在 SSMSESSMSE 中開啟光碟中開啟光碟 \\ 程式範例檔程式範例檔 \CH06\CH06\CRETRADEDB.SQL\CRETRADEDB.SQL ,執行該,執行該 SQLSQL 敘述後敘述後即可建立示範資料庫與相關資料即可建立示範資料庫與相關資料

44

6-2 6-2 設定整合限制設定整合限制關聯式資料庫中存在著一些基本的規定,關聯式資料庫中存在著一些基本的規定,稱之為整合限制稱之為整合限制 (Integrity Constraint(Integrity Constraints)s) 。包括:。包括: 個體整合個體整合 (Entity Integrity)(Entity Integrity) 限制限制

主鍵主鍵 (PK)(PK)某一資料欄位的資料值的有效範圍某一資料欄位的資料值的有效範圍 (( 規則或檢查規則或檢查 ))唯一性、可否為唯一性、可否為 NULLNULL 、預設值、預設值

參考整合參考整合 (Reference Integrity)(Reference Integrity) 限制限制外來鍵外來鍵 (FK)(FK) 限制限制

本節將一一介紹這些整合限制設定方法本節將一一介紹這些整合限制設定方法

55

6-2 6-2 設定整合限制設定整合限制 -- 主鍵限制主鍵限制1.先選擇欄位,該欄位的左方會出現一個黑色的三角形。

2.按下該按鈕 (設定主鍵索引 )

3.出現鑰匙符號表示設定完成

主鍵限制主鍵限制關聯式關聯式資料庫模型裏最資料庫模型裏最常用到的限制式,常用到的限制式,因為它能確保在因為它能確保在同一資料表中不同一資料表中不會有重覆的記錄。會有重覆的記錄。當主鍵建立之時,當主鍵建立之時,SQL ServerSQL Server 也也會建立和主鍵宣會建立和主鍵宣告相符的索引。 告相符的索引。

66

6-2 6-2 設定整合限制設定整合限制 -- 主鍵限制主鍵限制設定為主鍵的欄位是不允許 NULL主鍵可以是組合鍵 (多個欄位所組合成的鍵 ) ,例如: items 資料表中的 (order_num,item_num) 即是組合鍵為主鍵。設定組合欄位成為主鍵時,請先使用 <Shift> 或 <Ctrl> 鍵來一次選擇多個欄位,然後再按 [設定主索引鍵 ]按鈕。

為何需要組合鍵才能當主鍵呢?

77

6-2 6-2 設定整合限制設定整合限制 -- 預設值限制預設值限制通常在做資料輸通常在做資料輸入時每個欄位並入時每個欄位並不一定要給值,不一定要給值,這是因為在輸入這是因為在輸入時欄位的值還沒時欄位的值還沒有確定 。 有確定 。 如果對於一個欄如果對於一個欄位在沒有輸入的位在沒有輸入的情況下要給定某情況下要給定某一個值時就可以一個值時就可以設定預設值,例設定預設值,例如:訂單輸入日如:訂單輸入日期可以預設為“期可以預設為“今天”今天”

請在此處填入預設數值

88

6-2 6-2 設定整合限制設定整合限制 -- 檢查限制檢查限制

在此處輸入限制的條件

檢查檢查 (CHECK)(CHECK) 限制可以強制約束資料行接受限制可以強制約束資料行接受的值,藉此強制完成的值,藉此強制完成個體值域的完整性個體值域的完整性。例。例如,公司規定單筆訂單中貨品一次不能訂超如,公司規定單筆訂單中貨品一次不能訂超過過 2020 件,此時就可以在訂單細項檔案件,此時就可以在訂單細項檔案 (ite(items)ms) 的的 quantityquantity 上加入這樣的檢查。 上加入這樣的檢查。 檢查限制的語法符合檢查限制的語法符合 SQLSQL 敘述的語法敘述的語法選擇欲設定檢查限制的欄位後點選選擇欲設定檢查限制的欄位後點選 SSMSESSMSE 主主選單上的選單上的 [[ 資料表設計工具資料表設計工具 ]][[ 檢查條件檢查條件約束約束 ]] 選項即可進行設定。 選項即可進行設定。

99

6-2 6-2 設定整合限制設定整合限制 -- 參考整合限制參考整合限制

參考整合限制是規範兩個關聯表中值組間參考整合限制是規範兩個關聯表中值組間的限制,透過的限制,透過外鍵外鍵 (Foreign Key)(Foreign Key) 的設定的設定以達到此目標。以達到此目標。設定外來鍵並不會因此而自動建立索引 設定外來鍵並不會因此而自動建立索引 被外來鍵所參考的鍵,必須具有唯一性被外來鍵所參考的鍵,必須具有唯一性資料庫中應保證不存在有無效的外來鍵資料庫中應保證不存在有無效的外來鍵

1010

6-2 6-2 設定整合限制設定整合限制 -- 參考整合限制參考整合限制

刪除外來鍵所參考的目標:刪除外來鍵所參考的目標: No Action(Restricted)No Action(Restricted) :在無外來鍵參考的情:在無外來鍵參考的情況之下方可刪除。況之下方可刪除。

CascadeCascade :同時刪除參考到該目標的相關資料。:同時刪除參考到該目標的相關資料。修訂外來鍵所參考的目標:修訂外來鍵所參考的目標: No Action(Restricted)No Action(Restricted) :在無外來鍵參考的情:在無外來鍵參考的情況之下方可修改。況之下方可修改。

CascadeCascade :同時修改參考到該目標的相關資料。:同時修改參考到該目標的相關資料。

1111

6-2 6-2 設定整合限設定整合限 -- 參考整合限制參考整合限制

1212

6-3 6-3 設定欄位的識別設定欄位的識別具識別屬性的欄位系統會自動編號,並保具識別屬性的欄位系統會自動編號,並保證在該資料表中的證在該資料表中的唯一性唯一性只有只有整數整數型態的欄位方能使用識別 型態的欄位方能使用識別 系統依設定的系統依設定的識別值種子識別值種子起始,並每次增起始,並每次增加加識別值增量識別值增量中所設定的值。中所設定的值。 例如:例如: [[識別值種子識別值種子 ]] 設為設為 [100][100] ,, [[識別值識別值增量增量 ]] 設定為設定為 [2] [2] ,則系統的編號將為,則系統的編號將為 100,1100,102,104,106…02,104,106…

如有刪除資料再新增資料,則被刪除的編號也如有刪除資料再新增資料,則被刪除的編號也不會再出現 不會再出現

1313

6-3 6-3 設定欄位的識別設定欄位的識別

選擇 [是 ]

設定種子與增量

1414

6-4 6-4 使用者自訂資料型態使用者自訂資料型態當系統資料型態之不足,或是為了容易辨當系統資料型態之不足,或是為了容易辨識時使用者可以自行設計所需的資料型態。識時使用者可以自行設計所需的資料型態。使用者自訂資料型態是系統資料型態所組成,例如 :char(10) 。設計好使用者自訂資料型態之後在資料宣告或是資料表設計時都可以使用,就像使用統資料型態一樣。

1515

6-5 6-5 設定計算欄位設定計算欄位計算欄位計算欄位 (Computed Column)(Computed Column) 就是欄位在就是欄位在定義之時是一個「定義之時是一個「計算式計算式」而非「資料型」而非「資料型態」。態」。計算欄位並不會儲存實際計算後的資料值,計算欄位並不會儲存實際計算後的資料值,而是在而是在每次顯示時才重新計算每次顯示時才重新計算以確保能顯以確保能顯示正確的值。示正確的值。

1616

6-5 6-5 設定計算欄位設定計算欄位在使用計算欄位時,有下列幾點的限制: 在使用計算欄位時,有下列幾點的限制: 被計算欄位所參考的欄位必須位於同一資料表 被計算欄位所參考的欄位必須位於同一資料表 一個計算欄位的建立不能包含子查詢 一個計算欄位的建立不能包含子查詢 計算欄位所參考的欄位不能是主鍵、外來鍵或計算欄位所參考的欄位不能是主鍵、外來鍵或是唯一索引鍵的一部份 是唯一索引鍵的一部份

如果將預設值與計算欄位結合,則預設值的設如果將預設值與計算欄位結合,則預設值的設定無效 定無效

計算欄位不能接受計算欄位不能接受 INSERTINSERT與與 UPDATEUPDATE 的敘述 的敘述

1717

6-5 6-5 設定計算欄位設定計算欄位

在此輸入計算公式

1818

6-6 6-6 使用資料庫圖表管理資料表使用資料庫圖表管理資料表資料庫圖表資料庫圖表 (D(Diagram)iagram) 最主最主要是要是描述資料描述資料庫中資料表間庫中資料表間的關係的關係。只要。只要原先有設定原先有設定 FKFK關聯關聯,則在新,則在新增資料庫圖表增資料庫圖表時關係圖就會時關係圖就會自動建立。自動建立。

1919

6-6 6-6 使用資料庫圖表管理資料表使用資料庫圖表管理資料表資料庫圖表資料庫圖表可以用來可以用來建建立、編輯或立、編輯或刪除資料表、刪除資料表、資料行、索資料行、索引鍵、關聯引鍵、關聯性以及條件性以及條件約束。約束。

按著滑鼠左鍵移動滑鼠指標到參考表格上,然後放開滑鼠左鍵即可建立 FK

2020

6-7 6-7 瀏覽資料表的各種設定瀏覽資料表的各種設定資料表在關聯式資料庫中佔有非常重要的地位,因此在SSMSE 中對於資料表的各種設定都分門別類的加以顯示,可針對某張資料表好好的進行研究

2121

6-8 6-8 本章總結本章總結關聯式資料庫中存在著一些基本的規定,稱之為關聯式資料庫中存在著一些基本的規定,稱之為整整合限制合限制 (Integrity Constraints)(Integrity Constraints) ,而整合限制又,而整合限制又可分為可分為參考整合參考整合 (Reference Integrity)(Reference Integrity) 與與個體整個體整合合 (Entity Integrity) (Entity Integrity) 個體整合限制是規範一個關聯表欄位的限制條件 個體整合限制是規範一個關聯表欄位的限制條件 (( 如資料欄位的主鍵限制、資料值的有效範圍如資料欄位的主鍵限制、資料值的有效範圍 (( 檢檢查查 )) 、唯一性、可否為、唯一性、可否為 NULLNULL 、預設值等、預設值等 ))而參考整而參考整合性限制是說當資料庫中有外來鍵的參考關係存在合性限制是說當資料庫中有外來鍵的參考關係存在時,資料庫或資料的更動就應保證資料庫中不存在時,資料庫或資料的更動就應保證資料庫中不存在無效的外來鍵 無效的外來鍵 資料庫圖表資料庫圖表 (Diagram)(Diagram) 最主要是描述資料庫中資料最主要是描述資料庫中資料表間的關係,除此之外也可以做資料表與關聯性的表間的關係,除此之外也可以做資料表與關聯性的管理。 管理。