我有两个表,Class和Student,它们具有一对多的关系。添加一个Class很简单,因为我只需要为Class和多个Student提供基本数据,并且删除更容易。
但是当我想要更新一个类时,就会出现问题。对于更新,除了Class本身的已更改属性外,还可能会对Student进行添加,修改和删除等操作。我应该如何组织数据以提供所有可能的信息以进行适当的更新?
在互联网上搜索后,我得到了解决上述问题的解决方案:将删除与添加模拟更新相结合。这确实有效,也很简单。但经常添加和删除记录可能会导致两个问题:自动增量主键的效率低下和大小限制。
所以我想知道是否有更好(或典型)的方法来解决我的问题?或者如果采用上述解决方案,如何避免副作用,尤其是自动增量主键的大小限制?
非常感谢!
答案 0 :(得分:0)
在典型的应用程序中,您不能一次更新课程及其学生。您更新课程,或添加学生,或删除学生,但不是一次更新所有内容。
即使您必须这样做,解决方案也将取决于您的应用程序的体系结构,用于访问数据库的框架等,因此很难给出确定的答案。例如,使用JPA或Hibernate,您可以修改整个对象树,并将其合并,一切都将自动处理。
如果你必须自己做,你可以简单地发送更新的课程与更新的学生。您首先要更新班级自己的信息。然后循环给学生并更新他们自己的信息。然后查看哪些学生目前在班级(在数据库中),哪些学生在已发送的学生中,并删除那些已经消失的学生。
在大多数情况下,删除学生并重新创建它们不是一种选择,不是因为它效率低下,或者因为你会耗尽ID(长到2 ^ 63,这是巨大的),但因为你可能有其他表forign键指向学生更新。