Sql 如何确定从ERD创建表的顺序

Sql 如何确定从ERD创建表的顺序,sql,database,create-table,Sql,Database,Create Table,之后,我为每个表创建了数据字典,并制定了ERD。表的创建顺序应该是什么? 以下是该ERD的图片: 首先执行所有创建的表,然后在创建所有表后执行所有外键约束 或 以正确的顺序创建带有约束的表,以便约束不会失败 资料来源:最简单的方法是在创建所有表之后创建约束。请注意:我必须承认,我总是很难阅读这样的ERD。这个对吗?每个订单可以有多个订单行,其中可以包含多个产品,每个产品行可以有多个供应商。另一方面,供应商只能提供一种产品?嗯,这似乎是错误的。但反过来看似乎也是错误的。奇怪的是,所有的关系都是1:

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


首先执行所有创建的表,然后在创建所有表后执行所有外键约束


以正确的顺序创建带有约束的表,以便约束不会失败


资料来源:

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