想请教一个有关 MySQL 表关联设计得问题,

 目前在项目遇到一个Mysql表关联设计得问题,我举个例子,很多地区(agent),有很多学校(school) ,有很多年级(grade),有很多学生(students),有很多学科(subjects),每一个学生学习的科目不同(students_subject),每一科都有成绩(achievement),学校也能搬迁,学生可能转学校,年级也在变动,学习的科目也在变动
  现在要求:
          1 按区域展示并统计学校和学校学生
          2 按区域年级展示并统计学生
          3 按学科展示并统计学生成绩
          4 按学校年级学科展示并统计学生成绩
          5 按区域年级学科展示并统计学生成绩 
 这个表的关联关系的怎么建立呢   到底是建立各种中间表?   还是直接将地区 学校  年级  冗余到学生表  学科表和成绩表呢?    数据量大  而且查询统计频繁  统计的种类繁多    我倾向于把关键字段冗余 ,想听听大神的指导意见
那是一个传奇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 6

级别不够, 看不明白, 以示敬意 :+1:

4年前 评论

感觉总要的数据还是在学生表中,
我想到的建立的表是这样子的,
区域表、学校表(有区域的ID)、学科表、学生表(学校,年级、学科)、学生成绩表(学校、学生、年级、学科、成绩)。
因为有成绩表,大一的成绩记录已经有了,到了大二换学科了(即使学科不换年级也换了),又一条新的年级新的学科新的成绩,
如果转校,转校记录的话,可以单独来一张转校记录表,

4年前 评论
moder

考虑建立中间表,表达实体对象之间的关系,过分冗余字段只能让数据操作不方便。

4年前 评论

@liaohui5 这只是模拟场景 真是场景可能比这个复杂一点

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!