数据库设计 - 实体之间的关联

时间:2016-08-01 16:54:19

标签: database

我有:

  • 请求将ID作为PK和其他属性。

  • 客户数据库,其中ID为PK和其他属性

  • 访客实体和电话号码可以是PK。

  • 客户和访客可以提出请求。
  • 我需要记录提出请求的人
  • 客户ID的格式与电话号码不同。
  • 我在访问者表中添加了一个名为requestID的FK,并将其设为PK,以便根据他的请求识别访问者。
  • 但问题是如何将客户与其请求联系起来?
  • 我建议的解决方案:
  • 在客户表中添加FK --->我无法更改数据库
  • 创建新表并复制客户信息并添加新列 - >将包含冗余。
  • 创建一个包含requestID和customerID的新表--->但是,在单独的表格中建立关系并不是多对多关系(客户可以提出许多请求,并且只需要一个客户提出请求),如果这是上帝的做法,我就不会这样做。
  • 在发出请求的请求表中添加FK --->问题是域名不一样。

请查看我的实体的图片,并告诉我连接客户的最佳方式是什么? enter image description here

提前致谢,

2 个答案:

答案 0 :(得分:0)

如果客户可以提出多个请求,并且请求只能属于一个客户,则您需要在请求中使用外键来引用其客户。

如果客户可以与许多访客关联,那么访客应该拥有该客户的外键。您将Visitor视为JOIN表,以使客户获得其请求。

答案 1 :(得分:0)

在我看来,你应该添加多态关联。

请求表,访客表和请求表,客户表

为此,您可以在请求表中添加两列。

  1. requester_id
  2. requester_type
  3. requester_id将保存父表(客户/访客)的ID

    requester_type将保存父表(客户/访客)的模型/表

    你应该在表格中建立这种关系。

    visitor can have many requestscustomer can have many request