翁敏峰 萬城睿
摘要:該文對SQL Server數(shù)據(jù)庫中關聯(lián)數(shù)據(jù)表的設計提供了一套有效的設計方法。通過該方法,可以實現(xiàn)數(shù)據(jù)庫關聯(lián)數(shù)據(jù)表的一致性與完整性。
關鍵詞:SQL Serve數(shù)據(jù)庫;關聯(lián)數(shù)據(jù)表;一致性
中圖分類號:TP311? ? 文獻標識碼:A
文章編號:1009-3044(2019)28-0017-02
1 概述
在數(shù)據(jù)庫的設計中,更多的是數(shù)據(jù)表的設計。但表和表之間不是孤立的,而是關聯(lián)的。當一張表的某個記錄發(fā)生變化時,與之關聯(lián)的表也應該發(fā)生相應的變化,這樣才能實現(xiàn)數(shù)據(jù)表的一致性和完整性。
2 SQL Server 數(shù)據(jù)庫中關聯(lián)數(shù)據(jù)表的設計方法
本設計方法要實現(xiàn)這樣的效果,當數(shù)據(jù)庫關聯(lián)數(shù)據(jù)表的某張表有記錄要增加時,應該采取正確的增加方法,讓關聯(lián)表中相同的記錄值一致;而當某張表的記錄要刪除時,也要使用正確的方法讓其他關聯(lián)表的記錄也一起刪除,或者其他表中記錄能自動刪除。
2.1 創(chuàng)建數(shù)據(jù)庫
使用SQL Server語句,先創(chuàng)建一個數(shù)據(jù)庫library。
2.2 創(chuàng)建相關聯(lián)的表
2.3 分別向三張表添加記錄
在向三張表添加記錄時,應該注意添加記錄的次序,由于表1讀者信息表Readers中RTypeId與讀者類型表是外健關聯(lián),該外健約束創(chuàng)建在Readers表中,因此表2讀者類型表ReaderType表是父表,表1Readers是子表。兩張表之間應該保持這樣的關系:父表有的記錄,子表可以沒有;但子表有的記錄,父表必須有。鑒于這樣的關系,在輸入記錄時,應該先輸父表ReaderType表的值,再輸子表表1Readers的值。如果次序錯位,系統(tǒng)無法接收值,會報錯。于是,應該輸入如下值。
2.4 刪除表中記錄
中這一條記錄,這時要注意的是表2是父表,表1是子表。由于兩張表之間應該保持這樣的關系:父表有的記錄,子表可以沒有;但子表有的記錄,父表必須有。如果先刪父表中的記錄,系統(tǒng)就會報錯。因此,在刪除記錄時,應該先刪子表的記錄,再刪除父表記錄。故應該先表刪表1的記錄。但這里還有另外一個問題,由于表1又是表3的父表,如果先刪除表1的記錄,系統(tǒng)又會報錯。所以在這三張表中,最終還是先刪表3的記錄。那根據(jù)對應關系,表2 ReaderType中RTypeId為1的值,表1中應該刪除第一條記錄RID為2的記錄。再刪表3Borrow中第一條記錄也是RID為2的記錄。故刪除次序為:
2.5 對SQL Server軟件設置,使刪除父表記錄時,子表相應記錄能同時刪掉
由于三張表之間存在這樣的關系:表2是表1的子表,表3又是表1的子表。還可以在刪除表2中一條記錄時候,另外兩張表中相應的記錄會一起刪除。這就需要在SQL Server軟件中找到Borrow表中的外健FK_Borrow_Readers,對其設置。在外健關系-INSERT和UPDATE-更新規(guī)則及刪除規(guī)則設置為級聯(lián)。同樣,在Reader表中,對外健FK_Readers_ReaderType也要作相應的設置。
3 結(jié)論
本文設計了三張關聯(lián)表,并給出三張表中輸入記錄和刪除記錄的相應關系,揭示了數(shù)據(jù)庫中表設計的基本方法。
參考文獻:
[1] 吳伶琳,楊正校.SQL Server數(shù)據(jù)庫技術及應用[M].大連:大連理工大學出版社,2010.
[2] 薩師煊,王姍. 數(shù)據(jù)庫系統(tǒng)概論第五版[M].北京:高等教育出版社,2013.
[3] 雷景生,葉文珺,樓越煥.數(shù)據(jù)庫原理及應用[M].北京:清華大學出版社,2015.
【通聯(lián)編輯:梁書】