0

我有两个表,Class 和 Student,它们是一对多的关系。添加一个班级很简单,因为我只需要为一个班级和多个学生提供必要的数据,并且删除更容易。

但是当我想更新一个类时,问题就来了。更新方面,除了Class本身的属性发生变化外,还有可能对Student进行增、改、删等动作。我应该如何组织数据以提供所有潜在信息以进行适当的更新?

在网上搜索后,我得到了解决上述问题的解决方案:将删除与添加结合起来模拟更新。这确实有效,而且非常简单。但是频繁的添加和删除记录可能会导致两个问题:自增主键的低效和大小限制。

所以我想知道有没有更好(或典型)的方法来解决我的问题?或者如果我采用上述解决方案,如何避免副作用,特别是自增主键的大小限制?

非常感谢!

4

1 回答 1

0

在典型的应用程序中,您不会一次性更新班级及其学生。您更新课程、添加学生或删除学生,但不是一次完成所有操作。

即使您必须这样做,解决方案也将取决于您的应用程序的架构,用于访问数据库的框架等,因此很难给出明确的答案。例如,使用 JPA 或 Hibernate,您可以修改整个对象树并将其合并,一切都会自动处理。

如果您必须自己做,您可以简单地将更新的课程与更新的学生一起发送。您将首先更新班级自己的信息。然后循环给学生并更新他们自己的信息。然后查看当前班上(数据库中)有哪些学生,发送的学生中有哪些,把已经消失的去掉。

大多数情况下,删除学生并重新创建它们不是一种选择,不是因为它效率低下或因为您会耗尽 ID(长到 2^63,这是巨大的),而是因为您可能有其他表带有外键指向给学生更新。

于 2012-12-01T15:23:40.580 回答