我想知道我对代理键的理解是否正确。
例如:
下面是我的示例数据库设计
Customers Table
| id(PK) | Name | Age |
| 1 | John | 34 |
| 2 | Doe | 30 |
QrCodes Table
| id(PK) | QRcode | Tracking No. | CustomerID (FK)
| 1 | QR123 | TR901111 | 1
| 2 | QR345 | TR902222 | 2
Redemptions Table
| id(PK) | Name | Tracking No. | CustomerID(FK)
| 1 | Redemption 1 | TR901111 | 1
| 2 | Redemption 2 | TR902222 | 2
| 3 | Rdemption 3 | TR902222 | 2
如您所见,我有两个跟踪号列,一个用于二维码表,一个用于兑换表。这样我就可以进行查询,例如仅通过跟踪查找所有二维码和兑换。
跟踪号列可以归类为代理键吗?或者这是不正确的?
最佳答案
评论中有点困惑,但它们基本上是正确的(所有人都上涨了)。您需要做的就是从兑换中删除 TrackingId,并将 QrCodeId 作为 FK 添加到 QrCode 表中。
如果每个QrCode都有一个唯一的TrackingId(我认为是这样)那么它应该有一个唯一索引,但PK就是Id。但如果不了解您正在建模的内容,就很难确定。
关于mysql - 需要高级帮助来验证我对关系数据库设计中代理键的理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34044338/