数据库建表的时候,没个对象一个表,那么表之间的关系如果有外键关系,这些关系单独放到一个关系表中这样做的合理之处在哪里?或者这样有没有合理性,如果合理的话到底优点又在哪里

解决方案 »

  1.   

    我的意思是这样假设有个学生表,课程表,课程表有学生的ID是外键关系,但是在设计的时候,学生表只有学生的信息,课程表只有课程信息,而单独出一个学生-课程表,存放学生ID和课程ID,就是一个中间表,据称这样的话好似查询速度快也易于扩展?是不是更有点面向对象的东西
      

  2.   

    就选课这个例子,选课表的存在主要因为:
    1.业务逻辑上,学生和课程没有必然联系,选课作为一个独立行为,有它单独维护的意义
    2.实际操作上,学生和课程各自经常变动,对应关系复杂,另加选课表会使得数据易于维护。试想,将选课关系都存入学生表,那么学生表将会变得多么庞大!这种实体表与关系表的设计,一般可以这样考虑:
    1.  n:n   必须另建关系表。否则会有大量不必要的数据冗余。
    2.  1:n   主从表。从表加一外键指向主表的主键。无需关系表。
    3.  1:1   合为一个表。既然一一对应,那么可以作为一条记录了。