繁体   English   中英

将复杂对象列表插入数据库

[英]Inserting a list of complex objects to the database

在我的应用程序中,我将具有一些要插入数据库的复杂对象的列表。
该列表是附加到用户的,因此我考虑将一个包含ID列表的列添加到Users表,然后让该应用使用ID列表将该列表转换回复杂的对象。

例如; 用户具有3个Subjects ID: "2,3,23"
每个subject都有名称,年级等。

在运行时,该应用将遍历每个ID并从数据库中获取其属性,并将完整的主题添加到列表中。

问题是,说实话,听起来效率很低。
因此,我的问题是; 有没有办法更有效地做到这一点?

这样做的通常方法是为主题创建一个单独的表,并且该表具有一个UserID,该ID是返回拥有用户记录的外键。

这样一来,您就不必为编辑逗号分隔的字符串而烦恼了。 它还允许您定义一个外键约束(只要您的数据库可以这样做),这将阻止您插入User表中不存在的UserID的Subjects记录。

要为用户加载主题,您只需使用用户ID从主题表中检索所有记录即可。

如果多对多关系更合适,其中一个用户可以链接到许多主题,而一个主题可以链接到可能的用户,那么您将使用一个联接表,即UserSubjectJoin,其中包含每个UserID和SubjectID配对。 同样,这可能会有约束,以确保ID必须存在于“用户”和“主题”表中。

在这种情况下,您需要将UserSubjectJoin表联接到Subjects表,以检索您指定的UserID的所有Subjects记录。

要完全回答您的问题,这将更有效率,因为您不必在Users表中维护一列字符串,只需在Subjects表中添加/删除行,并且关联会自动更新。

而且,如果您实际上存在多对多关系,那么在您的初始设计下,您还需要在“主题”表上有一列UserID,这会使维护增加一倍,并且有出错的风险。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM