我有这方面的关系:的SQLite/C#:设计一个实体,是许多家长实体的孩子
1 Period has N Documents
1 Pupil has N Documents
1 Report has N Documents
这是我的C#实体:
class Period
{
public int PeriodId {get;set;}
public List<Document> Documents {get;private set;}
}
class Pupil
{
public int PupilId {get;set;}
public List<Document> Documents {get;private set;}
}
class Period
{
public int ReportId {get;set;}
public List<Document> Documents {get;private set;}
}
class Document
{
public int DocumentId {get;set;}
// ???
public int PeriodId {get;set;}
public int PupilId {get;set;}
public int ReportId {get;set;}
// ??? OR just a general Foreign-Key Id like
public int Id_FK {get;set;}
}
问题是这样的:
当我有PeriodId 33的文档时,有机会我也可以有一个PupilId 33,因为这两个表都使用主键/自动增量。所以可能会有一个学生和一个有Id 33的时期。现在做两个表上的INNER JOIN我会从我的sqlite查询中返回2个文档,但我应该只能得到ONE。
你会如何解决这个问题?
马丁实际上单个文档只能属于一个时期。无法将相同的文档ID添加到另一个实体。我甚至会说这不需要,因为一个时期有一个独特的内容。我认为我不需要两次添加相同的“数学表”,因为我不会每年教一次相同的课。这没有意义。 – Elisabeth 2010-11-25 20:06:54