.数据完整性 - 图文

更新时间:2024-04-13 09:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

备课记录(2011)

教学目标 (2分) 1、完整性的概念 2、使用约束 3、使用规则 4、使用默认使用identity列 5、例子 6、作业 复习,提问,测试,演示 什么是数据的完整性 讲授章节(题目) 互动 重点标注 提问2至4人 问题: 1、 互动 2、 鼓励学生操作演示 3、 设计题目,学生分组 4、 检验学习掌握效果 回顾旧知识 (2分) 新课教学 (围绕目标展开设计) (4分) 必须讲的理论知识 1.完整性的概念 数据完整性是指存储在数据库中的数据正确无误,并且相关数据具有一致性。数据库中的数据是否完整,关系到数据库系统能否真实的反映现实世界。例如,在“学生”表中学生的学号要具有惟一性,学生性别只能是男或女,其所在系部、专业、班级必须是存在的,否则,就会出现数据库中的数据与现实不符的现象。如果数据库中总存在不完整的数据,那么它就没有存在的必要了,因此实现数据的完整性在数据库管理系统中十分重要。 2.分类 根据数据完整性机制所作用的数据库对象和范围不同,数据完整性可分 : ? 实体完整性 ? 域完整性 ? 引用完整性 ? 用户定义完整性 1)实体完整性 实体是指表中的记录(行),一个实体就是表中的一条记录。实体完整性要求在表中不能存在完全相同的记录,而且每条记录都要具有一个非空且不重复的主键值。这样就可以保证数据所代表的任何事物都不存在重复、可以区分。例如,学生表中的学号必须惟一,并且不能为空,这样就可以保证学生记录的惟一性。实现实体完整性的方法主要有主键约束、惟一索引、惟一约束和指定IDENTITY属性。 (2)域完整性 也称为列完整性,指定一个数据集对某一个列是否有效和确定是否允许为空值。域完整性要求向表中指定列输入的数据必须具有正确的数据类型、格式以及有效的数据范围。例如,假设现实中学生的成绩为百分制,则在“课程注册”表中,对成绩列输入数据时,不能出现字符,也不能输入小于0或大于100的数值。实现域完整性的方法主要有CHECK约束、外键约束、默认约束、非空约束、规则以及在建表时设置的数据类型。 (3)引用完整性 引用完整性又称为参照完整性。引用完整性是指作用于有关联的两个或两个以上的表,通过使用主键和外键或主键和唯一键之间的关系,使表中的键值在所有表中保持一致。s 实现引用完整性的方法主要有外键约束。 (4)用户定义的完整性 用户定义的完整性是应用领域需要遵守的约束条件,其允许用户定义不属于其他任何完整性分类的特定业务规则。所有的完整性类型都支持用户定义完整性。 使用约束 1.约束 约束是SQL Server提供的自动强制数据完整性的一种方法,它是通过定义列的取值规则来维护数据的完整性。 2. 约束的类型: (1)PRIMARY KEY(主键)约束 主键约束用来强制数据的实体完整性,它是在表中定义一个主键来唯一标识表中的每行记录。主键约束有如下特点:每个表中只能有一个主键,主键可以是一列,也可以是多列的组合;主键值必须唯一并且不能为空,对于多列组合的主键,某列值可以重复,但列的组合值必须唯一。 (2)UNIQUE(唯一)约束 唯一约束用来强制数据的实体完整性,它主要用来限制表的非主键列中不允许输入重复值。唯一约束有如下特点:一个表中可以定义多个唯一约束;每个唯一约束可以定义到一列上,也可以定义到多列上;空值可以出现在某列中一次。 3) NOT NULL(非空)约束 非空约束用来强制数据的域完整性,它用于设定某列值不能为空。如果指定某列不能为空,则在进行插入记录时,此列必须要插入数据。 (4)CHECK(检查)约束 检查约束用来强制数据的域完整性,它使用逻辑表达式来限制表中的列可以接受哪些数据值。 (5)DEFAULT(默认)约束 默认约束用来强制数据的域完整性,它为表中某列建立一个默认值,当用户插入记录时,如果没有为该列提供输入值,则系统会自动将默认值赋给该列。默认值可以是常量、内置函数或表达式。使用默认约束可以提高输入记录的速度。 (6)FOREIGN KEY(外健)约束 外键是指一个表中的一列或列组合,它虽不是该表的主键,但却是另一个表的主键。通过外键约束可以为相关联的两个表建立联系,实现数据的引用完整性,维护两表之间数据的一致性关系。 3.列约束与表约束 当约束被定义于某个表的一列时称为列约束,定义于某个表的多列时称为表约束。当一个约束中必须包含一个以上的列时,必须使用表约束。 4. 创建主键约束 1)使用SQL Server Management Studio 创建 (1)启动SQL Server Management Studio,在“对象资源管理器”窗口中,依次展开数据库、student、表节点,选择“教学计划”表,单击右键,在弹出的快捷菜单中选择“修改”命令,打开“表设计器”对话框。 。 (2)在“表设计器”对话框中,选择需要设为主键的字段,如果需要选择多个字段时,可以按住Ctrl键,同时用鼠标单击每个要选择的字段。在此,依次选择课程号、专业代码和专业学级字段。 (3)选好字段后,右键单击选择的某个字段,在弹出的快捷菜单中选择“设置主键”命, (4)执行命令后,在作为主键的字段前有一个钥匙样图标。也可以 在选择好字段后,单击工具栏中的“钥匙”工具按钮,设置主键 (5)设置主键完成。 创建表时创建主键: create table man4 ( id int constraint py primary key ) 包含两个列的主键 create table student ( sid int, kid int, constraint pyq primary key(sid,kid) ) 在已有的表中创建主键 alter table man5 add constraint py primary key(id) 或者: alter table stu add primary key(id) 删除主键: alter table student drop py 5.UNIQUE约束 ? 当表中存在主键,为保证其它的字段值也惟一时,应该创建惟一约束。一个表中可以创建多个惟一约束;惟一约束是一列,也可以是多列的组合;在惟一约束列中,空值可以出现一次。 ? UNIQUE约束主要是用来确保不受主键约束的列上的数据的惟一性。主键与UNIQUE约束的区别主要为: UNIQUE约束,主要用在非主键的一列或多列上要求数据惟一的情况。 UNIQUE约束,允许该列上存在NULL值,而主键决不允许出现这种情况。 可以在一个表上设置多个UNIQUE约束,而在一个表中只能设置一个主键约束。 1)使用SQL Server Management Studio创建惟一约束 案例:在student数据库中,为“系部”表中的“系部名称”字段创建一个惟一约束。 (1)在“对象资源管理器”窗口中,依次展开数据库、student、表节点,右键单击“系部”表,在弹出的快捷菜单中单击“修改”命令,打开“表设计器”对话框。在“表设计器”中,右键单击任意字段,在弹出的快捷菜单中单击“索引/键”命令,打开“索引/键”对话框。 (2)单击“添加”命令按钮,系统给出系统默认的惟一约束名:“IX_系部”,显示在“选定的主/惟一或索引”列表框中,单击选中惟一约束名“IX_系部”,在其右侧的“属性”窗口中,可以修改约束名称,设置约束列等。 (3)单击“属性”窗口中“常规”中的“列”属性,在其右侧出现“”按钮,单击该按钮,打开“索引列”对话框,在列名下拉列表框中选择“系部名称”,在排序顺序中选择“降序”,设置创建惟一约束的列名。 (4)设置完成后,单击“确定”按钮,回到“索引/键”对话框,修改“常规”属性中“是惟一的”属性值为“是”,最后,关闭“索引/键”对话框和“表设计器”对话框,保存设置,完成惟一约束创建。 alter table man add constraint un unique(cid) 或者 alter table stu add unique(name) 6. CHECK约束 ? CHECK(核查)约束通过检查输入表列的数据的值来维护值域的完整性。核查约束通过对一个逻辑表达式的结果进行判断来对数据进行核查。 ? 注意: ? 可以在一列上设置多个核查约束,也可以将一个核查约束应用 于多列。当一列受多个核查约束控制时,所有的约束按照创建 的顺序,依次进行数据有效性的核查。 ? 一般来说,可以在下面两种情况下,设置核查约束无效: ? 在执行INSERT语句或UPDATE语句过程:事先知道对数据的增 加或修改将违反核查约束的规定,但这些操作又是必须的。 ? 在复制进行时,在进行不同服务器间的复制操作的过程中,由于 两个服务器之间设置的核查约束不一致,如果不事先 使核查约束 无效,则有可能使某些数据无法进行复制。 右击-?check约束进行设置 create table man4 ( id int not null, sex char(2) default '男', check(sex='男' or sex='女') ) 或者: alter table man add check ( age>=20 and age<=30 ) 7.默认约束(default)

用户在输入数据时,如果没有给某列赋值,该列的默认约束将自动为该列指定默认值。默认值可以是常量、内置函数或表达式。使用默认约束可以提高输入记录的速度。 1)使用SQL Server Management Studio创建默认约束 案例: 在student数据库中,为“教学计划”表的“课程类型”字段创建默认值,其默认值为“公共必修”。其操作步骤如下: (1)启动SQL Server Management Studio,在“对象资源管理器”窗口中,依次展开数据库、student、表节点。 (2)右键单击“教学计划”表,在弹出的快捷菜单中选择“修改”命令,打开“表设计器”对话框,如课本图7.2所示。 (3)单击需要设置默认的列(如:课程类型),在下面列属性设置栏的“默认值或绑定”选项对应的输入框中,输入默认值即可(如:公共必修)。 (4)设置完成后,关闭表设计器。 create table person ( id int not null, sex char(2) default '男' ) 或者: alter table person3 add constraint persons_sex default '男' for sex 或者: alter table stu add default '男' for sex 8.外键约束 ? 外键主要用来维护两个表之间的一致性关系。外键的建立主要是通过将一个表中的主键所在列包含在另一个表中,这些列就是另一个表的外键。 ? 外键约束不仅可以与另一张表上的主键约束建立联系,也可以与另一张表上的UNIQUE约束建立联系。 ? 外键约束上允许存在为NULL的值,则针对该列的外键约束核查将被忽略。 ? 外键同时也限制了对主键所在表的数据进行修改。当主键所在的表的数据被另一张表的外键所引用时,用户将无法对主键里的数据进行修改或删除。除非事先删除或修改引用的数据。 ? 当一个新的数据加入到表格中,或对表格中已经存在的外键上的数据进行修改时,新的数据必须存在于另一张表的主键上。 1)使用SQL Server Management Studio创建外键约束 案例:在student数据库中,为“学生”表的“班级代码”列创建外键约束,从而保证在“学生”表中输入有效的“班级代码”。其操作步骤如下: (1)启动SQL Server Management Studio,在“对象资源管理器”窗口中,依次展开数据库、student、表节点。 (2)右键单击 “学生”表,在弹出的快捷菜单中选择“修改”命令,打开“表设计器”对话框。在“表设计器”中,右键单击任意字段,在弹出的快捷菜单中单击“关系”命令,打开“外键关系”对话框。 (3)单击“添加”命令按钮,系统给出默认的外键约束名:“FK_学生_学生”,显示在“选定的关系”列表中。 (4)单击“FK_学生_学生”外键约束名,在其右侧的“属性”窗口中单击“表和列规范”属性,然后,再单击该属性右侧的“”按钮,打开“表和列”对话框,如图7.7所示。 (5)在“表和列”对话框中,修改外键的名称,选择主键表及表中的主键,以及外键表中的外键,修改后结果如图7.7所示。单击“确定”命令按钮,回到“外键关系”对话框,如图7.8所示。 (6)单击“关闭”按钮,完成外键的设置。 create table aa ( id int primary key, sid int foreign key references man(id) ) 追加外键约束: alter table stu add foreign key(cid) references class(id) 建表三大范式: 第一范式(1NF)无重复的列 所谓第一范式是指数据库表的每一列都是不分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二方式(2NF)要求数据库表中的个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。例如员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是唯一的,因此每个员工可以被唯一区分。这个唯一属性列被称为主关键字或主键、主码。 第二范式就是要求表要有主键。 满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性,则创建外键表。 2、演示 3、实训(上机) 5、 检验(上机) 教学后记 (2分) 1、 优缺点:(心得体会): 2、 改进 操作演示为主,根据结果推演步骤 备课记录每周六以电子稿形式提交至教学部主任处。

本文来源:https://www.bwwdw.com/article/u4sp.html

Top