Сначала определите свой ERD для SQLite, а после этого все правильно, затем вы можете выполнить объектно-реляционное отображение в C #. У вас есть четыре основных объекта, для каждого из которых требуется таблица в SQLite: Документ, Ученик, Период, Отчет. И тогда вам нужен способ выразить тот факт, что каждая сущность (строка) в каждой из этих трех таблиц может быть связана с одним или несколькими документами. Как сказал Мартин, это делается с помощью таблицы соединений "junction".
Теперь, в C #, если вы хотите иметь денормализованный объект с именем Document, вы можете сделать это:
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;}
}
только если документ может быть связан с одним и только одним Периодом, одним и только одним Учеником и одним и только одним Отчетом. Если документ может быть связан с более чем одной из этих сущностей, эти свойства вашего класса Document должны будут учитывать несколько значений, то есть они должны быть массивами или списками.