好:
    最近看过老外的一个数据库,发现这个数据库表之间都没有直接用外键,而是用了单独的关系表来维持这种外键关系,请问这样做有什么好处?
    例如:    有一种关系     学生  -- 属于 ->  班级
    (是一对一的关系)    在我们的数据库设计中都是这样的:
      学生表、班级表      学生表中有一个外键字段叫做所属班级,来实现这种关系    但是在他们的数据库中是这样设计的:
      学生表、班级表、学生vs班级表
      其中学生表与班级表没有直接的外键关系,他们的关系通过“学生vs班级表”来实现的
      就是在“学生vs班级”表中有三个字段,一个是ID,一个是学生ID,一个是班级ID,用这个表的数据来实现学生属于班级这个关系    请问这种设计是基于什么考虑的呢?    不知道问题描述清楚了没有,大家一起探讨一下,希望得到比较专业的回答,呵呵。

解决方案 »

  1.   

    但是在他们的数据库中是这样设计的: 
          学生表、班级表、 学生vs班级表
          其中学生表与班级表没有直接的外键关系,他们的关系通过“学生vs班级表”来实现的 
          就是在“学生vs班级”表中有三个字段,一个是ID,一个是学生ID,一个是班级ID,用这个表的数据来实现学生属于班级这个关系 -------------------------------
    学生vs班级表比较冗余,不建立外键可以用程序控制
      

  2.   

    hibernate自动生成的话就是这样的,是不是他用框架了?
    我猜的啊,呵呵
      

  3.   

    这是比较标准的范式设计而已。不过现实应用中,有时考虑到性能问题,常常用空间换时间,不过这里的这个sample不需要了就是的。