您的位置:首页 > 理论基础 > 数据结构算法

表之间关系,如何实现?

2010-10-02 11:27 169 查看
成绩表:
  学号 姓名 语文 数学 物理 总分
----—— ---- ---- ---- ---- ———
210801051 李四 74 84 94  
210801052 张三 74 83 93

学生表:
学号 姓名 性别 所在系 备注
----—— ---- ---- ---- ----
210801051 李四 男 计科 无
210801052 张三 男 计科 无

课程表:
编号 课程名 课时 学分 备注
---- ---- ---- ---- ----
1 数学 48 2  
2 英语 48 2

其中成绩表里面的学号,姓名是学生表里面的。
课程名是课程表里面的。
问题:
当学生表增加学生,或者课程表增加课程的时候,
成绩表如何自动增加呢?
不同意1楼和2楼的说法,触发器不是这样用的

楼主的数据结构设计就有问题,
其实不存在你所谓的"成绩表"
无论是增加学生还是增加课程科目,没有发生过的考试,成绩都是null,不能当做0分
而从数据结构上说,这样的null是业务逻辑,又不是硬生生塞入数据库的,

事实上用户的数据结构应该是:考试成绩明细表,结构如下:
1.考试成绩明细Id(主键)
2.学生Id(外键)
3.课程科目Id(外键)
4.考试成绩
5.考试时间

输出的时候,根据各表联合查询并将各科目行专列交叉输出

所以,楼主问题的实质是:合理的设计数据结构,然后用恰当的查询输出

而不是多步操作,更不需要触发器这样的系统事务来处理

差不多是这样,
不过,一般实体字段不会在数据库中多次出现,都是通过Id以外键的方式映射的,
楼主你还是买本数据库设计的入门资料看看吧,
你连最基本的关系型数据库的知识都没有,现在学校都不教这些吗?那他们教什么呢?

学号是肯定应该出现在成绩表中的,而且课程编号应该在成绩表中而不是课程名称,成绩表中应该是双主键,有这些主键了用不用ID都可以,还有你要实现的功能就应该是用触发器,很简单的,多看看书,就几条语句,具体格式我给忘了,但表的关系肯定没问题

差不多是这样,
不过,一般实体字段不会在数据库中多次出现,都是通过Id以外键的方式映射的,
楼主你还是买本数据库设计的入门资料看看吧,
你连最基本的关系型数据库的知识都没有,现在学校都不教这些吗?那他们教什么呢?
[/Quote]
刚刚开数据库这门口的,很多都不会的,还请谅解呀,呵呵!行转列有点难哦,

那用触发器可以吗?是不是简单点呢,谢谢!

来源:足球直播
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐