基于SQL Server 2012的数据库约束的设计与应用
2018-03-02张卉
张卉
摘要:sql server 2012能够方便的帮助用户实现数据的管理功能,保障了数据库中数据的有效性、正确性和相容性,提供给用户多种技术实现数据的完整性。比如约束、规则、外键和触发器。约束其实是通过对规则的完整性来实现数据的完整性目标,本文结合具体应用场景,主要对约束这一技术进行介绍。
关键词:SQL Server 2012;数据库;设计与应用
中图分类号:TP273 文献标识码:A 文章编号:1007-9416(2018)12-0128-01
Microsoft SQL Server 2012是微软发布的新一代数据平台产品,能够快速构建相应的解决方案实现私有云与公有云之间数据的扩展与应用的迁移。但是如果对数据库不进行约束就有可能导致数据的不规范,影响用户的正常使用。因此必须在建立数据库表的同时做好数据的完整性。约束就是一种普遍采用的数据库管理技术,能够实现数据的有效性、正确性和相容性。
1 实体完整性
要达到实体的完整性就必须在创建表的时候赋予主键字段值,并且值不能重复。可以通过对主键和唯一键进行约束实现。
1.1 主键约束
对主键约束在设置约束列时不能赋予重复值,可以在创建表的时候对列设置主键。比如用PRIMARY KEY约束如下:
ALTER TABLE dbo.Blogs
ADD CONSTRAINT pk_constraint_blogId PRIMARY KEY(BlogId)
在键文件夹中则生成对列BlogId的约束即升级为主键。
1.2 唯一键约束
和对主键进行约束功能一样,对唯一键进行约束就可以实现数据的唯一性。但是唯一键约束允许用户设置多个唯一键,同时可以在列中设置一个空值。
在创建表的时候用户会对主键列进行设置,但是在一张表中只能设置一个主键约束,所以如果需要对某一字段的赋值进行唯一性设置,就可以选择唯一键约束。比如在用户信息表中,用户ID作为主键,但是身份证号码、手机号码等也具有唯一性,此时就可以通过唯一键约束实现赋值要求。
2 域完整性
关系数据库的完整性主要通过域来进行约束,针对的是具有特殊属性的值,将符合要求的值用一个有限的集合表示。当不属于该集合的值进行输入时会提示,保证了数据库的完整性。检查约束(CHECK)、默认值约束(DEFAULT)是SQL server主要采用的技术。
检查约束可以对若干列的值进行符合限制的操作,将数值限定在规定的集合内。比如,在用户信息表(userInfo)中,移動电话(userMobile)必须满足13位数字且首位不能是0的要求。在不重新进行设置的情况下,数据库中的所有数据都受到检查约束的作用。在某些情况下,可能出现老数据和新数据分别符合不同的赋值规则,如果都采用同一规则进行约束就会出现矛盾。比如邮政编码的储存,由于世界各国的邮政编码位数没有统一,我国采用的是六位,日本采用的是七位数字,美国采用的是五位数字等。在对这样的数据进行约束的时候,可以进行with Nocheck设置,将老数据和新数据予以区别。
3 参照完整性
参照完整性的设置就是为了避免出现上述类似错误。通过关系表之间的相互参照,对存在的实体进行管理操作。通过外键(FOREIGN KEY)、级联参照等技术实现数据库中数据的一致性。
3.1 外键约束
外键(FOREIGN KEY)约束对表之间的数据一致性进行了强制要求。在关系数据库中,由主键列和外键列定义的父表和子表之间,子表的若干列值必须和父表的若干列保持一致。尽管外键约束不允许空值的出现,但是如果采用组合外键进行约束,可以对存在空值的列跳过检验。在SQL server中采用如下的格式:
Alter Table 表名
Add Constraint 关系名 FOREIGN KEY (外键列) REFERENCES 主键表(主键列)。
比如上文提到的将某一个用户数据删除后,外键约束可以确保将和该数据相关的其他表中的数据删除,避免因数据不一致产生错误。通过外键约束,将子表(orderinfo)和父表(userinfo)中都存在的userID保持一致。在父表中删除userID之后,再进行userID的赋值将提示“无法更新”。
3.2 级联参照完整性约束
为了将外键数据保持关联,SQL server采用了级联参照完整性约束。使得父表和子表中的外键记录保持一致,当对父表中的数据进行操作时,子表中的数据也相应的得到了操作。级联参照完整性包括更新和删除两种。比如以用户信息表和订单信息表为例,userInfo作为父表,orderInfo作为子表。在父表中对userID进行更新后,子表中的userID也相应进行了更新。SQL server中设置外键约束的格式如下:
Alter table orderInfo
Add constraint FK_会员信息_订单信息FOREIGN KEY (userId) REFERENCES userInfo(userId) ON UPDATE CASCADE。
做完上述设置之后,在父表中对userID进行修改,可以发现子表中的userID也相应的发生了变化。当将ON UPDATE CASCADE更换为ON DELETE后,就可以实现父表和子表中的同步删除操作。
综上所述,约束的使用保障了SQL server中数据的完整性,并且比使用规则、触发器、默认值等更加灵活便捷。用户可以根据具体案例对数据库进行约束设置,实现数据的准确和安全,从而满足特定的商业规则。
參考文献
[1]王哲.数据库中完整性约束的教学方法探究[J].中国科教创新 刊,2013(35):164-166.
[2]陈洁,薛恒威.SQL Server数据库中数据完整性的分析与实践[J].河北软件职业技术学院学报,2018(1):4-6.
[3]王红,陈功平.数据完整性机制的研究与实现[J].佛山科学技术学院学报,2015(1):81-87.
Design and Application of Database Constraints Based on SQL Server 2012
ZHANG Hui1,2
(1. Suzhou Higher Vocational and Technical School, Suzhou Jiangsu 215009;
2.Suzhou Branch of Jiangsu Union Vocational and Technical College,Suzhou Jiangsu 215009)
Abstract:SQL Server 2012 can easily help users to achieve data management functions, and ensure the validity, correctness and compatibility of data in the database, it provides users with a variety of technologies to achieve data integrity. For example, constraints, rules, foreign keys and triggers. Constraints are actually to achieve the goal of data integrity through the integrity of rules. This paper mainly introduces the technology of constraints combined with specific application scenarios.
Key words:SQL Server 2012; database; design and application