一、基本概念 属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。 元组:表中的一行就是一个元组。 分量:元组的某个属性值。在一个关系数据库中,它是一个操作原子,即关系数据库在做任何操作的时候,属性是“不可分的”。否则就不是关系数据库了。 码:表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做主键,它就叫主码。 外码:一个属性(或属性组),它不是码,但是它别的表的码,它就是外码。 主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。 非主属性:与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。 主码(从候选码中选出的一个码) 主属性∈码 候选码(能够唯一确定一个元组的元素) 码实际为一个具有唯一功能的元素或元素组,但是应该将其看做一个具有这样功能的set。为了和主属性,非主属性区别。 有码即是有能够唯一确定一个元组的主键,也就有了主属性,非主属性。 二、数据库范式 数据库的2NF要求: 符合1NF,并且,非主属性完全依赖于码,但是可以传递依赖。(也就是有码,主属性概念的要求) 第三范式(3NF):符合2NF,并且,消除传递依赖 BC范式(BCNF):符合3NF,并且,消除主属性的传递依赖。 若一个关系达到了第三范式,并且它只有一个候选码,或者它的每个候选码都是单属性,则该关系自然达到BC范式。 第四范式:要求把同一表内的多对多关系删除。 第五范式:从最终结构重新建立原始结构。 但在绝大多数应用中不需要设计到这种程度。并且,某些情况下,过于范式化甚至会对数据库的逻辑可读性和使用效率起到阻碍。数据库中一定程度的冗余并不一定是坏事情。 注意:一定要在理解了基本的名词概念后采取理解理论的定义,要不会浪费很多不必要的时间和误解。 |
|