我有一个交易表,每笔交易涉及 5-6 个联系人。每个联系人都有相同的字段,如姓名、地址、单元格、电子邮件等。
所以我猜最好的办法是使用同一个联系表并将其与事务表关联 5 次。所以我不需要制作同一种表 5 次。
当我与实体框架连接时,问题就开始了,这只需要一个关系。
我的问题是我应该为每种联系人类型制作 6 个联系人副本,还是我会更好地使用 6 个连接表(一个只有 2 个 id 的表,所以我可以进行连接)?
我认为这是一个非常普遍的问题,但我找不到明确的信息最好的方法是什么。
编辑:
我有一个交易表,每笔交易涉及 5-6 个联系人。每个联系人都有相同的字段,如姓名、地址、单元格、电子邮件等。
所以我猜最好的办法是使用同一个联系表并将其与事务表关联 5 次。所以我不需要制作同一种表 5 次。
当我与实体框架连接时,问题就开始了,这只需要一个关系。
我的问题是我应该为每种联系人类型制作 6 个联系人副本,还是我会更好地使用 6 个连接表(一个只有 2 个 id 的表,所以我可以进行连接)?
我认为这是一个非常普遍的问题,但我找不到明确的信息最好的方法是什么。
编辑:
最好的办法是规范化表格。创建一个contact_type 表,其中包含每个联系人类型的记录。然后创建一个contact_type_xref 联结表,其中包含来自contact 表的标识符和来自contact_type 表的标识符。然后将与每个联系人关联的联系人类型加载到contact_type_xref中,并从联系人中删除重复的联系人记录。这是一个例子:。一旦你修复了数据库设计,你就可以解决实体框架问题(它可能会消失)。
首先,它有点垃圾框架,不承认实体类型之间的多重关系!
如果您有这么多外键,那么将来您可能会拥有更多(或更少)的外键。解决方案@Wil details 将允许您在不更改架构的情况下实现这一目标。
一种可能会欺骗您的框架的解决方法是在数据库中为您的每种联系人类型定义视图,并定义从事务到视图的框架关系。例如
可能会或可能不会工作,这取决于您的框架与数据库的交互方式。