流水业务的表结构设计:
  主从表结构:
   主表:TMaster:Id(主键),客户,日期时间,发票号......
   从表:TDetail:MId(对应主表),Id(编号,与Mid一起构成主键),数量,金额,货品号......学生选课问题:
学生一个表,课程一个表,选课一个表.
    学生:学号(主键),姓名,班级号......
    课程:课程号(主键),课程名......
    选课:课程号,学号(一起构成主键),成绩......

解决方案 »

  1.   

    可是冗余会很多阿,一个人一次买10种不同的商品,就要建立10条纪录
    选课也一样啊??我该怎么列出一个人都选了什么课呢?给个sql语句
      

  2.   

    主从表是1对多关系,所以"一个人一次买10种不同的商品",主表只有一条记录,从表10条记录,已经是最少冗余了.
    "列出一个人都选了什么课"的SQL 如下:select 课程.课程名 from 课程,选课 
    where 选课.学号='(你要查的学号)'
    and  课程.课程号=选课.课程号
      

  3.   

    记录多点没关系(起码可以满足你的数据量的要求),主要是能够表现出它们之间的关系
    试试下面的语句
    select a.studentname,b.subject,c.* from studenttable as a ,subjecttable as b,subject as c where c.studentid=a.studentid and b.subjectid=c.subject 
      

  4.   

    同意 Haiwer(Haiwer),这种设计完全符合第 X 范式,呵呵呵 ^o^