SQL Server 數據庫 可以基本保證數據的完整性。而本文所講的是如何利用SQL Server提供的Enterprise Manager 客戶端軟件設置數據約束條件以加強數據完整" name="description" />

利用Enterprise Manager和約束條件加強數據完整性

發表于:2007-05-05來源:作者:點擊數: 標簽:約束Enterprise條件利用manager
我們都知道Microsoft java script:;" onClick="javascript:tagshow(event, ' SQL ');" target="_self"> SQL Server 數據庫 可以基本保證數據的完整性。而本文所講的是如何利用SQL Server提供的Enterprise Manager 客戶端軟件設置數據約束條件以加強數據完整

我們都知道Microsoft javascript:;" onClick="javascript:tagshow(event, 'SQL');" target="_self">SQL Server數據庫可以基本保證數據的完整性。而本文所講的是如何利用SQL Server提供的Enterprise Manager 客戶端軟件設置數據約束條件以加強數據完整性。

確保數據庫中的數據完全正確(數據完整性)是一項很難的工作,有時候甚至是不可能做到的,正因如此它也是各種系統所追求的一個基本目標。此外,一旦數據出現不一致,應當如何處理也是一個問題。在開發數據庫應用程序時,我們都會在程序中加入一段代碼來檢驗數據是否正確,而SQL Server也可以利用約束條件將數據庫服務器變成檢驗數據完整性的第一道哨卡。此外為了方便用戶,SQL Server提供了Enterprise Manager客戶端來簡化約束條件處理過程。

什么才合法?
在開發數據庫應用程序時,開發者必須首先清楚每個表格中應該存放什么類型的數據或數據的大小范圍。這點一旦確定下來,整個程序都要按照這個規范強制執行。這個強制規范可以是約束條件、默認值以及允許空值。

下面給出了約束條件的類型以及默認值和空值類型:

  • PRIMARY KEY-通常情況下,每個表中都有一列或者一個組合列中的數據用以唯一確定每行的數據。這個列就被稱為該表的主鍵,它可以用來加強數據的完整性。當你建立或者修改一個表時,可以通過定義PRIMARY KEY約束條件來創建一個主鍵。每個表里只能有一個主鍵。

  • FOREIGN KEY-- FOREIGN KEY (FK) 是表中的一列或者一個組合列,它可以實現兩個表中數據的關聯。通過在一個表中建立一個列,其鍵值為另一個表的主鍵值,我們就稱這個列為外鍵(foreign key)。

  • UNIQUE-你可以通過 UNIQUE 約束條件來確保表中指定的列里沒有重復值,不過主鍵不包括在內。

  • CHECK-- CHECK約束條件通過限制列中的值來實現數據域的完整性。它和FOREIGN KEY約束條件類似,都是通過控制已經存在列中的值來實現數據完整性的。不同點是它們對合法數據的確定方法不同:FOREIGN KEY約束條件從另一個數據表中獲取合法值列表,而CHECK約束條件則是通過本地表達式來確定數據的合法性,跟其它數據表無關。

  • DEFAULT-Default約束條件在表中沒有給定數據的位置給定一個預先定義的值。

  • Nullability-這個約束條件用來表明某一列是否支持NULL值。

    如果在你的數據庫應用程序中良好的運用了上面的各種約束類型,就可以確保數據完整性。至于如何運用,則可以通過使用Transact-SQL或者Enterprise Manager 客戶端軟件來實現。 Enterprise Manager
    Enterprise Manager客戶端是一款圖形界面的應用程序,它可以幫助用戶查看現有數據庫或者建立一個新的數據庫。下面我會利用一個標準的pub數據庫(包含在各種版本的SQL Server中)來演示其具體應用。在查看數據表的時候右鍵點擊某一列,我們就可以進入約束條件定義窗口。在圖A中,我選擇了pub數據庫中discounts 表的discount列,點擊右鍵后,就出現了圖A所示的畫面。

    圖A

    在Enterprise Manager中操作約束條件

    下面是相關選項的說明:

  • Set Primary Key-將所選的列定為該表的主鍵。在圖A中,discounttype區域是主鍵,其鍵名左邊的黃色鑰匙就是主鍵標志。
  • Relationships-確定所選列是另一個數據表的外鍵。
  • Check Constraints-為數據表創建check 約束條件,并且可以編輯和刪除之前定義的約束條件。圖B顯示了在discount 列創建約束條件(圖中的約束條件是discount值必須大于0)的情況。
    圖B

    創建check 約束條件

    在圖B中我們能看到三個復選框。它們的意思分別是:是否強制現有數據符合新約束條件、復制數據時是否實施約束條件、插入及更新操作是否實施約束條件。最大的問題一般出現在第一個選項上,當用戶在現有數據表中加入新約束條件時,舊數據有可能會出現與約束條件不符的情況,此時選這一項就會破壞舊有數據。因此我們最好先將舊有數據規范化,再添加新的約束條件,這樣這三個復選框就都可以選中了。

    圖C顯示了所選表格的關系定義。從數字上看,stores表和我們選擇的discounts表通過外鍵相關聯。真實的外鍵在discounts表中,并且指向stores表的主鍵。這種關聯可以被編輯或者刪除,另外,我們也可以添加新的關聯。剩下的幾個選項和約束條件選項卡中出現的類似,可以指定是否在inserts、updates和replication操作時實施約束條件。以及是否進行級聯更新或者刪除。

    圖C

    關聯操作

    在圖A下方可看到,對于選定的列,默認值選項是可用的。另外,Allow Nulls列可以讓你確定該列是否可以使用空值。

    總結
    設計一個數據庫系統并不是簡單的工作。當表結構確定下來后,就一定要保證數據的整性。你可以通過約束條件來實現其數據完整性,為此SQL Server提供了圖形界面的Enterprise Manager客戶端來幫助用戶簡化約束條件實現過程。


  • 原文轉自:http://www.anti-gravitydesign.com

    ...

    熱門標簽

    国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97