[两个表tArticle
和tCustomer
之间存在m:n关系。每当客户购买商品时,商品和客户之间的链接就会存储在第三个表中,并带有一个附加属性,其中包含该客户购买的金额。
tArticle:
kArticle | title | stock
------------------------
1 | Water | 39
2 | Apple | 14
tCustomer:
kCustomer | surname | firstName
-------------------------------
1 | Muller | Max
2 | Meier | Tom
tCustomer_tArticle:
kCustomer | kArticle | number
-------------------------------
1 | 2 | 2
2 | 2 | 5
2 | 2 | 3
我知道,强烈建议您使用组合的外键作为主键。但是由于同一位顾客可以两次购买同一件商品,因此不再是唯一的了。
现在我的问题是我需要在第三张表中添加AUTO_INCREMENT
主键,还是应该使用物理顺序来拥有唯一记录。
我的第二个问题是,是否有一种方法可以在实体关系图中指定m:n关系中的链接是否可能出现两次。
“现在我的问题是我需要在第三个表中添加一个AUTO_INCREMENT主键,还是应该使用物理顺序来拥有唯一记录。”
我不知道在哪里“强烈推荐”两个外键作为主键。那绝对是一种方法。我倾向于始终为表分配唯一的自动递增键的方法,除非开销太大。
实质上,您的表是一个事务表。我不仅建议自动增加密钥,还建议交易日期/时间以及其他信息。
至此评论:
或者我应该使用实际订单获得唯一记录。
SQL表表示无序集。您没有看到物理顺序对访问行很有用。如果您关心插入顺序,那么您确实需要一个自动递增的密钥。