在这里没有很好的可供选择的方案。 · 较大的冗余度。 10 比如,每一条管路山现的次数和管道出现的次数一样多,我们在前面的初步分析中已经得知,一条管路是和多条管道相对应的。这样造成的同一数据的重复存储,不仅多占用了存储空间,同时也为的修改带来困难。● 插入异常。 如果一条管路的信息已经有了,但是低层的实体:如管道和井,还没有建立,那么我们就不能够将管路的信息预先存到某个元组中去。我们也可以这样考虑,就是说先把有关管路的信存到我们已经建立的大表中,然后放空值到这张表的其他属性中去,但是这张表的主键定义将不允许这样做,因为实体表中的其他实体属性应该作为主键定义的一部分,这样势必会形成带空值的关键字对元组进行查找.但是在概念上说,关键字为空值的元组是不可能存在的。关键字的概念是为了标识和确定一个实体的,所以关键字为空的元组是没有意义的。· 删除异常 如果有一条管道或者一个井号被删除了,那么我们在删除这些低层的对象 实体 时,也将上层的管路这一对象 实体 删除掉了。这个缺点就是因为将不同性质或不同类的实体组织在一个相同的关系定义中才造成的。 上述这些缺点有损于的维护和应用,所以我们说它是一个不好的的关系模式。
一个好的关系模式应当不会发生插入和删除异常.而且冗余要尽可能得少,这样在操作过程中不致产生信息的丢失和造成数据的不一致。 产生插入和删除异常的原因可以从关于关键字的定义看出来。一个关系中的两个元组,如果关键字相同,那么别的属性也一定相同,也就是说这两个元组一定是同一个元组,因而也是一个元组赖以存在的依据。因为任何事物只有当能区别于别的事物时,谈到它的存在才是有意义的。因而关键字或关键字的一部分为空值的元组是不可能在关系中存在的。 正是有了这个前提,才会产生这样的问题。所以为了使得的关系模式能够合理地解决问题,我们有必要引入~套行之有效的依据来检测我们所建立的模式是不是有效。 我在前述的部分曾经提过:关系中的每一个分量必须是不可再分的数据项,这就是一种晟基本的规范化 也叫做第~范式 ,并非这一简单的规范化关系都能很好地描述现实世界.必须作进一步的分析,以确定如何设计一个好的、反映现实世界的模式。在这里先提出第一范式的概念就是为了能够引出后面的相应的几个规则,就是说这种规则的提出也正是在不断的总结和提高中获得的经验性的东西。现在已经有了一套完整的理论来解决这个问题。 通常是根据~个关系所具有的属性间的依赖情况来判定其是否具有某些不合适的性质,按属性间依赖情况区分关系规范的程度为第一范式、第二范式、第三范式和第四范式等等。
其中第一、第二、第三是由Codd博士最早定义的。后来Codd和Boyce提出了BC范式,Faigin又提出了第四范式,现在已经有了第五、第六范式。2.3理论背景 函数依赖是关系设计中的一个重要概念,特别是对管理员来说,更为重要。定义一:设R U 是属性集u上的一个关系模式,x,Y是u的子集。若对于R u 中任一可能关系r 即对于每一时刻的中对应于关系模式R的内容 。R中不可能有两个元组x的属性分量值相等,而在Y的属性分量不相等,则称‘x函数决定Y’,或称‘Y函数依赖于x’。记作x—,V。 上面的定义说得再明确一些,也就是对于f中的x中的每一个可能的取值,或者是单个的属性,或者是一个属性组,Y中都只有一个取值与之对应。比如一种特殊的情况,即x是关键字的属性集合,Y是该关系的任何一个属性集合,则显然有x函数决定Y,应为关键字的任何一个取值将唯一决定实体,也必然决定它其中包含的任何一个属性的确定。 PATH 例如我们看管道孔的实体关系表,主键PIPIE NUM和PIPENUM将唯一确定该表中的任何一个属性集合。 对下函数依赖,必须先说明几点: 当我们再确定关系模式R中的某个函数依赖时,是指R的所有可能关系r都必须 满足这个函数依赖。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-37192-8.html
围魏救赵
奥巴马政府选择了一个看似聪明的策略
说得好