999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

關系數據庫中外鍵的作用與設置

2021-11-25 20:43:26徐愛蕓
科學與生活 2021年16期

徐愛蕓

摘要:關系數據庫外鍵是用于與另一張表的關聯,保證了數據的完整性和一致性。設置不同的選項靈活運用,可以減少冗余,提高系統的性能。

關鍵詞:外部關鍵字;表關聯;數據完整性;數據一致性

1 前言

在關系數據庫中,維護數據的一致性和完整性可以通過手工方式更新使得多個表之間的數據保持一致;設計更復雜的程序設計邏輯并編寫應用程序可以維護數據庫的完整性和一致性;在服務器端通過設置表的觸發器,一旦執行更新和刪除表中的某些數據行,事件自動觸發以維護預定義的某些動作,維護數據庫的一致性;利用數據庫級別的外鍵處理方式來幫助維護數據庫完整性,是最簡單的方式。通過外鍵(FK)建立和加強兩個表數據之間的連接,在更新或者刪除數據行時可以保持數據庫的完整性,更加可靠。

2 外鍵存在的意義

如果有學生的信息(學號s#,姓名sname,系號d#、系名dname)需要存儲,可以有一下幾種方式:

2.1信息都存入到一個表中

如果所有信息都放在同一個表中,即S(s#,sname,d#、dname),同一個系部的信息存儲次數與該系學生人數相同。這種表結構存在嚴重的信息冗余(d#、dname列),如果學生人數比較多,這一問題表現的越嚴重,且還會帶來修改復雜,插入異常,刪除異常等,導致數據庫使用異常。

2.2建立兩個表的邏輯連接

把學生信息與系部信息分開存儲,即S(s#,sname,d#)和D(d#、dname),解決了數據冗余的問題,但兩張表并沒有建立關聯,在內容和邏輯關系上不能保持同步和一致,且存在插入異常和刪除異常問題,依然無法保證數據完整性。

2.3 建立兩個表邏輯上的物理連接

這種方案為S表添加了外鍵d#,指向D表的主鍵d#,該約束起到了保護數據完整性的作用:如果刪除D的系部信息d#已經在S表中使用,則該條數據無法刪除;無法向S表中添加系部d#不存在的系部信息。這樣就消除了數據冗余、插入異常、刪除異常等。

外鍵用于與另一張表的關聯,使兩張表形成了物理關聯,外鍵只能引用主表中主碼的值,控制存儲在外鍵表中的數據能保持與主表中的數據一致性,從而保證了數據的完整性。

3 外鍵選項設置

為了靈活有效的保證數據的一致性和完整性,在定義數據庫外鍵時有一個可選項,用來設置當主鍵表中的被參照屬性的數據發生變化時,外鍵表中相應屬性的事件觸發限制。

(1)cascade級聯更新或級聯刪除:當主鍵表被參照屬性的值執行更新或刪除操作時,外鍵表參照屬性的值相應會同步更新或刪除,該條數據在父表和子表中的記錄都被成功更新或者刪除。

(2)restrict受限更新或受限刪除:如果想要更新或刪除主鍵表中的記錄,而在外鍵表中有關聯該主鍵表的記錄,則不允許更新或刪除主鍵表中的記錄。即數據沒有被更新或刪除,父表和子表都沒有變動。

(3)set null置空:當主鍵表被參照屬性的值執行更新或刪除時,外鍵表中相應的參照屬性的值置為null,前提條件是在設計外鍵表的時候該屬性要允許為null,否則會出錯。即該條記錄在父表中被刪除,在子表中對應記錄的外鍵值被置為null。

(4)set defaule置為默認值:當主鍵表被參照屬性的值執行更新或刪除時,外鍵表中相應記錄的參照屬性的值置為默認值。

4 外鍵選項功能的實現

(1)CASCADE級聯規則實現

在S(s#,sname,d#)中對外鍵設置了on update on delete規則:

foreign key(d#) references ?D(d#) on update cascade ?on delete cascade

假如院系表D中的某個系修改了信息,那么在S表中屬于該系學生的信息一并被修改;假如刪除了D表中的某個系,則在S表中該系的學生信息一并被刪除了,自動修改或刪除子表數據。這樣的聯動效應使得系統的性能更好,這就是外鍵的作用,保持數據的一致性、完整性。

(2)NO ACTION或RESTRICT規則實現

在S(s#,sname,d#)中對外鍵設置了no action規則:

foreign key(d#) references ?D(d#) on update no action on delete no action

當在S表中設置外鍵取值為No Action或者Restrict時,則當在主鍵表D中修改或刪除一條系的記錄時,系統首先檢查該記錄在外鍵表S中是否有對應記錄,如果有學生在該系,則不允許修改或刪除(即外鍵表約束主鍵表)。

(3)SET NULL規則實現

在S(s#,sname,d#)中對外鍵設置了set null規則:

foreign key(d#) references ?D(d#) on update set null on delete set null

當取值為Set Null時,則當在主鍵表D中修改或刪除一條系的記錄時,首先檢查該記錄在S表中是否有對應外鍵,如果有則將S表中對應的記錄的系的值(外鍵值)設置為null。這里也是外鍵表約束主鍵表,不過這就要求該外鍵允許取null。

(4)SET DEFAULT規則實現

在S(s#,sname,d#)中對外鍵設置了set default

foreign key(d#) references ?D(d#) on update set default on delete set default

當取值為Set Default時,則當在主鍵表D中修改或刪除一條系的記錄時,首先檢查該記錄在S表中是否有對應外鍵,如果有則將S表中對應的記錄的系的值(外鍵值)設置為默認值。

結束語

外鍵是用來控制數據庫中數據的數據完整性的,阻止非法數據的存入,減少數據庫冗余性,避免了臟數據的產生,保證數據一致性有很大作用。外鍵是數據庫一級的一個完整性約束,是參照完整性的數據庫實現方式.

參考文獻

[1]劉亞軍,數據庫原理與應用[M]清華大學出版社:北京 2020.7

[1]萬常選,數據庫系統原理與設計(第3版)[M]清華大學出版社:2018.1

主站蜘蛛池模板: 亚洲天堂在线免费| 青草娱乐极品免费视频| 欧美国产成人在线| 国产91精品最新在线播放| 一级爆乳无码av| 狠狠做深爱婷婷久久一区| 乱码国产乱码精品精在线播放| 亚洲 日韩 激情 无码 中出| 国产视频你懂得| 99久久精品国产精品亚洲| 高清国产va日韩亚洲免费午夜电影| 波多野结衣中文字幕久久| 欧美黑人欧美精品刺激| 国产在线一区二区视频| 国产色图在线观看| 一区二区欧美日韩高清免费| 欧美成人午夜在线全部免费| 欧美亚洲欧美区| 亚洲人在线| 人妻精品全国免费视频| 国产成人精品视频一区二区电影| 91丝袜乱伦| 国产福利大秀91| 88av在线播放| 亚洲无码精彩视频在线观看| 免费在线观看av| 一本无码在线观看| 国产成人亚洲无吗淙合青草| 久久精品无码一区二区国产区| 手机精品福利在线观看| V一区无码内射国产| 久草视频中文| 亚洲无码在线午夜电影| 青青操国产| 毛片免费观看视频| 亚洲视频色图| 一区二区三区毛片无码| 小13箩利洗澡无码视频免费网站| 久青草国产高清在线视频| 国产黄色免费看| 欧美一区二区丝袜高跟鞋| 亚洲日本韩在线观看| 毛片网站免费在线观看| 国产亚洲现在一区二区中文| 热99精品视频| 热re99久久精品国99热| 国产精品亚欧美一区二区三区| 日韩高清一区 | 国产成人综合亚洲网址| 91久久国产热精品免费| 精品人妻无码中字系列| 亚洲中文精品久久久久久不卡| 秘书高跟黑色丝袜国产91在线| 国产在线自乱拍播放| 无码免费视频| 欧美成人亚洲综合精品欧美激情| 2020最新国产精品视频| 人妻无码一区二区视频| 国产91成人| 日韩天堂网| 天天躁夜夜躁狠狠躁躁88| 国产成人AV综合久久| 麻豆精品在线播放| 精品国产成人高清在线| 日韩毛片基地| m男亚洲一区中文字幕| 在线国产你懂的| 操操操综合网| 亚洲一本大道在线| 天天色综合4| 干中文字幕| 中文国产成人久久精品小说| 综合色在线| 国产swag在线观看| 成人精品亚洲| 欧美成人国产| 欧美激情综合一区二区| 久久国产亚洲偷自| 视频一本大道香蕉久在线播放 | 国产区精品高清在线观看| 91在线丝袜| 国产一区二区网站|