【问题标题】:How to determine in what order do I need create tables from an ERD [closed]如何确定我需要以什么顺序从 ERD 创建表 [关闭]
【发布时间】:2014-06-07 21:59:11
【问题描述】:

在我为每个表创建数据字典并制定 ERD 之后。应该按什么顺序创建表? 这是 ERD 的图片:

【问题讨论】:

  • 最简单的方法是在所有表创建完成后创建约束。
  • 只是一个评论:我必须承认,我总是很难阅读这样的 ERD。这是正确的吗?每个订单可以有许多订单行,每个订单行可以包含许多产品,每个订单行可以有多个供应商。另一方面,供应商只能提供一种产品?嗯,这似乎是错误的。但反过来读它似乎也是错误的。所有关系都是 1:n 似乎很奇怪。还是我看错了图表?至于答案:我同意其他人:-)
  • 我同意@ThorstenKettner 的观点,即图表看起来不正确(尽管我可能读错了)。从逻辑上讲,“OrderLine”似乎应该只链接到一个产品(即它是订单上的单个项目),但同一个产品显然可以多次订购。供应商 - 产品链接也是如此。一种产品通常应该来自一个供应商,而一个供应商可能会提供不止一种产品。
  • 我同意上述cmets。对我来说,这看起来像是一种表示外键的奇怪方式(即许多供应商可以提供相同的产品),但从某种意义上说,如果是这种情况,那么你真的需要一个 ProductSupplier 表,否则你有多个条目,这仍然是错误的在与供应商 ID 相同的产品中。我建议您在按原样提交之前可能需要更仔细地考虑您的设计。
  • 我不认为你的问题太宽泛,所以暂时搁置。问题很明确;答案很简单。要么先创建所有表,然后再添加所有外键,要么首先创建所有没有外键的表,然后仅在已创建的表上迭代添加具有外键的表。如果存在循环引用,则必须先创建关联表,然后再添加外键。所以首先创建 all 表,然后再添加外键绝对是更简单的方法。

标签: sql database create-table


【解决方案1】:

先创建所有表,然后在创建所有表后进行所有外键约束。

创建具有正确 ORDER 约束的表,这样约束就不会失败。

来源:https://dba.stackexchange.com/questions/27614/how-are-foreign-keys-resolved-when-creating-tables-in-batch

【讨论】:

  • "创建具有正确 ORDER 约束的表,这样约束就不会失败。"他们在问他们如何确定正确的顺序是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多