参照完整性
- 格式:ppt
- 大小:146.50 KB
- 文档页数:5
52 的“字段”选项卡中包含有字段有效性规则。
可以先选择要定义有效性的字段,然后分别输入规则、信息及默认值。
【例4-9】以“学生管理”数据库的学生表为例,设性别字段有效性规则为只允许输入“男”或“女”字符,当输入的不是要求内容时,提示输入错误,性别字段的默认值为“男”。
在“规则”框中输入:性别="男" OR 性别="女"。
在“信息”框中输入:"性别输入错误!"。
在“默认值”框中输入:"男"。
“规则”是逻辑表达式,“信息”是字符串表达式,“默认值”的类型由字段的类型确定。
4.5.2 数据库表间的永久关系自由表之间可以建立临时关系,数据库表之间可以建立永久关系,永久关系保存在数据库中,不必在每次使用时重新建立。
在Visual FoxPro中,可以使用索引在数据库中建立表间的永久关系。
1.建立数据库表间的永久关系可以在数据库设计器中,选择想要关联的索引名,然后把它拖到相关表的索引名上。
在创建永久关系时,作为主表的索引必须使用主索引或候选索引,否则无法建立永久关系。
2.删除数据库表间的永久关系可以在数据库设计器中,单击两表之间的关系连线,关系连线将变粗,表明已经选择了该关系,然后按Delete键,则可删除关系。
【例4-10】以“学生管理”数据库为例,建立“学生”表与“选课”表一对多的关系;“课程”表与“选课”表一对多的关系。
①为表建立索引。
②建立表间关系。
如图4-19所示。
图4-19 建立【例4-10】表间关系4.5.3 数据库表间的参照完整性所谓参照完整性,就是根据一系列规则来保持数据的一致性,保持已定义的表间关系。
如果。
关系模型的参照完整性规则
答: 关系模型的完整性规则是对关系的某种约束条件。
关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。
其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。
1) 实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。
2) 参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必
须为:
·或者取空值(F的每个属性值均为空值);
·或者等于S中某个元组的主码值。
3) 用户定义的完整性是针对某一具体关系数据库的约束条件。
它反映某一具体应用所涉及的数据必须满足的语义要求。
3.5 数据完整性在数据库中数据完整性是指保证数据正确的特性,一般包括实体完整性、域完整性、参照完整性。
一、实体完整性是保证表中记录唯一的特性。
即在一个表中,不能有重复的纪录。
候选关键字:如果一个字段的值或几个字段的值能够唯一标识表中的一条记录,这样的字段称为侯选关键字。
主关键字:在一个表中可能会有几个具有这种特性的字段或者字段的组合,这时从中选择一个作为主关键字。
在VFP中将主关键字称做主索引,将侯选关键字称为侯选索引。
实现方法:在VFP中利用主关键字(主索引)或候选关键字(候选索引)来保证表中记录的惟一性。
例1. 打开数据库“成绩管理”,为学生表中的“学号”字段建立主索引(升序)。
二、域完整性1.域:列的取值的范围(EG:数学中的定义域)域完整性:列的取值范围合理性我们以前在创建表的时候指定不同的数据类型和宽度来限制字段的取值类型和取值范围,但这些还远远不够。
我们需要进一步对列里能输入什么样的数据严格要求。
2.实现域完整性的方法:设置列的有效性规则,设置列的默认值⑴设置列的有效性规则例2. 设置“成绩管理”数据库中“学生”表中年龄字段的有效性规则:要求学生表中的年龄必须在15-22之间,否则就认为输入无效!并提示“年龄只能在15-22岁之间!”例3. 设置“学生”表中系部字段的有效性规则:要求系部列的取值必须是四个系之一,如果输入其他值就认为输入无效!并提示“该系部名不存在!”例4.设置“成绩”表中成绩的有效性规则为:成绩只能在0-100分之间,如果用户输入错误,则提示“成绩不在范围内!”⑵为列设置默认值例5.对“学籍”表进行修改,设置“入学日期”的默认值为2009-08-26,然后打开表,输入一条新记录,观察现象例6. 对“学生”表进行修改,设置“系部”列的默认值为基础部,然后打开表,使用Append命令输入一条新记录,观察现象三、参照完整性1.思考:⑴如果同学们在填学生表的时候将自己的班级名称写错了, 写成了一个学校中根本不存在的班级, 这样的结果肯定是错误的。
一、有效性规则和参照完整性1.有效性规则先选中要求设置的字段,(1)“规则”:逻辑型表达式即SQL格式表达式。
例:年龄是15-20:年龄>=15 and 年龄<=20(2)“信息”:字符型表达式,直接摘抄加“”(英文状态)(3)“默认值”:看选中的字段是什么类型2.参照完整性(1)判断一方(没有重复字段的表)和多方(有重复字段的表)(2)一方建主索引,多方建普通索引(3)由一方向多方扯一条线(4)清理数据库(数据库—清理数据库,如果遇到“文件正在使用暂不能发布pack命令,”此时close all,再重新以独占方式打开数据库再进行一次清理)(5)右键编辑参照完整性(两个永久性联系须一一设置其参照完整性)二、SQL语句1.格式:格式一:Select [top]字段1/字段2…… from表1,表2…. where连接条件and(or) 筛选条件{group by 某一字段 [haing count(字段)] } order by字段1 asc/desc, 字段2asc/desc…… into table表格式二:Select[top]字段1/字段2…… from表1 join 表2 join表3…. on连接条件(返回来写) where筛选条件 {group by 某一字段 [haing count(字段)] } order by字段1 asc/desc, 字段2 asc/desc…… into table表⑴.“字段1/字段2……”,根据题目要求,搜索什么字段写什么字段,若其中某一字段在表中没有则认定为是起的新名字,在该字段前加as,之后向函数avg(),sum(),max(),min(),count()。
⑵.“group by 某一字段 [haing count(字段)]”为难点。
考虑用不用group by,首先在草稿纸上或脑海生成题目要求的表,选取一个个例填写分析是否用得到group by,按什么分组。
参照完整性
引用完整性指的是关系中数据的准确性和一致性。
在关系中,数据在两个或多个表之间链接。
这是通过让外键(在关联表中)引用主键值(在主表或父表中)来实现的。
因此,我们需要确保关系双方的数据保持完整。
因此,参照完整性要求每当使用外键值时,它必须引用父表中有效的现有主键。
例子
例如,如果我们删除主表中的第15行,我们需要确保任何相关表中没有值为15的外键。
如果没有关联的行,我们应该只删除主键。
否则,我们将以孤立的记录告终。
这里,相关表包含一个主表的主键字段(即
“CompanyId”字段)中不存在的外键值。
这导致了
“孤立记录”。
因此参照完整性将阻止用户:
•如果主表中没有关联的行,则将该行添加到相关表中。
•更改主表中的值将导致相关表中的孤立记录。
•如果有匹配的相关行,则从主表中删除这些行。
缺乏参照完整性的后果
数据库中缺乏参照完整性可能导致返回的数据不完整,通常没有错误指示。
这可能会导致记录在数据库中“丢失”,因为它们永远不会在查询或报告中返回。
还可能导致报告出现奇怪的结果(比如没有关联公司的产品)。
或者更糟的是,这可能会导致客户收不到他们购买的产品。
更糟糕的是,它可能会影响到生死攸关的情况,例如,医院的病人没有得到正确的治疗,或者救灾小组没有收到正确的材料或信息。
数据的完整性
引用完整性是数据完整性的一个子集,它与所有数据(关系数据或其他数据)的准确性和一致性有关。
维护数据完整性是使用数据库的一个关键部分。