多对多关系是否应定义除关系之外的任何其他内容

Kyl*_*est 3 database-design

以典型的产品/类别为多对多关系,您通常会有以下关系:

table -- ProductsCategories
column - ProductId
column - CategoryId
Run Code Online (Sandbox Code Playgroud)

不建议在该关系中添加其他属性,这些属性仅存在于该特定关系中.如(请原谅我可怕的例子,我不擅长举例):

table -- ProductsCategories
column - ProductId
column - CategoryId
column - DiscountForProductsInThisCategory
column - CategoryImageForProductsInThisCategory
Run Code Online (Sandbox Code Playgroud)

Jef*_*key 6

多对多关系只是一个包含2个一对多关系的表,将其视为具有2个关系的3个表,而不是2个具有关系的表和与之关联的数据.实施没有区别.

无论哪种方式,它都是完全可以接受的.


Eli*_*lie 6

除非数据专门针对该特定关系,否则请避免这种情况,因为您最终会复制大量数据.在您的示例中,图像链接到类别,因此应存储在那里.但是,指示何时建立和编辑关系的时间戳以及创建和修改关系的用户ID应该在该表中.


Wel*_*bog 5

当然,您可以在那里存储这些信息.在其他任何地方,它都不会正常化.