StanfordDB class自学笔记 (九) Relational Design Theory 关系设计理论

设计数据库

设计数据库通常有好几种设计方法,有一些会比其他的要好,那么要怎么选择呢?

先看一个例子 比如要设计下面的大学申请系统

如果我们只有一个apply表的话,会造成一些我们不想要的情况

  • 这样就会出现重复的信息,造成了冗余
  • 更新时候的异常,比如我们只想更新一个tuple,但是更新了我们指定attribute的tuple(这是因为上面重复信息的冗余)
  • 删除时候的异常,同理我们想删除一个tuple,但是删除了所有指定attribute的tuple

将表分开,如果设计的得当,便不会造成以上的问题

一个好的程序的数据库设计不仅仅要设计正确的关系,更要关注数据本身在真实的世界中代表了什么。

通过分解设计数据库

  • 开始的表包含了所有的attribute
  • 通过一些信息,逐渐将表分解为更小更好的关系
  • 自动化分解

自动化分解

  • “mega”relations+property of data
  • 系统根据property分解
  • 最后relation的集合要满足正常的形式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值