【问题标题】:SQL separate table for relationship pros & cons关系利弊的 SQL 单独表
【发布时间】:2017-02-17 09:42:44
【问题描述】:

我正在从事数据库设计,因此想了解仅针对关系使用单独的表的优缺点。

应该是这样的:

  1. 客户 [客户详细信息] (CustomerID AS PK)
  2. 地址[详细地址](地址ID为PK)
  3. CustomerAddress [CustomerID FK, AddressID FK]

或者

  1. 客户 [客户详细信息] (CustomerID AS PK)
  2. 地址 [地址详细信息,客户 ID FK]

一个客户可以有多个地址。

优点和缺点是什么?

【问题讨论】:

  • 如果每个客户都有唯一的地址,那么您可以将所有信息放在一个表中
  • 一个客户可以有多个地址,谢谢指点
  • 也可以两个客户共享一个地址吗?

标签: sql database-design schema


【解决方案1】:

这是一个合理的问题。

基本上,它归结为一个问题:“您是否希望两个相同的地址始终具有相同的密钥?”。

在第一个版本中,“地址详细信息”在整个数据库中可以是唯一的。因此,两个室友可以拥有相同的AddressId。当史密斯搬出和琼斯搬进来时,他们可能拥有相同的AddressId

在第二个版本中,每个人都有一个或多个地址记录。但是,给定地址的详细信息可以重复。

哪个更好取决于您的应用程序。通常,当您与地址上的人联系时,第一种方法更可取,因为“重复数据删除”已内置于数据模型中

【讨论】:

  • +1 不错的简洁答案。我一直认为地理是一个维度。 123 Main Street 始终是 123 Main Street,因为 Jan 23 始终是 Jan23。
猜你喜欢
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多