如果这样设
学生基本信息表:学号 姓名 年龄               (设了学号为主键)
学生成绩表:    ID 学号 语文 数学 考试日期   (设ID为主键)如果我现在要输入这次2003-6-1的考试成绩,我又应该怎么样去插入?

解决方案 »

  1.   

    楼上的有点道理
    那这样设
    学生基本信息表  学号 姓名 年龄                 (设了学号为主键)
    考试项目表      科目序号 科目                  (设科目为主键) 
    成绩表          ID 学号 科目序号 分数 考试时间 (ID为主键)这样设就更麻烦了,还是那个插入问题,怎么解决呢?
    (我是菜鸟了,所以想知道详细一点,分我再加的)
      

  2.   

    个人意见:
    学生基本信息表:学号(主键), 姓名, 年龄                 
    成绩表 :         aid(主键,自增变量), 学号,成绩,科目 
    时间表 :         aid(主键,自增变量),时间最好不要用时间做为主键,同时科目和科目编号我觉得是一样吧,没必要用科目编号,毕竟你的科目数并不多。
      

  3.   

    你这样设较好,可以扩展到N个科目,N次考试:
    学生基本信息表S  学号 姓名 年龄                 (设了学号为主键)
    考试项目表C      科目序号 科目                  (设科目为主键) 
    成绩表G          ID 学号 科目序号 分数 考试时间 (ID为主键,自增型)要输入这次2003-6-1的考试成绩,我又应该怎么样去插入?这个问题我怪.
    假定你有这样的考试成绩输入表
    T(学号,语文,数学)
    可以这样做:
    Insert G(学号,科目序号,分数,考试时间)
    Select * From ( 
      Select 学号,
             科目序号=(Select 科目序号 From C Where 科目='语文'),
             分数=语文,
             考试时间='2003-6-1'
      From T Where 语文 Is not Null
      union
      Select 学号,
             科目序号=(Select 科目序号 From C Where 科目='数学'),
             分数=数学,
             考试时间='2003-6-1'
      From T Where 数学 Is not Null
      ) Tmp
      

  4.   

    考试项目表C      科目序号 科目     (设科目为主键)---> 设科目序号为主键