【发布时间】:2014-07-25 01:32:56
【问题描述】:
我的一个朋友刚刚给我发了一张他的新 api 数据库设计的图片。
当我看到它时,我注意到他的用户表有三个主 id。
我实际上认为这是不可能的。
这让我开始思考……这样做可以吗?只要每一列都是唯一的?
我似乎找不到不这样做的理由,除非 id 不是主要的,如果有多个。
这是一个糟糕的数据库设计吗?为什么?
【问题讨论】:
-
你只能有一个主键,但这个主键可以由一、二、三、...列组成。对于购物网站,bag 表有一个包含 3 列(可能更多)的主键。 (买家 ID,产品 ID,产品数量) 示例:您在包中添加了 2 个 Iphone……但经过思考,您决定要 3 个或更多。如果您忘记添加金额,您必须传递 3 个不同的订单,因为 iphone 的 id 是相同的,并且您不能在不同的行中拥有相同的 id,这就是我们添加 Amout 的原因。当您在包中添加其他 Iphone 时,只需增加此值...
-
您不会为此使用主键。那是外国人我真的希望您不要将订单列的数量作为主键
-
我只是给你一个例子......只是说:主键可以像(column1,column2,column3),其中column1,column2,column3是你表中的3个不同的列但是你是对的,我做错了,我们不能添加数量作为主要,只是 id_buyer 和 id_product...
-
我明白你在说什么,只是看起来不合逻辑:/
-
“主键”在关系理论中没有任何作用。这是 SQL 中保留的早期混淆。重要的是候选键。并且可以有任何数量。我最喜欢的例子是元素周期表。每个元素都有一个唯一的名称、符号和原子序数(质子)。三个候选键。
标签: mysql database database-design innodb