qfly888 发表于 2011-11-30 17:46:26

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

我要设计一个保存学生成绩的数据库系统,但是数据库表的字段包括学生的成绩类别,(例如:语文、数学等),但是科目个数不能确定,有什么办法可以实现呢? 因为流量大,所以效率要高,而且是多用户的,所以也要设计固定的表,会改变其他用户。我想到的办法是把通用的科目设计成字段,一些特别的字段全部保存在一个字段中,然后每对个成绩用“||”分割(例如:“美术=89||实验=70”),但是每次读得时候都要解析,保存的时候都要格式化,大侠们有没有什么好的办法呢?

tecpenguin 发表于 2011-11-30 17:51:35

学生一个表,科目一个表,学生的成绩表是关联学生ID和科目ID。 不知道你是不是这个需求

qfly888 发表于 2011-11-30 22:21:00

tecpenguin 发表于 2011-11-30 17:51 static/image/common/back.gif
学生一个表,科目一个表,学生的成绩表是关联学生ID和科目ID。 不知道你是不是这个需求 ...

哦,我真笨,多对多就可以实现,呵呵,谢谢你。

qfly888 发表于 2011-12-2 08:38:37

tecpenguin 发表于 2011-11-30 17:51 static/image/common/back.gif
学生一个表,科目一个表,学生的成绩表是关联学生ID和科目ID。 不知道你是不是这个需求 ...

想了想,这个冗余数据太多了,我的数据量很大的。
我一学生大学总共学修差不多50-60门课,也就是说一个学生就要有50-60条记录,那我们学校有2万学生,那要多少啊。再说是个多用户的,其他学校也用啊,那个数据量不是几十万的。
把科目作为字段当然好,但是大学的科目不一定,总不能把所有的科目都弄成字段吧。

五点晨曦 发表于 2011-12-2 16:45:32

你这个问题其实跟电子商务网站里面的商品分类问题差不多,多数都是通过Product和Product_Type两张表的主键关联来解决,50~60条记录拿不叫冗余数据,是关系数据库必须的代价,建议你还是按这个办法来,要是在一张学生表里面把所以科目的字段都加上,你还不如用MongoDB。以后上百万的数据量是走不掉的了,现在可以靠表分区等办法解决。像过往学期这样的成绩较少被访问,以后还可以用另外一个服务器来保存。百万级数据量建好索引,其实也没想得那么恐怖。

qfly888 发表于 2011-12-3 14:23:20

五点晨曦 发表于 2011-12-2 16:45 static/image/common/back.gif
你这个问题其实跟电子商务网站里面的商品分类问题差不多,多数都是通过Product和Product_Type两张表的主键 ...

好的,谢谢,我也考虑的,只有这个办法。{:1_1:}

ciogao 发表于 2011-12-3 23:45:24

考虑一下mongodb

longjianghu 发表于 2011-12-4 12:55:36

做成可以在后台添加字段的
页: [1]
查看完整版本: 我要设计一个数据库,但是数据库表的字段个数不能确定,有什么办法可以实现?