【发布时间】:2014-07-06 23:42:00
【问题描述】:
我有一个具有 ClientName 属性的 Clients 表,该属性也是主键。
我有一个 Iterations 表,它有一个指向 ClientName 的外键和另一个名为 IterationId 的属性。 (ClientName, IterationId) 对是该表的主键。
必须存在第三个表,具有以下特征:
- ClientName 的外键,不可为空。
- IterationId,它是一个可为空的属性,应该是 Iterations 表的外键。
由于要求 2 还暗示使用 Iterations 表的 ClientName 属性的外键,所以第三个表应该至少有 3 个属性,即 (ClientName1, ClientName2, IterationId),其中 ClientName1 是Clients 表和 (ClientName2, IterationId) 是 Iterations 表的外键。此外,我需要始终保证 ClientName1 == ClientName2。
是否有适当的方法对这 3 个表进行建模以保证刚才描述的所有要求?
编辑: 在面向对象的世界中,我可以很容易地用以下方式建模:
public class Client{
public List<Iteration> Iterations;
public List<Entity3> ListOfEntity3;
}
public class Iteration{
public List<Entity3> ListOfEntity3;
[NotNull]
public Client ClientReference;
}
public class Entity3 {
[NotNull]
public Client ClientReference;
public Iteration IterationReference;//this can be null.
}
对于 Entity3 的每个实例 I,如果 I.IterationReference!=null 则 I.IterationReference.ClientReference == I.ClientReference。
我如何在关系世界中实现这一目标?
【问题讨论】:
标签: sql sql-server database entity-framework relational-database