M:N在OOP中是不好的风格?是否有更好的管理m:n关系?

时间:2017-07-02 00:49:12

标签: java android oop object relationship

我必须编写一个Android应用程序,我问自己是否有更好的方法来设计我的应用程序。

我的问题:我必须创建包含Person的组。在我的第一个活动中,我想要显示Person所属的所有组。当我点击某个组时,我想要显示属于该组的所有人员。

问题:我需要M:N关系吗?这是一个糟糕的设计,是他们设计应用程序的更好的想法吗?

public class Person {
private List<Group> allGroups
}


public Group {
private List<Person> allGroupMembers
}

我已经搜索了大约30分钟,但找不到我的问题的答案。

我期待着你的帮助。

2 个答案:

答案 0 :(得分:0)

您应该创建三个类:

public class Person {
private int id_person; (primary key)
....
}


public class Group {
private int id_group; (primary key)
......
}

public class PersonGroup {
private int id_person_group (primary key)
private int id_person
private int id_group
....
}

PersonGroupe代表人与群体之间的关系。

因此,如果一个人A存在于Groupe X中,那么你应该有一个PersonGroup Class的实例

因此,如果你想得到所有人,那么人X就是其中的一部分。你使用这个查询(

Select * from Group
Join PersonGroupe on PersonGroupe.id_group = Group.id_group
where PersonGroupe.id_person = X.id_person (id_person of X)

如果你想让Groupe Y所有人参与其中:

Select * from Person
Join PersonGroupe on PersonGroupe.id_person = Person.id_person
where Groupe.id_group = Y.id_group (id_group of Y)

答案 1 :(得分:0)

在每个班级或单独的JOIN课程中使用子列表是一个观点问题。

每个类中使用List解决的最大问题是循环依赖。