您好,我们 demo 里的学生表和成绩表分开设计我觉得是没问题的。
从需求实现来讲,需要做行转列,需要点击成绩能够弹出修改页面或者支持直接修改(修改的是成绩表的内容)。
目前实现的方式不唯一。
1、写 SQL 视图做行列专列,用表格做展示,成绩可以在页面表格上增加编辑按钮弹出页面进行编辑。您 demo 里使用是多次关联做的行专列,也可以考虑使用 case when 类似于:
SELECT
userid,
SUM( CASE subjectName WHEN '语文' THEN score ELSE 0 END ) '语文',
SUM( CASE subjectName WHEN '数学' THEN score ELSE 0 END ) '数学',
SUM( CASE subjectName WHEN '英语' THEN score ELSE 0 END ) '英语',
SUM( CASE subjectName WHEN '政治' THEN score ELSE 0 END ) '政治'
FROM
tb_score
GROUP BY
userid;
2、在成绩表设置关联到学生表,然后用数据透视表或者表格报表做展示,数据透视表支持直接填报和设置点击事件,表格报表也支持直接填报。用这两个组件我们需求也是可以实现的。
然后从性能考虑上来讲,目前来看,性能的问题最主要原因是因为我们的数据量比较大,这个和我们的实现方案无关。
如果不是一定要一次性把所有数据展示出来,页面展示可以不用展示全量数据,比如按照年纪、学校去做过滤,或者做分页,即每次展示部分数据,就可以解决数据量大带来的性能问题。另外我们可以给数据表过滤的字段和关联的字段创建索引,也能解决部分性能问题。
|