在学校管理系统中,我们需要合并每个学生每个科目的 3 个学期成绩。
经过讨论,我想出了两个解决方案。
解决方案一
为每个学期创建 3 个表。 (gradeSemester1, gradeSemester2, gradeSemester3)
方案二
创建 1 个名为 semesterGrades 的表,并使用一个类型处理所有 3 个学期。
解决方案 1 的原因是停止数据复制。例如,如果一个学生有 8 个科目。这在一个表中只能包含 8 条记录,而在解决方案 2 中,它最多可以包含一个学生的 24 条记录。
当性能成为主要问题时,最佳解决方案是什么?为什么解决方案 2 更好?
最佳答案
您不想根据数据更改数据库结构,因此每当您需要新学期时创建一个新表是糟糕的设计。 您只需要一张额外的表来存储成绩。但是,我个人不会将它们存储在列中,而是存储在行中以更加灵活(也许有一天您想要的不仅仅是 3 个学期的成绩)。
表格看起来像这样:
ID | StudentID | SemesterID | SubjectID | Grade
这种方法的另一个优点是您知道某个年级属于哪个学期。如果你有 3 列成绩,你只知道成绩但你不知道学期的信息(我猜如果需要的话他可能需要超过 3 个学期)。
此外,我不会担心这种方法的性能。您必须将表连接在一起,但设置正确的索引应该不是问题。
关于php - 连接3张表是1张表性能MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21289254/