【问题标题】:One to Many Relationship in DB design which will direct to different table based on type数据库设计中的一对多关系,将根据类型指向不同的表
【发布时间】:2018-10-08 12:33:55
【问题描述】:

请观察下图,这种方法是否正确或有办法实现我的范围?

付款结算可能有多种方式

  1. 现金

  2. 通过支票

  3. 可能客户进行了退货,而发票可能已通过贷方票据结算(退货 TYPE3 表)

有时,每张发票可能包含所有三种结算类型,如果是这种情况,我该如何规范化。

我很困惑,请指教。

【问题讨论】:

  • 我猜你的三个类型表应该引用父结算表。看起来你可能已经“错误地”建立了关系。不幸的是,您的图表不是很清楚,因为您使用了非标准符号。
  • @sqlvogel 你是绝对正确的,关于如何将三种子表与父表关联的任何建议?
  • 嗨。这是一个常见问题解答。请始终在谷歌上搜索您的问题/问题/目标的许多清晰、简洁和特定的版本/措辞,带和不带您的特定字符串/名称,并阅读许多答案。将您发现的相关关键字添加到搜索中。如果您没有找到答案,请发布,使用 1 个变体搜索作为标签的标题和关键字。请参阅向下投票箭头鼠标悬停文本。如果您确实有要发布的非重复代码问题,请阅读并在minimal reproducible example 上采取行动。 PS“不幸的是,你的图表不是很清楚”建议如果你想要一个答案,你应该编辑你的问题以明确。
  • use text, not images/links, for text (including code, tables & ERDs)。使用图像仅是为了方便补充文本和/或无法在文本中给出的内容。永远不要给出没有图例/键的图表。 PS 为什么说“标准化”?如果你想规范化,规范化。 “规范化”并不意味着“做出好的设计”。 PS请通过帖子编辑澄清,而不是cmets。

标签: database database-design relationship rdbms


【解决方案1】:

我想你想要这样的例子:

CREATE TABLE Settlements (ID INT PRIMARY KEY, ...);
CREATE TABLE Returns (ID INT PRIMARY KEY REFERENCES Settlements (ID), ...);
CREATE TABLE Cash (ID INT PRIMARY KEY REFERENCES Settlements (ID), ...);
CREATE TABLE Checks (ID INT PRIMARY KEY REFERENCES Settlements (ID), ...);

【讨论】:

  • 感谢所有反馈,但我需要您的建议,看看设计模型是否合法
  • 您询问了有关如何将三个子表与一个父表关联的建议。这就是我的回答试图帮助你的——三个表引用了结算表。我已经评论了我认为你的图表是错误的。
猜你喜欢
  • 1970-01-01
  • 2017-01-30
  • 2011-05-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 2014-11-06
  • 1970-01-01
相关资源
最近更新 更多