一个实体关联的设计

我有一个关于学校考试成绩分析管理的设计,刚把领域对象抽象出来,不知道接下来如何设计有关领域模型和数据表,以及各个领域对象的关系,感觉这些对象在系统中都相互引用,怎样才能既避免重复冗余的关系,又能最优化系统,就是每个对象都需要包含哪些对象,哪些集合,例如不用在学校这个对象中既包括set<教师>,set<学生
>,set<……>这样吧,但是需求有必须知道一个对象能查到其他的对象。该如何定义他们的连接关系,有什么原则么,我想到一种原则,不是根据业务需求每个对象连线,连线的次数最少。比如查询教师每次考试班级的成绩,第1种教师连接到人事安排查到该教师所教的班级,再通过人事安排查到的班级继续查班级的考试。2,直接查考试,考试里有个教师的引用。3很多种途径。使用ssh2+shiro,非jpa。

领域对象包括:
学校:(名字等信息)
教师:
学生
教师组(校长,主任,管理员,普通教师)
组权限
学期
年级
班级
每学期人事安排(每学期每个班级,每个科目对应的教师)
学校科目(数语外等)
考试(那个年级,哪个科目的考试,使用学校那个分析规则,使用哪个ABCD等级规则)
考试规则ABCD等级(每次考试根据分数分析出ABCD等级)
考试规则学校规则(学校那个年级,那个学科,要求分数多少)
考试类型(省里考试,市里考试,学校考试,和***学校同考)

最后的需求就是不管给你什么条件(能查出结果的合格条件),都能查出来其他任何想要的信息。
1.
Public class School{
Set<Teacher> teacher;
Set<Student> student;
Set<Grade> grade;
Set<Classrom> classrom;
}

---------------------------------------------------------------------
2.
Public class School{
Set<Teacher> teacher;
}
Public class Teacher{
Set<Student> student;
Set<Grade> grade;
Set<Classrom> classrom;

}
---------------------------------------------------------------------
3.
Public class School{
Set<Grade> grade;
}
Public class Grade{
Set<Classrom> classrom;
Set<Teacher> teacher;
}


Public class Teacher{
Set<Student> student;
}

山不在高,有仙则灵。
Jdon,论坛界面不美,有banq 则灵。

2012-11-08 15:47 "@tianshu"的内容
感觉这些对象在系统中都相互引用,怎样才能既避免重复冗余的关系 ...

主要根据业务写操作来设计聚合根,从而以聚合根为中心团结这些对象,这些对象都可以通过聚合根找到彼此。

聚合根,我似乎明白了,多谢指点!