利用Oracle約束制定關鍵資料規則

2021-04-13 05:25:04 字數 659 閱讀 2312

在mis應用中,經常可以遇到很多核心的規則,比如說:身份證必須18位,原來為15位,出生日期必須小於系統日期;年齡必須大於0等等.這些規則必須明確定義,否則資料一旦能儲存到資料庫,那麼這種資料極有可能是錯誤資料,為以後系統大量實施後的分析帶來很大的困難.

最明顯的例子是日期類的字段,我們通常都需要對日期類欄位進行查詢分析,並且日期型字段一般範圍比較廣從

1900-01-01

到9999-01-01

都是合法的日期範圍,如果我們的程式在應用中沒有做嚴格的判斷,根據業務進行的嚴格判斷!那麼使用者極有可能錄入類似

6000-01-01

的資料,根據業務邏輯,這種資料可能是根本違法的資料;在這種時候我們需要在資料庫儲存前做最後的最重要的資料的驗證,限制其規則.

大家都在討論將應用於資料庫無關,比如j2ee架構就想消除系統平台和資料庫平台的區別;我對這個看法稍有微詞;如果只把資料庫做資料儲存,是否有些浪費了資料庫的強大功能,不用資料庫的主外來鍵約束,能否真正解決資料一致性問題完全不考慮資料庫,能否處理異端苛刻情況下的效能問題.我不知道.

但我想,既然資料庫提供了這麼強大的功能,我們在適合使用的時候就應用使用;業務->模型->資料,應用總之要把資料儲存到資料庫中;資料才是最重要的財富.

那麼在資料進入資料庫之前,我們為什麼不利用資料庫的功能做最後的,最關鍵的內容約束和驗證呢?

Oracle 資料表約束

2.2 唯一性約束 2.3 主鍵約束 2.4 外來鍵約束 3.禁用和啟用約束 資料庫不僅僅是用來儲存資料,它還必須保證所儲存資料的正確性。如果資料不準確或不一致,那麼該資料表的完整性就可能受到了破壞,從而給資料庫本身的可靠性帶來問題。為了維護資料庫中資料的完整性,在建立表時常常需要定義一些約束。約束...

oracle外來鍵約束資料刪除

今天同事讓我刪除乙個表的資料,痛快的答應說好 看起來挺簡單的乙個任務,做起來可棘手,原來這個表是外來鍵約束的,作為乙個主表存在!可是,我剛剛接觸這個系統,可是難死我了 之後查了一下資料確認可以通過約束名來查詢到相應的表禁用約束,這才解決了 下面是我做的實驗過程 首先建兩張表 create table...

oracle 資料庫的約束

為了使我們的資料符合一定的規則 約束有五種型別,主鍵約束,外來鍵約束,非空約束,唯一性約束,檢查約束 約束有兩種定義方法 第一種是在定義列的時候定義約束,叫做列級定義。第二種是所有列全部定義完後,在定義約束,該約束叫做表級定義 注意 not null只能在列級中定義 對於多個屬性構成的碼只能使用表級...