用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4928|回复: 7
收起左侧

[数据库] 我要设计一个数据库,但是数据库表的字段个数不能确定,有什么办法可以实现?

[复制链接]
发表于 2011-11-30 17:46:26 | 显示全部楼层 |阅读模式
我要设计一个保存学生成绩的数据库系统,但是数据库表的字段包括学生的成绩类别,(例如:语文、数学等),但是科目个数不能确定,有什么办法可以实现呢? 因为流量大,所以效率要高,而且是多用户的,所以也要设计固定的表,会改变其他用户。我想到的办法是把通用的科目设计成字段,一些特别的字段全部保存在一个字段中,然后每对个成绩用“||”分割(例如:“美术=89||实验=70”),但是每次读得时候都要解析,保存的时候都要格式化,大侠们有没有什么好的办法呢?
发表于 2011-11-30 17:51:35 | 显示全部楼层
学生一个表,科目一个表,学生的成绩表是关联学生ID和科目ID。 不知道你是不是这个需求
 楼主| 发表于 2011-11-30 22:21:00 | 显示全部楼层
tecpenguin 发表于 2011-11-30 17:51
学生一个表,科目一个表,学生的成绩表是关联学生ID和科目ID。 不知道你是不是这个需求 ...

哦,我真笨,多对多就可以实现,呵呵,谢谢你。
 楼主| 发表于 2011-12-2 08:38:37 | 显示全部楼层
tecpenguin 发表于 2011-11-30 17:51
学生一个表,科目一个表,学生的成绩表是关联学生ID和科目ID。 不知道你是不是这个需求 ...

想了想,这个冗余数据太多了,我的数据量很大的。
我一学生大学总共学修差不多50-60门课,也就是说一个学生就要有50-60条记录,那我们学校有2万学生,那要多少啊。再说是个多用户的,其他学校也用啊,那个数据量不是几十万的。
把科目作为字段当然好,但是大学的科目不一定,总不能把所有的科目都弄成字段吧。
发表于 2011-12-2 16:45:32 | 显示全部楼层
你这个问题其实跟电子商务网站里面的商品分类问题差不多,多数都是通过Product和Product_Type两张表的主键关联来解决,50~60条记录拿不叫冗余数据,是关系数据库必须的代价,建议你还是按这个办法来,要是在一张学生表里面把所以科目的字段都加上,你还不如用MongoDB。以后上百万的数据量是走不掉的了,现在可以靠表分区等办法解决。像过往学期这样的成绩较少被访问,以后还可以用另外一个服务器来保存。百万级数据量建好索引,其实也没想得那么恐怖。
 楼主| 发表于 2011-12-3 14:23:20 | 显示全部楼层
五点晨曦 发表于 2011-12-2 16:45
你这个问题其实跟电子商务网站里面的商品分类问题差不多,多数都是通过Product和Product_Type两张表的主键 ...

好的,谢谢,我也考虑的,只有这个办法。
发表于 2011-12-3 23:45:24 CI中国手机版 | 显示全部楼层
考虑一下mongodb
发表于 2011-12-4 12:55:36 | 显示全部楼层
做成可以在后台添加字段的

本版积分规则