微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据库规范化

我是新进的数据库设计,我已经读了很多关于规范化.如果我有三张桌子:住宿,火车站和机场.我将在每个表中的地址列或其他表引用的地址表中有地址列?有没有过分规范化的东西?

谢谢

解决方法

数据库规范化是关于构建维护某些功能的关系(表)
关系(表)内的事实(列)和各种关系(表)之间的依赖关系
构成模式(数据库).嘴巴满满的,但这就是它的全部.

A Simple Guide to Five Normal Forms in Relational Database Theory
是正常形式的经典参考.本文简单的定义了每个正常形式的本质
及其对数据库表设计的意义.这是一个非常好的“触摸石”参考.

要正确回答您的具体问题,需要额外的信息.你要问的一些关键问题
是:

是地址一个简单的事实(例如文本块)或复合事实(例如).
由多个属性组成:地址行,城市名,邮政编码等)
>与“住宿”有关的其他“事实”是什么,
“机场”和“火车站”?
>什么是“事实”,唯一地和最小限度地标识“机场”,“住宿”
和“火车站”(这些事实通常称为密钥或候选密钥)?
>地址事实与事实之间存在哪些功能依赖关系
组合每个关键字?

所有这一切,你的问题的答案不像人们希望的那么直接!

有没有像“超标准化”这样的事情?也许.这取决于是否
您已经识别和用于构建表的功能依赖关系
对您的应用程序域有意义.

例如,假设确定了一个地址由多个属性组成;其中一个是邮政编码.技术上是邮政代码也是一个复合项目(至少加拿大邮政编码).进一步规范你的识别这些事实的数据库可能是过度规范化.这是因为邮政编码的组成部分与您的应用程序无关,因此与分拣相关他们进入数据库设计将是一个过度规范化.

原文地址:https://www.jb51.cc/mssql/75255.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐