你这样设较好,可以扩展到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
那这样设
学生基本信息表 学号 姓名 年龄 (设了学号为主键)
考试项目表 科目序号 科目 (设科目为主键)
成绩表 ID 学号 科目序号 分数 考试时间 (ID为主键)这样设就更麻烦了,还是那个插入问题,怎么解决呢?
(我是菜鸟了,所以想知道详细一点,分我再加的)
学生基本信息表:学号(主键), 姓名, 年龄
成绩表 : aid(主键,自增变量), 学号,成绩,科目
时间表 : aid(主键,自增变量),时间最好不要用时间做为主键,同时科目和科目编号我觉得是一样吧,没必要用科目编号,毕竟你的科目数并不多。
学生基本信息表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