http://expert.csdn.net/Expert/topic/1923/1923316.xml?temp=.3946802

解决方案 »

  1.   

    这样的系统,实在太多了,以前团体做过一个,有点难用.
    可以用多个表,用join left进行链接的.
      

  2.   


    我想大家没有明确我的意思,请先看看下面的数据表在数据表中 值得注意的是 第一行 和 第一列 因为,他们是需要根据其他表的变动而变动,也就是他们都是灵活的。1.一个数据表中存放一次成绩,那么有很多班级,很多次成绩的话,这个将会造成数据库管理混乱(数据表过多,如果20个班级10次考试成绩就有200个数据表。),特别是当用户使用的是虚拟主机的时候,他仅有的一个数据库却要创建n多的表,本人就觉得难已管理,以及造成数据库混乱。2.如果将所有班级各次的成绩存放在一个数据库表中,这样一来,我们就很难确定数据表中固定的字段了。比如第一行中的学科,这个就很难搞定了
    班级不用的学生,他的考试科目个有不同,并且各个学生的考试科目都是根据成绩登录前,当前班级科目而定的。这样好难处理,唯一的做法就是将这个数据以班级为单位,创建成一个数组,存放在text字段里。但是这样以来呢,对以后学生成绩的数据分析很不利,也散失了数据库高效的查询效率。
    对此我感到很郁闷,不知道怎么设计好这个数据库?请赐教!!!谢谢/ 感谢您认真的阅读该贴以及您的答复。!!!————————————————————————————————————————————————————————————
    学号|姓名|语文|高数|工程数学|英语|电工|计算机组成原理|网络|VB|C语言程序设计|汇编语言|数据库|      .......  数据可增加
    2003061115|方海|-|-|7|465|797|77|99|797|7|797|8|    .......  数据可增加
    2003061116|罗静|-|-|-|87|97|7|7997|-|79|788|-|    .......  数据可增加
    2003061117|温华|-|-|-|78|68|7|-|8|9|8|89|    .......  数据可增加
    2003061118|曾英|-|-|-|-|78|797|979|-|9797|9|6|    .......  数据可增加
    2003061119|蔡蓉|45|546|46|656|678|68|686|67|76|767|76|    .......  数据可增加
                            .
                            .
                            .数
                            .据
                            .可
                            .增
                            .加
                            .
                            .
                            .
                            .
                            .
                            .
                            .————————————————————————————————————————————————————————————
      

  3.   

    可否用这种数据存放型式:
    当存放一个用户的资料时,特别是学科成绩时:sid:|sid:……的形式存入。另外有一张表专门用来存放学科名,因为学科是可以增加的,每一门学科有一个唯一sid;
    当要取出数据时,用explode把数据取出。
    只要两个表。一定还有更好的办法,只作参考。
      

  4.   

    科目用一个数据表,可以动态添加删除
    成绩一个数据表,ID KEMUID XMCJ:语文  张三 94 李四 90 小王 96
    然后查询的时候,把KEMUID=语文的全部查出,然后把XMCJ的值用空格分成数组
    不知道是否满足你的要求?
      

  5.   

    以前我做过一个(和同学打赌的时候做的)  关键就是,动态的修改表格结构...(修改的同时将修改记录对应起来就没问题了...)  例如:使用三张表   用户表: user   课程表: lesson   关系表: nexus   操作:          当我们新增课程:                  例如:  大学语文  (我们采用随机数作为该字段e.g. $nw=time()*rand(1,99))
                      在关系表中增加记录
                                  id -> 大学语文 -> $nw  可以看出我们保存了这个对应关系                  以后如果调用数据的时候先获取lesson各个字段名称,然后将名称与关系表中核对,寻找出名称
                       至于保存成绩我建议对用户建立个TEXT字段进行有规则的编码输入...
    ============================================================用户资料中保存成绩的就可能是
    --------------------------
    1|80|
    2|90|
    3|120|
    5|95|
    .....可增加 
    =================
    或(@2)方法
    1|2|3|5|关系表中则
    ----------
    1|大学语文|100020348|
    2|大学英语|100021300|
    3|大学书法|100021305|
    4|大学体育|100021400|
    5|高等数学|100021405|--------------------------课程表中则有可能是
    -----------------------
    +-------------------------------------------------------------------+
    +-[(@2)方法]uid-100020348--100021300--100021305--100021400-100021405-+
    +     1            80         40         120       150        110   +
    +     2            90        90           90        90         90   +
    +     3           100        100         100       100        100   +
    +     4           100        100         100       100        100   +
    +     5           120        120         120       120        120   +
    +-------------------------------------------------------------------+注:(@2)方法同步用户资料保存的(@2)方法,可并存使用
       使用:
       =====       作为管理:增加课程....(在课程表中增加一随机字段)
                  :在关系表中,增加此字段的中文说明以及该字段名称       作为操作:
                    通过关系表获得{中文名称,所初在关系表中的ID号,表字段号名称}   
                    通过交互界面给学生增加分数                更新学生资料,在得分数据中可以按方法一方式进行增加(缺点以后统计总分或总平均分的时候要麻烦点)                 若按方法2操作的话,则将用户的ID以及分数结合课程分数(已经提取了课程的字段名)添加进入课程表格的数据中          查看:
             ======
                     查看学生分数,若不是第一种方法的话,可以直接将用户分数提出显示                  若采用第二种方式的话,提取出用户资料内资料后,根据数据从关系表内选出课程字段名,然后从课程表内选择出用户ID的指定字段名称的数据(分数),根据关系表的对应关系可以正确显示出这些数据....
           以前我的就是这么做的,不过当时由于是打赌就仅仅把功能实现后就没怎么做了,现在连代码也没了~