这可能会被删除,因为涉及堆栈溢出中不太允许的想法共享,但在此之前,如果我能从可靠的程序员那里得到任何想法,这对我来说将是一个双赢的局面
假设您有一个Student类,存储在数据库中,并且该类有一个名为favoriteTeachers的列表属性。该列表不断被系统更新,并涉及教师的 ID。
您还有一个类Teacher,也存储在数据库中,同样有一个列表属性favouriteStudents。它再次不断更新并涉及学生的身份。
在我们的系统中,当学生调用一个函数(比如notMyFavoriteTeacher)时,我们的系统必须应用以下更改;
- 从 favouriteTeacher 列表中删除给定教师的 id
- 从给定老师的 favouriteStudent 列表中删除学生的 id
我试图考虑更新的行数可能会耗尽数据库,因此我没有将学生与他们最喜欢的老师映射到单独的表中作为user_id,teacher_id,而是创建了一个列并存储了一个包含教师 id 分隔的字符串逗号。(例如:“1,2,14,4,25”)。同样适用于老师。
然而,当我们调用这个函数时,我们也面临另一个问题。为了完成此操作,您需要将字符串转换为列表,通过线性搜索找到元素,然后删除,然后将列表转换为字符串并推送回 db。您还必须为教师类执行其他操作。如果我们不应用 string 方法,删除会更容易,但由于我们每天要处理 2k 次左右的删除和添加操作,我认为使用单独的表是不可行的。
我想问一下,为了减少操作的数量,可以选择一种数据结构来提高效率吗?