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

 目前在项目遇到一个Mysql表关联设计得问题,我举个例子,很多地区(agent),有很多学校(school) ,有很多年级(grade),有很多学生(students),有很多学科(subjects),每一个学生学习的科目不同(students_subject),每一科都有成绩(achievement),学校也能搬迁,学生可能转学校,年级也在变动,学习的科目也在变动
  现在要求:
          1 按区域展示并统计学校和学校学生
          2 按区域年级展示并统计学生
          3 按学科展示并统计学生成绩
          4 按学校年级学科展示并统计学生成绩
          5 按区域年级学科展示并统计学生成绩 
 这个表的关联关系的怎么建立呢   到底是建立各种中间表?   还是直接将地区 学校  年级  冗余到学生表  学科表和成绩表呢?    数据量大  而且查询统计频繁  统计的种类繁多    我倾向于把关键字段冗余 ,想听听大神的指导意见
那是一个传奇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 6

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

4年前 评论

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

4年前 评论
moder

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

4年前 评论

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

4年前 评论

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