【问题标题】:Visio Database Design - Unsure of additional Foreign Keys added by VisioVisio 数据库设计 - 不确定 Visio 添加的其他外键
【发布时间】:2012-04-21 19:25:46
【问题描述】:

请查看我为帮助可视化我的问题而制作的以下示例数据库模型:

在本例中,car and history is 1 to zero or morecar and options is 1 to zero or more 之间的关系。

两个表都将 car car_id 作为外键,但 Visio 还希望将每个表的 customer 表主键作为外键,如上图所示。我不确定这是否必要/正确。如果我删除添加的外键,visio 会将关系标记为不可识别(虚线),所以我觉得我做错了什么

谁能告诉我为什么 Visio 将 customer cust_id 添加到 car 的子表中?在这种情况下,手动删除外键是否是个坏主意?

根据 cmets(和选定的答案)更新图表

【问题讨论】:

  • Visio 正在添加 cust_id,因为它是 car 表的 PK 的一部分:(cust_id, car_id)

标签: sql database-design database-schema


【解决方案1】:

非识别关系本身并没有什么“错误”。

car_id 是唯一的独立,还是在cust_id 的上下文中(所以我们可以为不同的cust_ids 使用相同的car_id)?

  • 如果它本身是唯一的,customer-car 关系应该是非识别性的。
  • 否则它应该被识别。这样做的自然结果是将cust_id 传播到所有“下游”实体。

顺便说一句,关于opt_idhist_id 也可以问同样的问题——它们本身是独一无二的还是在car 的PK 上下文中是独一无二的?答案决定了car-optionscar-history 关系是否应该被识别。

【讨论】:

  • 感谢您的回答。如果我错了,请纠正我,但在上面的例子中,relationship between CAR and CUSTOMER 应该是non-identifiable,因为两者都可以独立存在。我在图表中进行了更改(请参阅更新的问题),并且在“下游”表中也可以看到效果。
  • @techventure 这不是car 是否可以独立存在的问题(它不能,因为你对另一个表有一个非NULL FK),而是它是否可以被识别 独立。假设它可以,您的新图表看起来不错。当然,可以对所有其他关系提出相同的问题(例如,invoice 是否可以与in_id 单独 等识别...)。
猜你喜欢
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多