如何约束以多对多关系链接两个表的表

时间:2010-06-02 01:49:09

标签: sql sql-server database many-to-many constraints

说我有以下表格和列:

comp: 
    id, 
    model

dvd: 
    id, 
    model

comp2dvd: 
    id, 
    id_comp, 
    id_dvd

计算机可以有多个DVD驱动器,即使是同一型号,也可以在多台计算机上显示DVD驱动器。我该怎么做才能让comp2dvd表只有现有的comp和dvd id?

由于

3 个答案:

答案 0 :(得分:1)

为什么不直接使用连接表呢?您可以在连接表上添加约束,仅允许使用一个DVDID +计算机组合。

Computer  -----> CompDVD  <------ DVD --------> Model
ID               CompID           ID            ID
                 DVDID

答案 1 :(得分:1)

如果没有将列或列组合标识为唯一(例如但不限于主键)的强制执行索引,则通常无法使用外键引用

comp应该将id作为主键

dvd应该将id作为主键

comp2dvd应该将id作为主键

comp2dvd应该将id_comp作为外键引用(comp.id)

comp2dvd应该将id_dvd作为外键引用(dvd.id)

不要让comp2dvd在列对(id_comp,id_dvd)上有唯一索引或约束,因为对于具有多个相同驱动器的计算机需要重复

答案 2 :(得分:0)

通过向id_comp和id_dvd添加外键?