TEACHER (TID,TNAME,。)
COURSE(CID,CNAME,)
CLASSARRANGE(TID,CID,CDATETIME)

解决方案 »

  1.   

    数据库是mysql的 能否具体点!
    给个思路也可以!
      

  2.   

    我试着写了个CREATE TABLE `kecheng` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `年` year(4) NOT NULL,
      `周in年` tinyint(3) unsigned NOT NULL,
      `老师名` varchar(10) NOT NULL,
      `周几上课` enum('周一','周二','周三','周四','周五','周六','周日') DEFAULT NULL,
      `上课时间` enum('上午','下午','晚上') DEFAULT NULL,
      `课程名` enum('物理','化学','英语','数学','语文') DEFAULT NULL,
      PRIMARY KEY (`id`,`周in年`),
      UNIQUE KEY `a` (`周in年`,`周几上课`,`上课时间`) USING BTREE
    ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=gbk;mysql> select * from test.kecheng;
    +----+------+--------+--------+----------+----------+--------+
    | id | 年   | 周in年 | 老师名 | 周几上课 | 上课时间 | 课程名 |
    +----+------+--------+--------+----------+----------+--------+
    |  1 | 2000 |     23 | 张     | 周三     | 下午     | 英语   |
    |  2 | 2000 |     23 | 王     | 周二     | 晚上     | 化学   |
    |  3 | 2000 |     24 | 张     | 周四     | 上午     | 英语   |
    |  4 | 0000 |     23 | 张     | 周四     | 晚上     | 英语   |
    +----+------+--------+--------+----------+----------+--------+mysql> select 课程名,上课时间,周几上课 from test.kecheng where 周in年='23' and 老师名='张' order by 周几上课;
    +--------+----------+----------+
    | 课程名 | 上课时间 | 周几上课 |
    +--------+----------+----------+
    | 英语   | 下午     | 周三     |
    | 英语   | 晚上     | 周四     |
    +--------+----------+----------+
      

  3.   

    楼上的很详细,可最后显示界面很难实现我那个图效果....现在需要显示效果如同我那个图 而且操作SQL语句要简洁所以现在不知道该什么设计数据库了 
      

  4.   

    来个绝的,用表名来表示老师和周,如表名zhangsan42",表示张三老师第42周的课程安排,你只需要把表复制一下,就可以新建老师的课程安排,虽然有点那个,但用起来简单啊。
    CREATE TABLE `kecheng2` (
      `老师名` enum('张老师') NOT NULL,
      `周in年` tinyint(4) NOT NULL,
      `上课时间` enum('上午','下午','晚上') NOT NULL,
      `星期日` enum('物理','化学','外语','语文','数学') NOT NULL,
      `星期一` enum('物理','化学','外语','语文','数学') NOT NULL,
      `星期二` enum('物理','化学','外语','语文','数学') NOT NULL,
      `星期三` enum('物理','化学','外语','语文','数学') NOT NULL,
      `星期四` enum('物理','化学','外语','语文','数学') NOT NULL,
      `星期五` enum('物理','化学','外语','语文','数学') NOT NULL,
      `星期六` enum('物理','化学','外语','语文','数学') NOT NULL,
      UNIQUE KEY `a` (`上课时间`) USING BTREE
    ) ENGINE=MyISAM DEFAULT CHARSET=gbk;mysql> select * from kecheng2;
    +--------+--------+----------+--------+--------+--------+--------+--------+--------+--------+
    | 老师名 | 周in年 | 上课时间 | 星期日 | 星期一 | 星期二 | 星期三 | 星期四 | 星期五 | 星期六 |
    +--------+--------+----------+--------+--------+--------+--------+--------+--------+--------+
    | 张老师 |     22 | 上午     | 物理   | 物理   | 物理   | 物理   | 物理   | 物理   | 物理   |
    | 张老师 |     22 | 下午     | 外语   | 外语   | 语文   | 语文   | 语文   | 数学   | 数学   |
    | 张老师 |     22 | 晚上     | 语文   | 语文   | 外语   | 语文   | 物理   | 数学   | 外语   |
    +--------+--------+----------+--------+--------+--------+--------+--------+--------+--------+
    当然 这样也行
    CREATE TABLE `kecheng2` (
      `老师名` varchar(10) NOT NULL,
      `周in年` tinyint(4) NOT NULL,
      `上课时间` enum('上午','下午','晚上') NOT NULL,
      `星期日` enum('物理','化学','外语','语文','数学') NOT NULL,
      `星期一` enum('物理','化学','外语','语文','数学') NOT NULL,
      `星期二` enum('物理','化学','外语','语文','数学') NOT NULL,
      `星期三` enum('物理','化学','外语','语文','数学') NOT NULL,
      `星期四` enum('物理','化学','外语','语文','数学') NOT NULL,
      `星期五` enum('物理','化学','外语','语文','数学') NOT NULL,
      `星期六` enum('物理','化学','外语','语文','数学') NOT NULL,
    ) ENGINE=MyISAM DEFAULT CHARSET=gbk;
      

  5.   

    老师ID  课程ID 上下午标志  周(N)  周标志(第N周)  年月日select * from table where 老师ID ='' and 周标志 = '' order by  周(N)
    再来一个行列转换
      

  6.   

    教师信息表(ID,NAME,)
    课程表(ID,NAME)
    排课表(教师ID,课程ID,时间 )
    用交叉表形成你要求的格式
      

  7.   

    12楼,“这样也行” 下面的sql语句就可以所有老师在一张表中,查询时以老师名,或周做关键字即可,而且完全符合你的表的样式。