我在练习jsp  servlet建网站!!刚开始学!
在用数据库建表时遇到了个很棘手的问题
例如:我想查询  学生选的课!!因为学生可以选多个课!弄不清怎么建表!查询出学生选的课的信息!!我只能实现  数据库里存储学生选一个课程的方法!
怎么才能实现学生选多个课程怎么建这些表,然后把这些表可以联系起来综合查询....谢谢表大体是这样
:我想设计的表是这样的额:表1:学生信息
student(id,name,。。)表2:选修课程
course(id,name...)表3   学生选修课程表stu_course(stu_id,name....)表4  教师信息表teacher(....)表可以不完全是这样但要实现下面的功能
:
1,因为这是选修课,每个学生可以选多个!!
2、每个老师指教一个选修课

解决方案 »

  1.   

    老师与课程是一对多,一个老师只能选一门课教,而一门课可能被多个老师教,因此老师的表里可有个字段作外键,记录这个老师当前教的课的id
    学生与课程是多对多,这肯定需要一张中间表,中间表中采用双主键的方式,一个是学生id,一个是课程id。假如学生1选择了课程123,那么中间表里就会存着三条数据,记录着1号学生对应课程1,1号学生对应课程2,....
    这应该能满足要求了吧,楼主试试吧,数据库的关系基本就一对一、一对多、多对多三种,前两个都可以有个外键,第三个要用到中间表。
    --------------------------
    最后再给楼主贴个示例吧,包涵了这三种关系的示例:
    drop database if exists testhibernate;
    create database testhibernate;
    use testhibernate;
    create table card(
    id int not null primary key,
    stu_id int not null,
    message varchar(20) not null
    );
    create table student(
    id int not null primary key,
    card_id int not null,
    cls_id int not null,
    name varchar(10) not null
    );
    create table classes(
    id int not null primary key,
    name varchar(10) not null
    );
    create table lesson(
    id int not null primary key,
    name varchar(10) not null
    );
    create table register(
    lsn_id int not null,
    stu_id int not null,
    primary key(lsn_id,stu_id)
    );
      

  2.   

    呵呵!!谢谢!这个头像很好玩dE!!在qq!!是会员的话!鼠标放在上面他就动!!哈哈
      

  3.   


    仔细研究下.....
    另外谢谢大家的   回帖!!!数据库书以前看过当时没实践过!!所以没什么印象了
    现在做jsp,用的是基本的数据语言!!视图 什么的都没怎么深入理解
      

  4.   


    我想也是找张  中间表书上  用的  是  班级(class)
    但我的这个不适合用那个形式因为 这里选课不是以班级为单位自主作为个体选课
    全校范围的 
    班级只能是个表式作用中间表用什么适合呢???????????????
      

  5.   

    有些不明白楼主的意思。不过我贴的那个sql可以以每个学生这个对象来选课,和class无关,我那张student表、lesson表、register表正好可以满足。
    另:设计数据库还是要多思考多练习的,积累了一定程度后自然而然就很顺手了。设计表的时候也要以面向对象的思维方式来,这里的学生、教师、课程分别就是三个独立的对象。
      

  6.   

    只能用 ,两个主键的 形式建个 表
    然后再连接表???我是自己学的java   到现在 学web希望大家赐教.....谢谢