步驟11:檢查、設(shè)置完整性約束
完整性約束是為了防止數(shù)據(jù)模型不一致而強(qiáng)加的限制,標(biāo)識完完整性約束之后,就可以得到一個完整而準(zhǔn)確的描述視圖的局部邏輯數(shù)據(jù)模型。在此主要考慮下面五種類型的完整性約束:
(1)必需的數(shù)據(jù)某些屬性必須包含某些值,即不允許為空。例如:每個機(jī)構(gòu)都必須有機(jī)構(gòu)名稱。
(2)值域約束每個屬性都有一個值域。已經(jīng)在步驟4設(shè)置了屬性的值域。
(3)實(shí)體完整性實(shí)體完整性是指實(shí)體的主鍵不能為空。
(4)參照完整性參照完整性是指子實(shí)體的外鍵值必須與父實(shí)體的主鍵值相同或?yàn)榭铡?/p>
要實(shí)現(xiàn)參照完整性,需要定義一些約束,定義主鍵和外鍵在什么條件下可以插入、更新或刪除,以及這些操作的結(jié)果。
一般有以下三種關(guān)于參照完整性的約束(Oracle支持這三種約束):Restrict、Cascade、None(Oracle用NULL)。
(5)業(yè)務(wù)規(guī)則 最后,還要考慮業(yè)務(wù)規(guī)則的約束。數(shù)據(jù)庫要被現(xiàn)實(shí)世界的業(yè)務(wù)要求約束。例如:對機(jī)構(gòu)的領(lǐng)導(dǎo)干部編制有限制,一級分行機(jī)構(gòu)最多只能有100個干部編制。
通常業(yè)務(wù)規(guī)則有兩種實(shí)現(xiàn)方法:一是通過屬性的檢查約束( Check)實(shí)現(xiàn),如上面的例子就可以通過檢查約束實(shí)現(xiàn);二是通過觸發(fā)器來實(shí)現(xiàn),這一步需要在物理設(shè)計時完成。
這五種約束已經(jīng)在步驟3到步驟5中設(shè)置,此處加以檢查與修改。