今天讲讲数据库的设计范式有哪些?

1.第一范式:第一范式(normal Formate ,1NF)的目标是确保每列的原子性,如果每列(或者每个属性值)都是不可再分的最小数据单元(也是最小的原子单位),则满足第一范式,例如:
客人住宿信息表(姓名,客人编号,客房号,客房描述,客房类型,客房状态,床位数,入住人数,价格等)。
其中,“地址”列还可以细分为 国家、省、市、区等,甚至更多程序把“姓名”列也才分为“姓”和“名”等。如果业务需求中不需要拆分“地址”列,则该表已经符合第一范式,如果需要将“地址”列拆分,则符合第一范式的表如下:
客人住宿信息表(姓名,客人编号,国家,省,市,区,门牌号,客房号,客房描述,客房类型,客房状态,床位数,入住人数, 价格等)。
2. 第二范式:
第二范式(2NF)在第一范式的基础上更进一层,其目标市确保表的每列都和逐渐相关,如果一个关系满足第一范式(1NF),并且除了主键以外的其他列全部依赖于该主键,则满足第二范式(2NF)。
客人住宿信息表数据主要用来描述客人住宿信息,所以该表主键为(客人编号,客房号),
》“姓名”列,“地址”列→“客人编号”列。
》“客房描述”列“客房类型”列“客房状态”列,“床位”列、“入住人数”列、“价格”列→“客房号”列。
其中,“→”符号代表依赖,以上各列没有全部依赖主键,(客人编号,客房号)只是部分依赖于主键,违背了第二范式的规定,所以在使用第二范式对客人住宿信息表进行规范化之后很难分解成以下两个表:
》客人信息表(客人编号,姓名,地址,客房号,入住时间,结账日期,押金,总金额等)主键为“客人编号”列,其他列全部依赖于主键列。
客房信息表(客房号,客房描述,客房类型,客房状态,床位数,入住人数, 价格)主键为“客房号”列,其他列都全部依赖于主键列。
3.第三范式
第三范式(3NF)在第二范式的基础上更进一层,第三范式的目标是确保每列都和主键列直接相关,而不是间接相关,如果第一个关系满足第二范式,(2NF),并且除了主键以外的其他列都只能依赖于主键列,列和列之间不存在相互依赖关系,则满足第三范式(3NF)。
为了理解第三范式,需要根据Amstrong公理之一定义传递依赖,假设A,B,C是关系R的三个属性,如果A→B→C,则从这些函数依赖(FD)中,可以得出A→C称之为传递依赖。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋风清,秋月明。落日夕阳一片红

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值