《数据库》实验4 完整性约束
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表C中的对象
实验4 完整性约束
8.用企业管理器为现有表TEST_SC增加新列ID_SC,并创建此列属性为 IDENTITY
插入新列命令
设置IDENTITY列
实验4 完整性约束
9.用SQL为现有表TEST_TC增加新列ID_TC,并创建此列属性为IDENTITY
给表TEST_TC创建标识列
表TEST_TC的属性窗口
实验4.2 域完整性约束
【实验目的】
•掌握用企业管理器为列创建DEFAULT约束; •掌握用SQL为列创建DEFAULT约束; •掌握用企业管理器创建CHECK约束; •掌握用SQL创建CHECK约束。
【实验内容】
用企业管理器为现有表T创建DEFAULT和CHECK约束。 (1)性别列SEX的DEFAULT约束:DEFAULT=’男’ (2)PROF列与COMM列之间限定取值关系的CHECK约束。现实中的情况是:
【实验目的】 •认识完整性约束对数据库的重要性; •掌握实体完整性的创建、修改、维护; •掌握域完整性的创建、修改、维护; •掌握参照完整性的创建、修改、维护; •掌握用户定义的完整性的创建、修改、维护。
实验4 完整性约束
实验4.1 实体完整性约束
【实验目的】
•掌握用企业管理器创建PRIMARY KEY 约束; •掌握用SQL创建PRIMARY KEY 约束; •掌握用企业管理器创建UNIQUE约束; •掌握用SQL创建UNIQUE约束; •掌握用SQL创建IDENTITY 属性列。
数据库表
各数据表的结构为:
字段名 TNO TN SEX AGE PROF SAL COMM DEPT
数据类型 char char char
tinyint char
smallint smallint
char
字段名
SNO SN SEX AGE DEPT
数据ቤተ መጻሕፍቲ ባይዱ型
char char char tinyint char
表1 教师表T
长度(字节数) 2 8 2 1 10 2 2 10
是否可NULL NOT NULL NOT NULL NULL NULL NULL NULL NULL NULL
表2 学生表S
长度(字节数)
是否可NULL
2
NOT NULL
8
NOT NULL
2
NULL
1
NULL
10
NULL
中文描述 教师号 教师姓名
实验4 完整性约束
4.域完整性 域完整性作用的对象是列,是指给定列的输入有效性。强制域有效性的
方法有:限制类型(通过数据类型)、格式(通过 CHECK 约束和规则)或可 能值的范围(通过 FOREIGN KEY 约束、CHECK 约束、DEFAULT 定义、NOT NULL 定义和规则)。 5.引用完整性
•用SQL创建新表TEST_TC,并以表约束形式创建PRIMARY KEY 约束。TEST_TC 表的结构定义如下:
表名:TEST_TC 包含的列如下:
教师号:TNO CHAR(2) 课号:CNO CHAR(2) 主键:(TNO,CNO) 主键约束名:PK_TEST_TC
实验4 完整性约束
•用企业管理器为现有表TEST_TC中的CNO和TNO列创建“UNIQUE约束”; •用SQL为现有表C中的CN列创建“UNIQUE约束”; •用企业管理器为现有表TEST_SC增加新列ID_SC,并创建此列属性为IDENTITY; •用SQL为现有表TEST_TC增加新列ID_TC,并创建此列属性为IDENTITY; •用企业管理器删除表C中CN列的UNIQUE约束; •用SQL为删除现有表TEST_SC的主键PK_TEST_SC和取消ID_SC列的标识属性。
不同的职称对应不同的岗位工资,语义规则如下表所示。
PROF(职称) 教授 副教授 讲师 助教
COMM(岗位津贴) 4000 2000 1500 1000
实验4 完整性约束
故为T创建表达此语义规则的CHECK约束。逻辑表达式为: (PROF=‘教授’ AND COMM=4000)OR (PROF=‘副教授’ AND COMM=2000)OR (PROF=‘讲师’ AND COMM=1500)OR (PROF=‘助教’ AND COMM=1000)
在现有表中添加 CHECK 约束时,该约束可以仅作用于新数据也可以同时作 用于现有的数据。默认设置为 CHECK 约束同时作用于现有数据和新数据。 (3)禁用 CHECK 约束 下列情况可以禁用现有 CHECK 约束: •INSERT 和 UPDATE 语句,可以允许不经约束确认修改表中的数据。在执行 INSERT 和 UPDATE 语句时,如果新数据违反约束或约束应只适用于数据库中已 有的数据,那么可禁用 CHECK 约束。 •复制处理。如果该约束为源数据库所特有,则在复制时请禁用 CHECK 约束。
实验4 完整性约束
10.在企业管理器中删除现有表TEST_SC的主键PK_TEST_SC和取消ID_SC列的 标识属性
表TEST_TC的结构
删除主键的两个主属性
实验4 完整性约束
11.用SQL删除表C中CN列的UNIQUE约束UNIQUE_C
删除UNIQUE约束的SQL语句
表C中的对象
实验4 完整性约束
引用完整性作用的对象是关系。在输入或删除记录时,引用完整性保持 表之间已定义的关系。在 Microsoft® SQL Server™ 2000 中,引用完整性 基于子表外键与主表主键之间或子表外键与主表唯一键之间的关系(通过 FOREIGN KEY 和 CHECK 约束)。引用完整性确保键值在所有表中一致。这样 的一致性要求不能引用不存在的值,如果键值更改了,那么在整个数据库中, 对该键值的所有引用要进行一致的更改。 6.用户定义完整性
【实验内容】
•用企业管理器为数据表S创建PRIMARY KEY 约束; •用企业管理器创建新表TEST_SC,并创建PRIMARY KEY 约束,TEST_SC 表的结构定义如下:
表名:TEST_SC 包含的列如下:
学号:SNO CHAR(2); 课号:CNO CHAR(2); 成绩:SCORE TINYINT; 主键:(SNO,CNO)。
实验4 完整性约束
8.规则(Rule) 所谓规则(Rule)是指当你对表做插入或更新操作时,输入值或新数据
必须符合对应列预先设定的条件。如果不符合,SQL Server就不会让该输入 值插入到表内或不允许用该新数据更新原有数据。当某个规则被创建后,有 一个唯一的名字,并且成为数据库中的一个对象。
用户要使用规则时,需要把规则绑定至表中相应的一列或多列上或某个 用户定义的数据类型上。不使用时再将绑定解除。 9.缺省值(Default)
表T的主键约束
实验4 完整性约束
4.用SQL创建新表TEST_C,并以列约束形式创建PRIMARY KEY 约束
创建TEST_C表及其主键
创建的新表TEST_C及其主键
实验4 完整性约束
5.用SQL创建新表TEST_TC,并以表约束形式创建PRIMARY KEY 约束
创建新表TEST_TCJ及其主键
DEAULT_AGE CHECK_S_AGE
实验4 完整性约束
•用SQL删除表T中列PROF和COMM之间的CHECK约束CHECK_T。 •用企业管理器删除表TEST_S中列SEX的DEFAULT约束及AGE列的CHECK约束。
要求此约束对表T中已有数据不做检查。 •用SQL给现有表S创建CHECK约束。根据语义本科生的年龄限制在14~40
岁之间。故为现有表S中的AGE列创建CHECK约束,逻辑表达式为: AGE>=14 AND AGE<=40
要求此约束对表SC中已有数据做检查。 •用SQL创建一新表TEST_S,表的结构定义如下表所示。
性别 年龄 职称 工资 岗位津贴 系名
中文描述 学生号 学生姓名
性别 年龄 系名
字段名 CNO CN CT
字段名 SNO CNO SCORE
字段名 TNO CNO
数据库表
表3 课程表C
数据类型 长度(字节数)
char
2
char
10
tinyint
1
数据类型
char char tinyint
表4 选课表SC 长度(字节数)
创建的新表TEST_TC及其主键对象
实验4 完整性约束
6.用企业管理器为现有表TEST_TC中的CNO和TNO列创建“UNIQUE约束”
TEST_TC表的属性窗口
在表属性窗口中创建UNIQUE约束
实验4 完整性约束
7.用SQL为现有表C中的CN列创建“UNIQUE约束”
给表C创建UNIQUE约束
列名 SNO SN SEX
类型和长度 CHAR(2) CHAR(8) CHAR(2)
DEFAULT ‘男’
NULL NOT NULL NOT NULL NULL
AGE INT
18 NULL
CHECK表达式
‘男’”OR’ 女’ >=14 AND <=40
约束名
学号
姓名
DEAULT_SEX CHECK_SEX
所谓缺省值(Default)是指当你向表中插入数据时,如果某些列未明确 给出插入值,那么SQL Server将用预先在这些列上定义的值作为插入值。当 某个缺省值被创建后,有一个唯一的名字,并且成为数据库中的一个对象。 用户要使用缺省值时,需要把缺省值对象绑定至表中相应的一列或多列上或 某个用户定义的数据类型上。不使用时再将绑定解除。
用户定义完整性使您可以定义不属于其它任何完整性分类的特定业务规 则,作用的对象可以是列,也可以是元组或关系。所有的完整性类型都支持 用户定义完整性,如:CREATE TABLE 中的所有列级和表级约束、存储过程和 触发器。
实验4 完整性约束
7.CHECK约束 CHECK 约束通过限制输入到列中的值来强制域的完整性。CHECK 约束从逻辑
2 2 1
是否可NULL NOT NULL NOT NULL NULL
是否可NULL NOT NULL NOT NULL NULL
数据类型 char char
表5 授课表TC 长度(字节数) 2 2
是否可NULL NOT NULL NOT NULL
中文描述 课程号 课程名 课时数
中文描述 学号
课程号 成绩
实验4 完整性约束
•用SQL为现有表T在TNO列上创建PRIMARY KEY 约束; •用SQL创建新表TEST_C,并以列约束形式创建PRIMARY KEY 约束。TEST_C表 的结构定义如下: 表名:TEST_C
包含的列如下: 课号:CNO CHAR(2) 课名:CN CHAR(2) 课时:CT TINYINT 主键:CNO 主键约束名:PK_TEST_C
表达式返回结果是TRUE还是FALSE来判断。例如,通过创建 CHECK 约束可将本科 生的Age列的取值范围限制在14岁至40岁之间,从而防止输入的年龄超出正常的 本科生范围。其逻辑表达式为:
Age >= 14 AND Age <= 40 (1)创建和修改 CHECK 约束
作为表定义的一部分在创建表时创建; 添加到现有表中。表和列可以包含多个 CHECK 约束。 修改或删除现有的 CHECK 约束。例如,可以修改表中列的CHECK 约束的表达式。 (2)CHECK约束的设置
中文描述 教师号 课程号
实验4 完整性约束
数据库的完整性是指数据的正确性和相容性。例如,在性别字段中,只 能取“男”或“女”两个值中的一个,没有第三个可取值;学生的学号必须 唯一。在SQL Server 2000中,系统提供多种强制数据完整性的机制,以便确 保数据库中的数据质量。 【知识要点】 1.完整性约束作用的对象
•关系:若干元组间、关系集合上以及关系之间的联系的约束。 •元组:元组中各个字段间的联系的约束。 •列:列的类型、取值范围、精度、唯一性、为空性、缺省定义、CHECK 约 束、主键约束、外键约束 2.完整性约束类型 •实体完整性; •域完整性; •参照完整性; •用户定义完整性。 3.实体完整性 实体完整性将行定义为特定表的唯一实体。实体完整性作用的对象是列, 强制表的标识符列或主键的完整性(通过UNIQUE 约束、PRIMARY KEY 约束或
【实验步骤】
1.用企业管理器为数据表S创建PRIMARY KEY 约束
在表设计器中为SNO创建主键
实验4 完整性约束
2.用企业管理器创建新表TEST_SC,并创建PRIMARY KEY 约束
创建主键(SNO,CNO)
3.用SQL为现有表T在TNO列上创建PRIMARY KEY 约束
用SQL为表C创建PRIMARY KEY