|
|
1
3
我一直听到它叫做“正常化”,但我们谈论的是同一件事。 最简单的方法可能是将城市、州和zip合并到一张表中。您甚至可以考虑使用邮政编码本身作为密钥,尽管我可以考虑两个原因来避免这样做:
要以后按城市、州或zip搜索,只需将此表连接到制造商表。您可以使用内部联接-除非manufacturerzipcodeid为空的manufacturers表中有字段,在这种情况下,您还需要一个左联接来显示这些字段。 |
|
|
2
1
我对你做事的方式没什么问题。邮政编码中的州ID可能很危险——如果知道有邮政编码跨越州边界,我不会感到惊讶,但我不确定。 通过将状态、城市和邮政编码存储在单独的表中,您将要进行大量的连接,但是在处理了存储地址而没有一致性度量的数据库之后,这比一些连接更像是一场噩梦。例如,你以“纽约”、“纽约”、“纽约”、“纽约”和“纽约”结尾。所以我认为,从长远来看,州、市和拉链的桌子是分开的。 |
|
|
3
1
我不是数据库专家,但在我看来,给定的伪模式似乎不正确。解释如下。从问题中了解到的事实是:
首先,写下唯一性。因此,我们构建这两个原始表:
然后,一个合乎逻辑的问题出现了。知道邮政编码,我们如何检索城市编码?要回答这个问题,我们需要在zip和city之间提供一个链接。这个链接应该放在哪里?它不在城市表中,因为事实3我们知道一个城市可以有许多不同的邮政编码。所以它必须在压缩表中。这是我们下一个版本的zip表:
现在,既然我们可以从zip“移动”到城市,我们将讨论城市表。城市名称可以与其他城市名称相同。所以我们不需要强制它(城市名称字段)是唯一的。这是我们的第一个版本的城市表格:
同样,同样的逻辑问题出现了。我们该如何去了解一个城市?必须在这两个表之间的某处创建链接。再说一次,知道这一事实并不能保证城市名称的独特性。链接必须放在市桌上。这是我们下一个版本的城市桌:
通过这个链接,我们可以正确地检索状态。总的来说,我们可以通过城市ID(在Zip表中提供)从一个城市移动到另一个城市,并且可以通过州ID(在城市表中提供)继续从一个城市移动到另一个州。 从数据库的角度来看,合理化数据库是好的,但从编程的角度来看,它可以被认为是“坏的”。因为它推动程序员编写越来越多的类。毕竟,“太远”可以定义为“表变得不合理”。城市名称表似乎不合理,因为它是一个属性,而不是一个实体。如果我的数据库分析师创建了这样一个不合理的表,我会很高兴地将其标记为“太远了”。 另一方面,过度合理化数据库会极大地影响数据库的性能。根据我的经验,它将使查询运行速度变慢。 关于另一个问题,比如用户、团队、Capitols等,我现在什么也说不出来,因为我还没有看到这个问题。 |
|
|
Patricia Rozario · 数据库设计确保一对一关系 8 年前 |
|
|
ololoken · 在订单中保留易失性数据 8 年前 |
|
|
Henrik Persson · 无法更改架构比较中的目标 8 年前 |
|
|
user5855178 · DacFX\SDDT-禁用触发器操作已反转 8 年前 |
|
|
Kumar Roshan Mehta · 组的数据库架构 8 年前 |
|
|
Erik · 保存每月、每周等MongoDB逻辑 8 年前 |
|
|
Aruna · 错误:使用架构项目与Azure数据库进行数据库架构比较 8 年前 |