我有這方面的關係:的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