这个造型有没有异常?
Is there any abnormality in this modeling?
我正在使用 table 来集中地址。 客户和供应商有地址参考。
A Customer 有一个 Address,一个 Address 可能关联也可能不关联一个 客户.
一个供应商有一个地址,一个地址可能与也可能不相关供应商.
为确保一个地址不与多个 客户 或 供应商 关联,我有一个 unique Customer 上的索引 和 Supplier tables 上的 AddressID 列.
我怀疑这种关系是不正常的,因为我无法使用 Entity-Framework 和 FluentAPI 来映射它。
编辑:
- 在我的真实场景中,地址 table 将有更多的列。
事实上,这是一种简化复杂场景的改编,其中
地址 table 是财务发布,table 的客户和
供应商代表财务发布的来源,例如
买卖。
您的模型似乎很合理。当你想加强一对一的关系时,拥有第二个 table 的好处可能对每个人来说都不明显。
我可以立即想到两个很好的理由:
- 您希望将地址放在一个地方,这样您就可以同等对待所有地址(比如对它们进行地理编码、标准化、提取特征)。
- 地址列很长,许多查询不需要它,因此您可以通过不将地址与其余数据一起存储来提高效率 ("vertical partitioning")。
而且可能还有其他原因。我无法解释为什么 EF 使这种关系难以表达。
在您当前的设计中,这不是 EF 问题,它本身不能阻止您将相同的地址分配给客户和供应商。如果您走这条路,您将全权负责通过模型中的业务规则和验证来强制执行此唯一性。
另一方面,除了 Linoff 在他的回答中指出的内容之外,模型设计的正确性(或不正确)取决于问题的性质以及对您的业务来说重要的是什么。例如,如果这是 Post Office 的应用程序,那么地址值得一个人 table,因为它将是您应用程序的核心概念之一。但如果不是,使用当前方法,您将增加模型的复杂性。
我正在使用 table 来集中地址。 客户和供应商有地址参考。
A Customer 有一个 Address,一个 Address 可能关联也可能不关联一个 客户.
一个供应商有一个地址,一个地址可能与也可能不相关供应商.
为确保一个地址不与多个 客户 或 供应商 关联,我有一个 unique Customer 上的索引 和 Supplier tables 上的 AddressID 列.
我怀疑这种关系是不正常的,因为我无法使用 Entity-Framework 和 FluentAPI 来映射它。
编辑:
- 在我的真实场景中,地址 table 将有更多的列。 事实上,这是一种简化复杂场景的改编,其中 地址 table 是财务发布,table 的客户和 供应商代表财务发布的来源,例如 买卖。
您的模型似乎很合理。当你想加强一对一的关系时,拥有第二个 table 的好处可能对每个人来说都不明显。
我可以立即想到两个很好的理由:
- 您希望将地址放在一个地方,这样您就可以同等对待所有地址(比如对它们进行地理编码、标准化、提取特征)。
- 地址列很长,许多查询不需要它,因此您可以通过不将地址与其余数据一起存储来提高效率 ("vertical partitioning")。
而且可能还有其他原因。我无法解释为什么 EF 使这种关系难以表达。
在您当前的设计中,这不是 EF 问题,它本身不能阻止您将相同的地址分配给客户和供应商。如果您走这条路,您将全权负责通过模型中的业务规则和验证来强制执行此唯一性。
另一方面,除了 Linoff 在他的回答中指出的内容之外,模型设计的正确性(或不正确)取决于问题的性质以及对您的业务来说重要的是什么。例如,如果这是 Post Office 的应用程序,那么地址值得一个人 table,因为它将是您应用程序的核心概念之一。但如果不是,使用当前方法,您将增加模型的复杂性。