【发布时间】:2015-04-23 00:08:07
【问题描述】:
我有一个包含许多表的数据库,其中 4 个是这些
- 付款
- 信用卡
- 贝宝
- 比特币
信用卡属性:
- 卡ID(PK)
- 类型
- 号码
- 过期日期
- ...
贝宝属性:
- paypalID (PK)
- 帐户
- ...
比特币属性:
- 比特币ID(PK)
- ...
付款表属性:
- 金额
- ...
- ...
- 卡ID (FK)
- paypalID (FK)
- 比特币ID (FK)
只能通过卡/贝宝/比特币支付,所以我打破了第三种正常形式,因为如果客户使用卡,那么我知道他没有使用贝宝或比特币。我该如何解决这个问题,这样我就不会破坏第三范式。
【问题讨论】:
-
每笔 PayPal 交易都是一笔付款,但并非每笔付款都是一笔 PayPal 交易。所以 PayPal 表应该引用适当的付款,而不是相反。
-
问题是那里存储了贝宝、卡和比特币信息,因为付款是经常性的,也就是每月付款。所以我存储的贝宝信息不是交易,它只是进行交易所需的信息。 (希望这是有道理的)
-
哦,原来如此,我误会了。
标签: database-design