数据库本身无法直接存储数据,存储数据是通过数据库中的表来实现的。 2.1 表相关的几个基本概念 在创建和管理数据库表之前,需要理解以下几个概念。 2.1.1 数据完整性 数据完整性是要求数据库中的数据具有准确性,准确性是通过数据库表的设计和约束来实现的
数据库本身无法直接存储数据,存储数据是通过数据库中的表来实现的。
2.1 表相关的几个基本概念
在创建和管理数据库表之前,需要理解以下几个概念。
2.1.1 数据完整性
数据完整性是要求数据库中的数据具有准确性,准确性是通过数据库表的设计和约束来实现的。例如:在存储学生信息的表中,如果允许任意输入学员信息的话,则在同一张表中可能重复出现一个学员的信息;还有如果不对表中存储的年龄信息加以限制,则学员出现的年龄可能出现负数,这样的数据都不具备完整性。
为了实现完整性,数据库需要做以下两方面的工作。
检验每行数据是否符合要求。
检验每列数据是否符合要求。
为实现以上要求,SQL Server提供了以下4种类型的约束(Constraint)。
1. 实体完整性约束
实体完整性要求表中的每一行数据都反映不同的实体,不能存在相同的数据行。
通过索引、唯一约束、逐渐约束或标识列属性,可以实现表的实体完整性。
2. 域完整性约束
域完整性是指给定列的输入有效性。
通过限制数据类型、检查约束、输入格式、外键约束、默认值、非空约束等多种方法,可以实现表的域完整性。
3. 引用完整性约束
在输入或删除数据行时,引用完整性约束用来保持表之间已定义的关系。
例如:在管理学员信息的时候,一个表用来存储学员的信息,一个表用来存储考试成绩的详细情况,并且考试成绩表中的一列数值就是学员信息表中的编号,用来表示是哪个学员的考试。
可以看出两张表建立了“关系”,学员信息表是“主表”,学员成绩表是“子表”(有时也叫做“相关表”)。
在强制引用完整性时,SQL Server 禁止用户进行下列操作。
当主表中没有关联的记录时,将记录添加到相关表中。也就是说学员成绩表中不能够出现在学员信息表中不存在的学号。
更改主表中的值并导致相关表中的记录孤立。如果学员信息表中的学号改变了,学员成绩表中的学号也应当随之改变。
从主表中删除记录,但仍存在与该记录匹配的相关记录。如果把学员信息表中的学员删除了,则该学员的学号不能出现在学员成绩表中。
引用完整性通过逐渐和外键之间的引号关系来实现。
4. 自定义完整性约束