2010-01-15 85 views
1

我有以下表在多对多的关系问题

  1. 项目
  2. 同类者
  3. items_similars =透视表

物品─>同类者有一个多对多的关系

items_similars有以下字段

  1. ITEM_ID
  2. similar_id

如果我使用的是InnoDB作为我的引擎,做我需要创建items.id和items_similars.id之间的关系?或者在similars.id和items_similars.id之间?甚至是两者?

有没有在做或不这样做的优势?

+0

重新标记,包括InnoDB的,因为你的问题似乎集中在它。希望没关系。 – 2010-01-15 03:25:14

回答

1

多对多关系AFAIK只能通过RDBMS中的转换表(透视表)实现。 “items_similar”表应至少包含来自“items”和“similars”表主键的外键的“items_id”和“similar_id”。

+0

对。要拼出来了提问者: 场 - >外键 items_similar.item_id - > items.id items_similar.similar_id - > similar.id items_similar.id - >没什么 – James 2010-01-15 05:54:08

+0

@Ygam 虽然我们往往忽略在设计阶段(表格标准化)主键“items_similar.id”,为了性能的目的,我会在实现时推荐它。 – shinkou 2010-01-15 08:07:29

0

itemsimilar_model_01

CREATE TABLE item_similar 
    ( 
    item_id int NOT NULL 
    ,similar_id int NOT NULL 
    ,PRIMARY KEY (item_id, similar_id) 
    ,FOREIGN KEY (item_id) REFERENCES item (item_id) ON UPDATE CASCADE 
    ON DELETE NO ACTION 
    ,FOREIGN KEY (similar_id) REFERENCES similar (similar_id) ON UPDATE CASCADE 
    ON DELETE NO ACTION 
)