资源描述
第 5章 数据完整性 5 1 数据完整性的基本概念 数据完整性包括实体完整性、域完整性、参照完整性和 用户定义的完整性。 1 实体完整性( Entity Integrity) 实体完整性用于保证数据库中数据表的每一个特定实体 都是唯一的。 它可以通过主键约束( PRIMARY KEY)、唯 一键约束( UNIQUE)、索引或标识属性( IDENTITY)来 实现。 2域完整性 (Domain Integrity) 域完整性就是保证数据库中的数据取值的合理性 ,即保 证指定列的数据具有正确的数据类型、格式和有效的数据范 围。通过为表的列定义数据类型以及检查约束( CHECK)、 默认定义( DEFAULT)、非空( NOT NULL)和规则实现 限制数据范围,保证只有在有效范围内的值才能存储到列中。 3参照完整性 (Referential Integrity) 参照完整性定义了一个关系数据库中,不同的表中列之 间的关系 (父键与外键)。要求一个表中(参照表)的一列 或列组合的值必须与另一个表(被参照表)中的相关一列或 列组合的值相匹配。被引用的列或列组合称为父键,父键必 须是 主键或唯一键 ,通常父键为主键,主键表(被参照表) 是主表。引用父键的一列或列组合称为外键,外键表(参照 表)是子表。子表的外键必须与主表的主键相匹配,只要依 赖某一主键的外键存在,主表中包含该主键的行就不能被删 除。 4用户定义的完整性 (User-defined Integrity) 这是由用户定义的完整性。用户可以根据自己的业务规 则定义不属于任何完整性分类的完整性。 5 2 约束 约束是通过限制列中数据、行中数据以及表之间数据取 值从而保证数据完整性的非常有效和简便的方法。 5 2 1 主键( PRIMARY KEY)约束 PRIMARY KEY约束在表中定义一个主键,唯一的标 识表中的行。一个表只能有一个 PRIMARY KEY约束。 当向表中的现有列添加 PRIMARY KEY约束时, SQL Server将检查列中现有的数据以确保现有数据遵从主键的 规则,即 无空值、无重复值 。 每个表都应有一个主键。主键可以是一列或列组合。 1 利用 Management Studio定义 ( 删除 ) 主键 2利用 T-SQL语句定义(删除)主键 ( 1)在创建表时创建主键约束 其语法格式如下 CREATE TABLE 数据表名 (列名 数据类型 CONSTRAINT 约束名 PRIMARY KEY) 例:用命令方式新建如下所示的 bm表,设置主键名为 pk_bh。 字段名 数据类型 允许空 部门编号 char(5) 否,主键 部门名称 varchar(10) 否 电话号码 char(13) 是 CREATE TABLE bm (5-1) ( 部门编号 CHAR(5) NOT NULL CONSTRAINT pk_bh PRIMARY KEY, 部门名称 VARCHAR(10) NOT NULL, 电话号码 CHAR(13) ) ( 2)向已有表中添加主键约束 其语法格式如下。 ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY(列名 1,n) ALTER TABLE cj (5-2) ADD CONSTRAINT pk_xhkch PRIMARY KEY(学号 ,课程号 ) 例:先用图形方式删除 cj表中的主键,然后用命令方式添 加主键为学号和课程号,主键名为 pk_xhkch。 ( 3)删除主键约束 其语法格式如下: ALTER TABLE 表名 DROP CONSTRAINT 约束名 例:要删除 cj表中的主键约束 pk_xhkch: ALTER TABLE cj (5-3) DROP CONSTRAINT pk_xhkch 5 2 2 唯一键( UNIQUE)约束 可使用 UNIQUE约束确保在非主键列中不输入重复值 。 在允许空值的列上保证唯一性时,应使用 UNIQUE约束而不 是 PRIMARY KEY约束,不过在该列中只允许有一个 NULL 值。一个表可以定义多个 UNIQUE约束,但只能定义一个 PRIMARY KEY约束。 1 利用 Management Studio定义 ( 删除 ) 唯一性约束 步骤 1:右键要建立唯一约束的表选择“修改” 。 步骤 2:右击要设置唯一约束的字段(列)选择“索引 /键”。 步骤 3:在弹出的窗口中点击“添加”,在右边窗口的“名称” 处输入约束名,在类型中选择“唯一键”,点击“列”的浏览按钮 选中要设置为唯一约束的字段 (如出生日期 )。 步骤 4:点击“关闭”按钮,保存即可。 删除方法与建立的步骤类似。 2利用 T-SQL语句定义(删除)唯一性约束 ( 1)在创建表时创建唯一性约束 其语法格式如下。 语法格式 1: (只有一个字段作为唯一约束 ) CREATE TABLE 数据表名 (列名 数据类型 CONSTRAINT 约束名 UNIQUE ) 【 例 5.3】 创建和 kc表结构相同的 kc_new表,设置课程 名为唯一约束,约束名为 ix_kcm1。 CREATE TABLE kc_new (5-4) (课程号 CHAR(4) NOT NULL CONSTRAINT pk_kch1 PRIMARY KEY, 课程名 CHAR(16) NOT NULL CONSTRAINT ix_kcm1 UNIQUE, 学分 SMALLINT, 学时数 SMALLINT) ( : 【 例 】 。 语法格式 2:(有多个字段结合作为唯一约束,主键也类似 ) CREATE TABLE 数据表名 ( CONSTRAINT 约束名 UNIQUE (列名 1,n) ) 例 :创建和 cj表结构相同的 cj_new表,设置学号和课程 号为唯一约束,约束名为 IX_xhkch。 create table cj_new (5-5) ( 学号 char(10) not null , 课程号 char(4) not null, 成绩 numeric(5,2) CONSTRAINT IX_xhkch UNIQUE (学号 ,课程号 ) ) ( 2)向已有表中添加唯一约束,其语法格式如下。 ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (列名 1,n) 【 例 5.4】 给 kc表中课程名字段添加唯一约束,名称为 ix_kcm 。 USE xsgl (5-6) GO ALTER TABLE kc ADD CONSTRAINT ix_kcm UNIQUE(课程名 ) GO ( 3)删除唯一约束,其语法格式如下。 ALTER TABLE 表名 DROP CONSTRAINT 约束名 【 例 5.5】 删除 kc_new中的唯一约束 ix_kcm1 。 USE xsgl (5-7) GO ALTER TABLE kc_new DROP CONSTRAINT ix_kcm1 GO 5 2 3 检查( CHECK)约束 CHECK约束是限制用户输入某一列的数据取值,即该 列只能输入一定范围的数据。 CHECK约束可以作为表定义的一部分在创建表时创建, 也可以添加到现有表中。表和列可以包含多个 CHECK约束。 允许修改或删除现有的 CHECK约束。 在现有表中添加 CHECK约束时,该约束可以仅作用于 新数据,也可以同时作用于已有的数据。默认设置为 CHECK约束同时作用于已有数据和新数据。当希望现有数 据维持不变,则使用约束仅作用于新数据选项。 1利用 Management Studio定义(删除)检查约束 步骤 1:右键要建立 check约束的表选择“修改”。 步骤 2:在弹出的窗口中继续击右键选择“ CHECK约束” 步骤 3:点击“添加”,在“名称”处设置约束的名称, 在“表达式”中输入约束表达式(用字段名和条件运算符书 写)。 如成绩为 0-100分: 成绩 =0 and 成绩 =0 and 语文 =0 and 语文 =0 and score类型”,右击 “用户自定义数据类型” 选择“新建用户自定义数据类型”。 6.5 自定义数据类型 步骤 2:在“名称”中输入用户自定义数据类型的名称,在 “数据类型”中选择自定义类型的基础类型,在“精度 /长度” 中输入对应的精度 /长度,在小数位数中输入对应的小数位数, 在“默认值”中选择自定义类型的默认值,在“规则”中选择自 定义类型要满足的规则。 步骤 3:最后点击“确定”即可。 例:新建一个名为“成绩规则”的规则,要求值为 0- 100分;新建一个名为“成绩默认值”的默认值,默认值为 50;新建一个名为“成绩类型”的用户自定义数据类型,基 础类型为 numeric,精度为 5,小数位数为 2,满足“成绩规 则”和“成绩默认值”。 说明 :自定义数据类型的使用与建表时的使用一致。
展开阅读全文