2

我有一个需要存储客户数据的数据库,我试图找出我需要哪些表。到目前为止,我在想这样的事情:

客户表:

  • ID
  • 公司名称
  • 笔记
  • 电话
  • 替代电话

地址表:

  • 第1行
  • 线2
  • 邮政编码

站点表(需要完成工作的物理站点)

  • 网站名称
  • 笔记

一个客户将有 1 个联系地址和 1 个以上的站点地址。这两个地址可能相同(如果客户使用公司地址作为联系人)。但是,有时联系地址与站点地址不同。

我需要两个地址表吗?一个用于客户地址,一个用于站点?电话也应该是一个单独的表,因为我有时会为每个客户存储 2 个?

4

3 回答 3

1

您的设计看起来不错,尽管您可能希望在地址和站点中添加一个 id。我不确定您是否要在客户表中使用电话,除非您限制他们可以拥有的号码数量。站点是否需要地址(我只问是因为我不确定它是物理站点还是网站)?我提出这个是因为它会影响设计。如果与地址相关联的唯一实体是客户,那么在地址中有一个 customer_id 是有意义的。但是,如果地址在客户之间共享,或者在站点表中使用,那么我会为它制作连接表。

于 2012-07-16T17:51:37.560 回答
1

您提到用户可以拥有的电话号码数量是可变的。在这种情况下,我不会像您现在那样对拥有两个电话号码的客户进行硬编码。拥有一个单独的电话号码表将使这更加灵活。

电话表:

  • 客户 ID(外键)
  • 电话号码
于 2012-07-16T18:31:47.877 回答
0

如果您有 Customer 表和 Site 表,您可以在其中引用 Address 表。

这将允许您为客户和站点使用相同的地址或不同的地址。请注意,更新地址将同时更新客户和站点的地址。

客户表:

  • ID
  • 公司名称
  • 笔记
  • 电话
  • 替代电话
  • 地址 ID(外键)

网站表:

  • ID
  • 网站名称
  • 笔记
  • 地址 ID(外键)

地址表:

  • ID
  • 第1行
  • 线2
  • 邮政编码

至于电话号码,该表已经可以处理 2 个电话号码。你的意思是他们会有2个主号码,然后交替?

于 2012-07-16T17:53:41.317 回答