在sql中添加表之间关系的最佳方法
我有四张桌子:公司、子公司、表格和货物 每个公司包含多个子公司,每个子公司包含表单 每一张表格都包含货物 我需要查询以获取公司的fomrs、子公司的表格、公司的货物、子公司的货物 我的问题是哪种关系更好?我选择第二种关系,因为我认为它更容易查询,也更快在sql中添加表之间关系的最佳方法,sql,database,Sql,Database,我有四张桌子:公司、子公司、表格和货物 每个公司包含多个子公司,每个子公司包含表单 每一张表格都包含货物 我需要查询以获取公司的fomrs、子公司的表格、公司的货物、子公司的货物 我的问题是哪种关系更好?我选择第二种关系,因为我认为它更容易查询,也更快 仅添加之间的关系 公司---->子公司---->表格---->货物 添加公司和所有三个表之间的关系、子公司和其他两个表之间的关系以及表单和货物之间的关系。 似乎表单和货物有一个组合关联,而子公司和表单也有一个组合关联,因此它们之间应该存在一对
似乎
表单
和货物
有一个组合关联,而子公司
和表单
也有一个组合关联,因此它们之间应该存在一对多关系。
到目前为止,您的头号设计似乎更好,但问题是公司
和表单
之间的关系是什么?如果子公司
可以有表格,那么公司
也可以有表格
吗?(拥有表格
是公司
或其子公司
?)如果公司
本身不能拥有表格
,那么数字1似乎是一个合理的设计,但如果可以,那么你应该对其进行一些更改,比如:
Company has a one to many self relation (Sub Company)
Company has a one to many relation with Form
Form has a one to many relation with Cargo
在这种设计中,
子公司
没有单独的实体,每个拥有母公司的公司
都是该公司的子公司第一个更好。第二个包含冗余信息,这通常是一件坏事,尽管有时这种非规范化是在速度确实需要时进行的,但您可能不需要它。一个普通的数据库没有3个连接的问题。如果有,则在保持关系正常化的同时,以其他方式进行改进。不,一家公司不能有表单,但有很多公司每10秒都会收到其子公司表单的报告,因此我决定在公司和表单之间添加一个关系,以便更快地向公司查询和显示子公司的表单,但似乎我错了也许你最好有一个视图,根据子公司显示每个公司的每个表格。