数据完整性
-
实体完整性
约束方法:唯一约束、主键约束、标识列
主键约束设置方式:数据表右击>设计>选择列>右击选择“主键”
- 主键列数值不能为空(尽量选择数值更新少的列作为主键);
- 一个表的主键可以是多个列(单尽量使用单个列为主键);
- 标识列属于自动生成增量,一般用于ID数据。
- 数据行删除后,标识列继续增长,不会重新计数。
-
域完整性
约束方法:检查约束、默认值、非空约束
检查约束:CHECK约束
一、定义
- CHECK 约束用于限制列中的值的范围。
- Check约束通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围,在列中更新数据时,所要输入的内容必须满足Check约束的条件,否则将无法正确输入。
- 如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
- 如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
二、将新的 CHECK 约束附加到表或列
1、附加新的 CHECK 约束
(1)、在数据库关系图中,右击包含约束的表,然后从快捷菜单中选择"约束"命令。
-或-
为将包含约束的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择"约束"命令。
(2)、选择"新建"命令。"选定的约束"框显示由系统分配的新约束名。系统分配的名称以"CK_"开始,后跟表名。
在"约束表达式"框中,为 CHECK 约束键入 SQL 表达式。例如,若要将 authors 表中 state 列的输入项限制为 New York,请键入:
state = 'NY'
或者,若要要求 zip 列中的输入项为 5 位数字,请键入:
zip LIKE '[0-9][0-9][0-9][0-9][0-9]' 中间不能有空格
若要给约束提供一个不同的名称,请在"约束名"框中键入名称。
用复选框控制何时强制约束:
若要在创建约束前对现有数据测试约束,请选中"创建中检查现存数据"复选框。
若要在该表中发生复制操作时强制约束,请选中"对复制强制约束"复选框。
若要在该表中插入或更新行时强制约束,请选中"对 INSERT 和 UPDATE 强制约束"复选框。
2、定义 CHECK 约束表达式
当将 CHECK 约束附加到表或列时,必须包括 SQL 表达式。
可以创建简单的约束表达式在简单条件下检查数据;或使用布尔运算符创建复杂的约束表达式以在多种条件下检查数据。例如,假设 authors 表中有一个 zip 列,该列要求 5 位数字的字符串。下面的示例约束表达式确保只允许 5 位数字:
zip LIKE '[0-9][0-9][0-9][0-9][0-9]'
或者假设 sales 表中有一个名为 qty 的列,该列要求大于 0 的值。下面的示例约束确保只允许正值:
qty > 0
或者假设 orders 表限制所有信用卡订单可接受的信用卡类型。下面的示例约束确保如果用信用卡发出订单,则只接受 Visa、MasterCard 或 American Express:
NOT (payment_method = 'credit card') OR
(card_type IN ('VISA', 'MASTERCARD', 'AMERICAN EXPRESS'))
3、定义约束表达式
创建新的 CHECK 约束。
在属性页的"CHECK 约束"选项卡中,使用下列语法在"约束表达式"框中键入表达式:
{constant | column_name | function | (subquery)}
[{operator | AND | OR | NOT}
{constant | column_name | function | (subquery)}...]
三、修改 CHECK 约束
当要更改约束表达式,或更改对特定条件启用或禁用约束的选项时,修改 CHECK 约束。
I、在数据库关系图中右击包含约束的表,然后从快捷菜单中选择"属性"命令。
-或-
为包含约束的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择"属性"命令。
II、选择"CHECK 约束"选项卡。
III、从"选定的约束"列表中,选择要更改的约束。
IV、填写修改规则。
当保存表或关系图时,约束即在数据库内被更新。
四、删除 CHECK 约束
当要删除对约束表达式包含的列所接受数据值的限制时,删除 CHECK 约束。
I、在数据库关系图中右击包含约束的表,然后从快捷菜单中选择"属性"命令。
-或-
为包含约束的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择"属性"命令。
II、选择"CHECK 约束"选项卡。
III、从"选定的约束"列表中选择约束。
IV、选择"删除"按钮。
注意 选择"删除"按钮将导致一个无法撤消的操作,而且不保存对数据库关系图所做的所有其它更改。若要撤消该操作,请不保存更改即关闭当前的数据库关系图和所有其它打开的数据库关系图。
当保存表或关系图时,约束即从数据库中被删除。
-
引用完整性
约束方法:外键约束
- 某一列的值只能是另一张表中的某一列中包含的值;
- 被引用的主表不能随意删除,修改;
- 当主表的值被引用时,需要先删除子表中的值,才能删除主表。
-
自定义完整性
约束方法:触发器