1 / 25

資料庫系統概論 CH07 資料表的相關設計

資料庫系統概論 CH07 資料表的相關設計. 鄧姚文. 大綱. 欄位 資料表設計 索引設計. 欄位 設計. http :// msdn.microsoft.com/en-us/library/ms187752%28v=sql.105%29.aspx. 可用的欄位型態 -如表 7-1 文字、數字、日期及時間、空間、二進位及其它 欄位型態不止限制可儲存的資料範圍,也定義了佔用的儲存空間 為欄位定義適用的欄位型態. 欄位 的重要屬性. 識別欄位 IDENTITY 自動編號,每一資料表只可擁有一個識別欄位 其值由 SQL Server 自動輸入

ike
Télécharger la présentation

資料庫系統概論 CH07 資料表的相關設計

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 資料庫系統概論CH07 資料表的相關設計 鄧姚文

  2. 大綱 欄位 資料表設計 索引設計

  3. 欄位設計 http://msdn.microsoft.com/en-us/library/ms187752%28v=sql.105%29.aspx • 可用的欄位型態-如表7-1 • 文字、數字、日期及時間、空間、二進位及其它 • 欄位型態不止限制可儲存的資料範圍,也定義了佔用的儲存空間 • 為欄位定義適用的欄位型態

  4. 欄位的重要屬性 • 識別欄位 IDENTITY • 自動編號,每一資料表只可擁有一個識別欄位 • 其值由SQL Server自動輸入 • 通常只做為程式設計的參考之用 • 計算資料行 • 內容是由公式計算而來 • 關於Null值 • 儘量避免使用Null

  5. 條件約束 • 條件約束(Constraint)之功能是為資料表的記錄予以限制,只有符合約束的記錄才可以儲存 • 條件約束的種類 • 主索引條件約束 • 外部索引鍵條件約束 • 唯一條件約束 • 預設條件約束-會顯示在Management Studio的「條件約束」 • 檢查條件約束

  6. 建立條件約束 • 在Management Studio操作介面可以建立的條件約束種類是檢查條件約束

  7. 停止及啟用條件約束 ALTER TABLE Orders NOCHECK CONSTRAINT CK_Orders; INSERT INTO Orders (OrderCode, CustCode, ShipDate, OrderDate) VALUES ('O-001','C-001',getdate()-1, getdate()); ALTER TABLE Orders CHECK CONSTRAINT CK_Orders; • 可被停用的條件約束種類 • 只有檢查及外部索引鍵條件約束,可以被停用

  8. 預設值 CREATE DEFAULT NextMonthDate1 AS DateAdd(m,1,getdate()-day(getdate())+1); GO CREATE DEFAULT DFPWD AS 'password' GO CREATE DEFAULT Zero AS 0; 儲存新記錄時若欄位內沒有資料,就以預設值定義 建立預設值-只能使用T-SQL

  9. 預設值 繫結預設值

  10. 規則 CREATE RULE rule_BusinessID AS @value Like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' GO CREATE RULE rule_PersonalID AS @value Like '[A-Z][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' GO CREATE RULE rule_Last30Days AS @value > getdate()-30 • 建立規則-只能使用T-SQL

  11. 規則 exec sp_bindrule 'rule_BusinessID', 'CustomerSupplier.BusinessID' exec sp_bindrule 'rule_PersonalID', 'Employee.PID' exec sp_unbindrule 'CustomerSupplier.BusinessID' exec sp_unbindrule 'Employee.PID' 繫結規則-只可使用T-SQL 解除繫結規則-只可使用T-SQL

  12. 使用者定義資料類型 • 建立使用者定義類型 • 必要設定是新類型名稱及原始類型

  13. 7-2資料表設計使用者定義類型 • 引用使用者定義類型 • 指定至欄位類型

  14. SQL Server的索引架構 • 索引的組成 • 組成單位是欄位 • 一個索引可以含有一或多個欄位 • 對SQL Server而言,索引就像一個迷你資料表 • 所有更新、刪除等動作,都會引發SQL Server在背景維護索引的一連串處理

  15. 索引運作方式 • SQL Server內部處理索引的架構是B-tree • 頁(Page)是SQL Server內部儲存資料的基礎單位 • 一頁的大小是8092 bytes • 索引的B-tree架構,最多只有三層 • 索引資料必定在最下層 • 上層記錄的是指向其下層所資料的指標

  16. 索引 B-tree ROOT 樹根 LEAF 樹葉

  17. 叢集及非叢集索引 • 每一資料表只能有一個叢集索引 • 主索引預設就是叢集索引 • 資料表所含記錄的順序 • 索引頁架構中,分葉層所含內容就是實際資料 • 可以有至多1000個非叢集索引 • 排序不套用至資料表 • 其內資料與其在資料表的實際位置可能不同 • 分葉層只含有指向實際資料位置的指標

  18. 索引的種類 • XML索引 • 使用於XML欄位型態的索引 • 全文檢索索引 • 可以建立在char、varchar、xml、varbinary等型態的欄位 • 可指定語言別、贅字、同義字 • 空間索引 • 使用於geometry及geography等兩種類型的欄位

  19. 建立索引的原則 • 使用叢集索引 • 欄位內包含大量不同資料。 • 常使用BETWEEN、>、>=、<與<= 等運算子傳回一個數值範圍的欄位。 • 經常做為排序依據的欄位。 • 經常使用JOIN或GROUP BY子句所存取的欄位。 • 需要迅速查閱單一欄位的OLTP應用,通常就是透過主索引鍵。依據主索引鍵建立一個叢集索引。 • 使用整數資料索引鍵做為叢集索引。此外,對於唯一、非NULL或識別欄位(資料行)建立叢集索引

  20. 建立索引的原則 • 使用非叢集索引 • 不會傳回大量結果集的查詢 • 會傳回各欄資料完全相符的查詢中,所設定的搜尋條件常會用到的欄位 • 經常需要執行聯結與群組的查詢,為聯結和群組設定中用到的欄位,建立多個非叢集索引

  21. 建立及管理索引 • 建立索引 • 指定一或多個欄位及屬性

  22. 重整索引 • 索引需要定期手動重整 • 系統運行一段時間之後,索引可能會產生許多影響效率的片段 • 產生片段的原因是索引頁的分割及維護 • 分割多次後,有可能產生許多資料不滿一頁的索引頁 • 在索引的屬性中查看片段資訊及執行重整

  23. 停用及啟用索引 • 停用的時機通常是管理人員需要進行維護 • 若停用叢集索引,會造成該索引所在的資料表禁止存取 • 若停用非叢集索引,則除了索引被停用外,會造成索引內資料被刪除,但會保留索引定義 • 索引被停用之後,只有重新建立,才可啟用

More Related