数据库规范化

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

谢谢

解决方法

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

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

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

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

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

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

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

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...