Database 如果DB包含表上的视图,是否需要更改类图?

Database 如果DB包含表上的视图,是否需要更改类图?,database,oop,dao,class-diagram,Database,Oop,Dao,Class Diagram,我是设计类图的新手。我在设计中遵循DAO模式 在我的项目中,一个用户可以添加多个联系人,这些联系人可以进一步添加到多个组中 比如说1个联系人->多个组。 根据我的要求,UserContact和UserGroup是管理联系人和组的类 在数据库中,联系人和组存储在两个不同的表中 有一个用例可以检索所有联系人及其组,因此我需要首先检索所有联系人,然后再次使用contactID,我需要进行查询以获取其相对组。为了避免在DB中出现这种情况,这两个表上都有视图。 现在,对于VIEW,我需要进行一次查询以获取

我是设计类图的新手。我在设计中遵循DAO模式

在我的项目中,一个用户可以添加多个联系人,这些联系人可以进一步添加到多个组中

比如说1个联系人->多个组。 根据我的要求,UserContact和UserGroup是管理联系人和组的类

在数据库中,联系人和组存储在两个不同的表中

有一个用例可以检索所有联系人及其组,因此我需要首先检索所有联系人,然后再次使用contactID,我需要进行查询以获取其相对组。为了避免在DB中出现这种情况,这两个表上都有视图。 现在,对于VIEW,我需要进行一次查询以获取用户联系人和组

如何在DAO中添加此方法? 如何更改我的类,以便联系人和组可以映射到我的对象? 以下是本用例中涉及的类。
如果我正确理解了问题;您可以创建一个只具有查询(get)方法的
GroupContactDAOImpl
类,例如
getGroupContacts(groupId)
getAllGroupContacts()
。由于“组联系人”不是一个有自己表的实体,
UserContactDAOImpl.addContact
UserGroupDAOImpl.addGroup
方法足以添加新记录

如果需要获取与一个联系人关联的组,如何将联系人信息和组映射到一个对象

如果要将联系人信息和组映射到一个对象,可以将
UserGroup
属性添加到
UserContact
类(如中)。然后
GroupContactDAOImpl
将有如下方法:
UserContact-getUserContactWithGroups(contactID)

同样,如果你想获得一个组的所有联系人的信息;您可以将
UserContact
属性添加到
UserGroup
类中
GroupContactDAOImpl
将有如下方法:
UserGroup getUserGroupWithContacts(groupID)

可能还有其他方法可以做同样的事情;希望这有帮助


因为我需要使用UserContact插入和更新联系人,所以它应该只包含contactID、电子邮件和姓名。我使用UserContact和UserGroup作为DTO。我可以创建一个新类来保存UserContact和使用UserContactDAOImpl的UserGroup吗?这是一种更好的方法吗


是的,如果您想让
UserContact
类保持原样,可以这样做。您将拥有一个新的DTO(例如
UserContactWithGroups
),并从
UserContactDAOImpl
返回它(例如
getContactWithGroups
方法)。您还可以创建一个单独的DAO类,但这并不重要。最好将其适应您自己的用例。

谢谢您的回复。如果我需要获取与一个联系人关联的组,如何将联系人信息和组映射到一个对象?因为我需要使用UserContact插入和更新联系人,所以它应该只包含contactID、电子邮件和姓名。我使用UserContact和UserGroup作为DTO。我可以创建一个新类来保存UserContact和使用UserContactDAOImpl的UserGroup吗?这是一种更好的方法吗?它对我有帮助。非常感谢。@satyanarayana那么你可能会接受亨金尼的回答来奖励你的努力(也许你也会投票……;o)