mysql数据库结构如何设计?

小弟要做一个东西,记录各种数据
我举例一下:
记录全国学校学生的一些情况,要统计全国的所有学校,就北京小学举例,首先要记录北京小学的建立时间,校长名字,校园地址,学校总人数, 另外,要记录每个年级的同学情况,比如5年级,那么 需要记录5年级每天学生迟到人数,旷课人数,请假人数,[这个数据要每天都按时记录], 另外,要不定时的记录 同学X活动时间,Y活动时间[这些活动不是定时开始的,是随情况变化的,所以可能某天只记录一条数据,某天可能要记录上百 上千 条]

需求大概如此,可能我说的有点乱,我大概设计了下数据库的结构,请大家帮我看看 是否可以优化

data

如果这样设计表名,我打开mysql数据库管理器,就看到一大串以【ALL_北京小学_1年级_活动情况】
这样的格式命名的表,感觉看上去好复杂

当我需要查询,北京小学一年级活动情况的时候我需要:
【select * from ALL_北京小学_1年级_活动情况
总感觉太复杂了

不知道我设计的这个是不是正确,是不是哪里需要优化,请高人指点,谢谢了

另外 求高手回答我这个问题

http://luexiao.com/#!/questions/108434/p108721

4 个回答

其实做数据库设计很简单:
第一步:通过需要实现功能抽象出你会用到的所有实体信息,一个实体信息就是一张表。按照你的想法,大概可以猜出你要实现的主要功能,你在设计的时候考虑欠佳---比如你没有考虑到有些学校可能不是一个年级只有一个班级,可能一个年级会有多个班级,而每一个班级都有班主任和班长。这样灵活性就很不好。
第二步:考虑这些实体之间的关系,比如年级信息和学校信息之间的关联、班级信息与年级信息的关联、考勤信息与班级信息的关联、考勤信息与年级之间的关联等等
*注意:在设计数据库的时候最好全部采用英文命名,并且要考虑冗余问题,最大程度的减少数据库读写操作的压力,特别是当数据库中表数据达到一定大的时候(比如一张表的数据有1G,也就是一张表有大概1500W条数据的时候如何优化)
最后根据你的需求,我帮你设计了一个数据字典,仅供参考:
001
002
003
004
005
这样的设计,不仅可以供现在段使用,在以后想扩充功能的时候也很灵活。