当前位置:文档之家› 数据库的关系完整性

数据库的关系完整性

一、数据库的关系完整性

关系数据库设计是对数据进行组织化和结构化的过程,核心问题是关系模型的设计。关系关系模型的完整性规则是的关系的某种约束条件,是指数据库中数据的正确性和一致性。现实世界的实际存在决定了关系必须满足一定的完整性约束条件,这些约束表现在对属性取值范围是限制上。完整性规则就是防止用户使用数据库时,想数据库中加入不符合语义的数据。规则模型中有3类完整性约束:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性尚关系模型必须满足的完整性约束条件被称作关系的两个不变性。

1、 实体完整性规则

实体完整性是指基本关系的主属性,即主键的值都不能取空值。在关系系统中一个关系通常对应一个表,实际存储数据的表称为基本表,而查询结果表、视图表都不是基本表。实体完整性是针对基本表而言的,指在实际存储数据的基本表中,主属性不能去空值。例如:在“A 班学生信息”表中,“学号”为主键,则“学号”不能取空值。

一个基本关系对应于现实世界中的一个实体集,如学生关系对应于学生集合。现实世界中实体书可区分的,即每个实体具有唯一的标识。在关系模型中用主键作唯一性标识时,若主键去空值,则说明这个实体无法标识,即不可区分。这显然与现实世界相矛盾,现实世界不可能存在这样不可标识的实体,从而引入实体完整性规则。

实体完整性规则规定基本关系的所有主属性都不能取空值,而不仅仅是主键整体不能取空值。如果是多个字段一起组成主键,则这多个字段均不能取空值,否则就违反了实体完整性规则。

或:实体完整性是指关系的主关键字不能取空值或重复的值。如果是多个字段一起组成主键,则这多个字段均不能取空值。如:学号是主键,则该列不能有空值或重复值,否则无法对应某个具体的学生,这样的二维表不完整,对应关系不符合实体完整性规则的约束条件。

2、 参照完整性规则

现实世界的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的,这样就存在着关系之间的引用。

参照完整性是定义建立关系之间联系的主键与外键引用的规则,即外键要么取空值,要么等于相关关系中主键的某个值。例如:

课程表(课程ID ,课程名,类型ID ,学分,。。。。。)

课程类别表(类型ID ,类型)

这两个表之间存在着属性的引用,即“课程”表引用了“课程类别”表的主键“类型ID ”。按照参照完整性规则,“课程”表中每个元祖的“类型ID ” 属性只能取下面两类值“

(1) 空值。表示该课程还未确定类别。

(2) 非空值。此时取值必须和“课程”表这某个元祖的“类型ID ”值相同,表示这门课

程归属该类别。

参照完整性规则规定不能引用不存在的实体。

3、 用户定义完整性(域完整性)规则

实体完整性和参照完整性是关系模型这必须满足的完整性约束性条件,只要是关系数据库系统就应该支持实体完整性和参照完整性。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义完整性就是对某些具体关系数据库的约

束条件。例如:对“性别”字段的约束条件是“男”or “女”;对“成绩字段的约束条件是“>=0 and <=100”,即用有效性规则来约束。

例题

1、数据表之间通过保证数据的一致性。设置参照完整性

2、Access数据库中,为了保持表之间的关系,要求在子表(从表)中添加记录时,如果主表中没有相关的记录,则不能再子表(从表)中添加该记录。为此需要定义的关系是()。A输入掩码 B 有效性规则 C 默认值 D 参照完整性

3、数据表通过设置保证域的完整性。有效性规则

二、SQL语句的使用

1.SELECT语句的一般格式

语法格式:

SELECT [ALL | DISTINCT] * | <字段1> [AS 别名1][,<字段2> [AS 别名2] ][, …] FROM <表名1>[,<表名2>][, …]

[WHERE <条件表达式1>]

[GROUP BY <字段i>[,<字段j>][, …] [HA VING <条件表达式2>] ]

[ORDER BY <字段m> [ASC | DESC][, <字段n> [ASC | DESC] ] [, …[ASC | DESC] ] ];

Select语句的说明:

1、Select子句说明由哪些列选项组成结果表,它放在Select语句的开始处,指定此查询要检索出的列名称,这些列选项用“,”隔开,并按照从左到佑的顺序排列。

2、from子句列出查询数据使用的表,它由关键字from后跟一组用逗号分开的表名组成。每个表名都代表一个提供该查询数据源的表。这些表称为此SQL语句的表源,因为它们是查询的数据源。

3、where子句告诉SQL查询哪些行(记录)中的数据,这些行由“条件表达式”来确定。

4、order by子句将查询结果按一列或多列中的数据排序。如果省略此子句,则查询结果是无序的。添加ASC属性以升序(从小到大)排列,DESC属性以降序(从大到小)排列。默认为升序。

5、group by子句指定该查询为分组总计查询,即不是对每行产生一个查询结果,而是以某个字段先将记录分组,再对分组后的记录进行总计给出其统计结果。

6、Select语句中只有Select子句和from子句为必须有的,其他子句为可选项。

7、where子句中的条件表达式,可以使用关系运算符、特殊运算符、逻辑运算符、函数组成,可以构成各种灵活多样且不同的查询结果。

8、当查询涉及两个表时,称为“连接查询”,一般使用等值连接,即通过相同字段名进行连接,例如:学生.学号=学生选课.学号。

9、多表查询中要在字段名前加上表名,例如:学生.学号。

具体例子见课件“第三章”中的“SQL 查询”

三、宏

(1)Beep

使用Beep操作可以通过计算机的扬声器发出嘟嘟声,以提醒用户注意。

(2)OpenForm

使用OpenForm 操作可以打开一个窗体,并通过选择窗体的数据输入与窗口方式,来限制窗体所显示的记录。OpenForm 操作需要设置相应的参数,包括设置要打开的窗体的名称、窗体的视图(如“窗体”、“设计”、“打印预览”、“数据表”、“数据透视表”或者“数据透视图”等)、筛选名称及Where条件等。

(3)OpenQuery

使用OpenQuery 操作可以打开一个查询。OpenQuery 操作需要设置相应的参数,包括设置要打开的查询的名称、查询的视图(如“数据表”、“设计”、“打印预览”、“数据透视表”或者“数据透视图”等)。

(4)OpenReport

使用OpenReport 操作可以在“设计”视图或打印预览中打开报表或立即打印报表。也可以限制需要在报表中打印的记录。当然,这需要设置相应的参数。

(5)Close 操作

使用Close 操作可以关闭指定的Access 窗口。如果没有指定窗口,则关闭活动窗口。Close 操作需要设置相应的参数,包括设置要关闭的窗口的对象类型(如查询、窗体或报表等)及要关闭的对象名称(如与指定的对象类型对应的查询名称、窗体名称或报表名称等)。

(6)AddMenu

为窗体将菜单添加到自定义菜单栏。

(7)GoT oControl

使用GoT oControl 操作可以把焦点移到打开的窗体、窗体数据表、表数据表、查询

数据表中当前记录的特定字段或控件上。

(8)Maximize

使用Maximize 操作可以放大活动窗口,使其充满Access 窗口。该操作可以使用户尽可能多地看到活动窗口中的对象。

(9)Minimize

使用Minimize 操作可以将活动窗口缩小为窗口底部的标题栏。

(10)MsgBox

使用MsgBox 操作可以显示包含警告信息或其它信息的消息框。

(11)PrintOut

使用PrintOut 操作可以打印打开数据库中的活动对象,也可以打印数据表、报表、窗体和模块。

(12)Quit

使用Quit 操作可以退出Access。Quit 操作还可以指定在退出Access 之前是否保存数据库对象。

(13)RepaintObject

使用RepaintObject 操作可以完成指定数据库对象的屏幕更新。如果没有指定数据库对象,则对活动数据库对象进行更新。更新包括对象的所有控件的所有重新计算。(14)Restore

使用Restore 操作可以将处于最大化或最小化的窗口恢复为原来的大小。

(15)RunMacro

使用RunMacro 操作可以运行宏,还可以从其他宏中运行宏。

(16)SetValue

使用SetValue 操作可以对Access 窗体、窗体数据表或报表上的字段、控件或属性的值进行设置。

(17)StopMacro

使用StopMacro 操作可以停止当前正在运行的宏。

注意:应该会使用序列宏!

相关主题
文本预览
相关文档 最新文档