日期:2014-05-20  浏览次数:20363 次

关于学籍管理的一个难题,如何设计表结构?
关于学籍管理的一个难题,如何设计表结构?

我有一个表,存储了各个不同的班级信息。同时每个班级有自己的日期安排表(一旦班级被添加完毕,则此班级起止日期被固定),用来给各个学生记名点到,但是我发觉这个表很不好设计。此表各个属性是设计成日期比较好呢,还是用学生名字来做属性(学生人数有可能随时添加)?   这样设计似乎牵涉到一个动态生成属性的问题,比较麻烦。但是如果拿日期做属性的话,同样也需要动态生成属性(比如自动生成2006.12.1-2007.1.30的每一个日期作为属性)。

相比较之下,后一种办法好一些。因为日期作为属性,学生名字作为内容,这样比较直观。但是在这种情况下,如何统计一个学生出勤率(因为是横向统计)。总不可能写成“   select   sum(属性12月1号+属性12月2号+…+属性1月29号+属性1月30号)   as   出勤次数   from   计算机一班

而且无论以上那种办法,都需要为每一个班级单独生成一个表,长此以往简直没法管理。如何将这些信息统一到一个表里?最好总共只生成一个表。

俺以为这是超级难题,请各位大大多指教,非常感谢!!

------解决方案--------------------
第一,其实此设计与数据库设计没太大关联主要是你对业务问题的理解和处理还不十分清楚。
第二,自己知道是设计难题的话,就只给30分,看来你也不看重设计。
第三,建议你使用一个班级管理表(班级为主键),另外一个是学生签到管理表。后表并不是设计不明确,而是业务问题不明确,你的系统是不是全天运行,是不是可以做夜间自动批处理,这些才是和你这个问题有关系的,是关联到设计的瓶颈。
------解决方案--------------------
什么都放一起当然麻烦了,3个表好了
1 班级信息表,保存班级时间,属性等
2 学生报名表,有学生信息及报的班级
3 班级成员签到表,此表只要存有效的班级(时间未过期的)成员的签到情况就好