第一范式定义极其规范化

第一范式


第一范式规定属性域只能包含原子的(简单的,不可分的)值,并且元组中任一属性的值必须是一个来自该属性域的单个的值。因此,对于关系的一个单个的元组,1NF不允许属性值是一个值集,一个元组值或者两者的组合。


1.如果属性值是一个值集,则有三种方法使这样一个关系达到1NF

1).移去使该模式违背1NF的属性。并将其与该关系的主码放在一个单独的关系中。这种技术是将一个非1NF关系分解成两个1NF。

2).扩展码,使得具有值集的属性的所有值在属性中都有一个单独的元组。这种解决方案的缺点是引入了冗余数据。

3).如果知道属性值的最大个数,就可以将该属性分解成多个原子属性。这种情况下,如果大部分的元组都不是具有所有的属性,会引入太多的NULL值。另外,这些位置值之间的顺序还可能会进一步引入一种寄生语义,而这是我们原本所不希望的。对此属性的查询将会变的更加困难。


以上三种解决方案,通常认为第一种最好,因为它不存在冗余,十分通用,并且对值的最大个数也没有限制。


此外,第一范式也不允许他们自身组合的多值属性,这种属性称为嵌套关系,因为每个元组内都会嵌有一个关系。

为了将其规范化为1NF,要把嵌套关系的属性移到一个新的关系中,并且将主码也复制到这新关系中,这样,在这个新关系的主码是部分码与原关系的主码的组合。

这个过程可以递归地应用于有多层嵌套的关系,以便将该关系解除嵌套,成为一组1NF关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值