CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

怎么存储课表?

楼主jaidy(骑士)2004-05-02 17:29:51 在 MS-SQL Server / 基础类 提问

就是平常学校使用的课表:  
          星期一   星期二   星期三   星期四   星期五  
  1       语文         数学       英语       政治       地理  
  2       ...  
  3  
  4  
  5  
   
  这样的结构怎么存储在sql   server2000的表里面?  
  我要存储很多班级的课表,总不能每个班用一张表把? 问题点数:100、回复次数:14Top

1 楼zjcxc(邹建)回复于 2004-05-02 17:51:29 得分 20

班级编号     星期     第几节     课程名Top

2 楼zjcxc(邹建)回复于 2004-05-02 17:53:09 得分 0

--显示的时候就用交叉表  
  declare   @s   varchar(80000)  
  set   @s=''  
  select   @s=@s+',['+星期+']=max(case   星期   when   '''+星期+'''   then   课程名   else   ''''   end)'  
  from   课程表  
  group   by   星期  
  exec('select   班级,第几节'+@s+'   from   课程表  
  group   by   班级,第几节')  
  Top

3 楼jaidy(骑士)回复于 2004-05-02 18:16:52 得分 0

C#语言怎么写?  
  vb看不懂的说:(  
  Top

4 楼carl2004(忧昙)回复于 2004-05-02 18:22:56 得分 80

一般学样里的课程表不是这么简单的,一门课有可能是一个老师带,也有可能是多个老师带。  
  如果简单的一个表的话无法描述。  
  我个人认为要至少要三个表。  
  一个课程信息表:  
  课程编号,课名     主键(课程编号)  
   
  一个老师信息表:  
  老师编号,名称,所代课名   主键(老师编号)  
   
  课程安排:  
  日期,节数,老师编号,课名编号,星期,班级  
  主键:(日期,节数,老师编号)  
  外键:老师编号(老师信息表)     课名编号(课程信息表)  
   
  而你所需的表是个视图,  
  视图各字段为:  
  星期,节数(1)课名编号,节数(2)课名编号……  
  代码我就懒得写了。呵呵,吃饭了。  
  Top

5 楼carl2004(忧昙)回复于 2004-05-02 18:23:31 得分 0

你要的话,一会给你Top

6 楼jaidy(骑士)回复于 2004-05-02 19:04:47 得分 0

carl2004(忧昙)   说得甚是!  
  我设计的也是三张表  
  一张class表:  
  classID,班级名称,所属年级,语文老师ID,数学老师ID,……  
  一个teacher表:  
  teacherID,老师名称,所属年级,所教课程  
  我要问的是第三张用来存储课表的表。  
  其实我做的就是一个简单的系统,而且我认为一个班级一门课程只有一个老师的情况。  
  太复杂的不是我考虑的范围。  
  如果你能给我你的代码的话,我将非常感激:)  
  Top

7 楼carl2004(忧昙)回复于 2004-05-02 19:41:50 得分 0

先建一个数据库。  
  create   table   课程信息表  
  (    
      课程编号   int   primary   key,  
      课名           varchar(10)  
  )  
  create   table   老师信息表  
  (  
      老师编号   int   primary   key,  
      名称           varchar(10)  
  )  
   
  以上两个表字段是可以括展的。  
  create   table   课程安排  
  (星期   varchar(10),  
    节数   int,  
    老师编号   int   primary   key   (星期,节数,老师编号)  
    FOREIGN   KEY   REFERENCES   老师信息表(老师编号),  
    课名编号   INT   FOREIGN   KEY   REFERENCES   课程信息表(课程编号),  
    班级   varchar(10))  
   
    建立两个视图,分别按星期显示第一节课和第二节课的信息。  
    在视图基础上建一个存贮过程,以班级为参数,从两个视图上查课程。  
   
    前台只用调用存储过程。  
   
  招换强人有更好的方法Top

8 楼carl2004(忧昙)回复于 2004-05-02 19:55:20 得分 0

视图:  
  create   view   view_1  
  as  
  SELECT   dbo.课程安排.星期,   dbo.课程信息表.课名,   dbo.课程安排.班级  
  FROM   dbo.课程安排   INNER   JOIN  
              dbo.课程信息表   ON   dbo.课程安排.课名编号   =   dbo.课程信息表.课程编号   INNER   JOIN  
              dbo.老师信息表   ON   dbo.课程安排.老师编号   =   dbo.老师信息表.老师编号  
  WHERE   (dbo.课程安排.节数   =   '1')  
   
  create   view   view_2  
  as  
  SELECT   dbo.课程安排.星期,   dbo.课程信息表.课名,   dbo.课程安排.班级  
  FROM   dbo.课程安排   INNER   JOIN  
              dbo.课程信息表   ON   dbo.课程安排.课名编号   =   dbo.课程信息表.课程编号   INNER   JOIN  
              dbo.老师信息表   ON   dbo.课程安排.老师编号   =   dbo.老师信息表.老师编号  
  WHERE   (dbo.课程安排.节数   =   '2')  
   
  存储过程:  
  CREATE   PROCEDURE   pro_kc   @班级   varchar(10)  
  as    
  SELECT   dbo.VIEW1.星期,   dbo.VIEW1.课名   AS   第一节课,   dbo.VIEW2.课名   AS   第二节课  
  FROM   dbo.VIEW1   CROSS   JOIN  
              dbo.VIEW2  
  WHERE   (dbo.VIEW1.班级   =   @班级)  
   
   
  存储过程的调用,参考SQL帮助  
  Top

9 楼carl2004(忧昙)回复于 2004-05-02 19:56:35 得分 0

可能在打字时有的地方打错了,请改一下,我在我机子上试了可以做出,呵呵  
  一时没想到更好的办法,希望有强人给出更好办法Top

10 楼jaidy(骑士)回复于 2004-05-02 20:22:34 得分 0

非常感谢,我试试先~Top

11 楼jaidy(骑士)回复于 2004-05-02 20:37:34 得分 0

另外,还有个问题,就是怎么样才能更新   课程安排   这个table呢?  
   
  分不是问题:)Top

12 楼carl2004(忧昙)回复于 2004-05-02 20:56:49 得分 0

我不懂你的意思,说详细点。Top

13 楼jaidy(骑士)回复于 2004-05-02 23:23:03 得分 0

就是说,这个表外面怎么通过存储过程来修改课程安排   这个table?Top

14 楼carl2004(忧昙)回复于 2004-05-03 00:13:57 得分 0

使用存储过程,以班级为参数  
  pro_kc   1  
  1表示1班,这是我随便写的个字段。  
  查出来的结果放到一个记录集,前台调用。  
  要修改,课程安排可以直接在视图上修改,不过要注意约束Top

相关问题

  • 存储过程怎么写?
  • 存储过程怎么写??
  • 存储过程怎么写
  • 存储过程怎么用
  • 存储过程-怎么改?
  • 存储过程怎么写?
  • 课表设计
  • 存储过程用in 怎么调用此存储过程呢
  • 这个存储过程怎么写?
  • 怎么调试存储过程??

关键词

  • 课程
  • 视图
  • 存储过程
  • 信息
  • view
  • 修改
  • 老师
  • 班级
  • dbo
  • 安排

得分解答快速导航

  • 帖主:jaidy
  • zjcxc
  • carl2004

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo