翁敏峰 万城睿
摘要:该文对SQL Server数据库中关联数据表的设计提供了一套有效的设计方法。通过该方法,可以实现数据库关联数据表的一致性与完整性。
关键词:SQL Serve数据库;关联数据表;一致性
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2019)28-0017-02
1 概述
在数据库的设计中,更多的是数据表的设计。但表和表之间不是孤立的,而是关联的。当一张表的某个记录发生变化时,与之关联的表也应该发生相应的变化,这样才能实现数据表的一致性和完整性。
2 SQL Server 数据库中关联数据表的设计方法
本设计方法要实现这样的效果,当数据库关联数据表的某张表有记录要增加时,应该采取正确的增加方法,让关联表中相同的记录值一致;而当某张表的记录要删除时,也要使用正确的方法让其他关联表的记录也一起删除,或者其他表中記录能自动删除。
2.1 创建数据库
使用SQL Server语句,先创建一个数据库library。
2.2 创建相关联的表
2.3 分别向三张表添加记录
在向三张表添加记录时,应该注意添加记录的次序,由于表1读者信息表Readers中RTypeId与读者类型表是外健关联,该外健约束创建在Readers表中,因此表2读者类型表ReaderType表是父表,表1Readers是子表。两张表之间应该保持这样的关系:父表有的记录,子表可以没有;但子表有的记录,父表必须有。鉴于这样的关系,在输入记录时,应该先输父表ReaderType表的值,再输子表表1Readers的值。如果次序错位,系统无法接收值,会报错。于是,应该输入如下值。
2.4 删除表中记录
中这一条记录,这时要注意的是表2是父表,表1是子表。由于两张表之间应该保持这样的关系:父表有的记录,子表可以没有;但子表有的记录,父表必须有。如果先删父表中的记录,系统就会报错。因此,在删除记录时,应该先删子表的记录,再删除父表记录。故应该先表删表1的记录。但这里还有另外一个问题,由于表1又是表3的父表,如果先删除表1的记录,系统又会报错。所以在这三张表中,最终还是先删表3的记录。那根据对应关系,表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-更新规则及删除规则设置为级联。同样,在Reader表中,对外健FK_Readers_ReaderType也要作相应的设置。
3 结论
本文设计了三张关联表,并给出三张表中输入记录和删除记录的相应关系,揭示了数据库中表设计的基本方法。
参考文献:
[1] 吴伶琳,杨正校.SQL Server数据库技术及应用[M].大连:大连理工大学出版社,2010.
[2] 萨师煊,王姗. 数据库系统概论第五版[M].北京:高等教育出版社,2013.
[3] 雷景生,叶文珺,楼越焕.数据库原理及应用[M].北京:清华大学出版社,2015.
【通联编辑:梁书】