我有一个数据库,其中余额和付款需要被分解成不同的“钱桶”,以显示它们是如何分配的。例如,有本金、利息、滞纳金、退票费、杂项等等。有多达10个不同的钱桶。
这两种方法中哪一种是设计数据库的更好方法,为什么?
选项A
PAYMENTS 
AccountId
// Other payment-related columns
TotalPaid 
PrincipalPaid
InterestPaid
MiscPaid
BadCheckChargesPaid
...选项B
PAYMENTS
AccountId
// Other payment-related columns
TotalPaid
PAYMENT_DETAILS
PaymentId
PaymentTypeId
AmountPaid在大多数情况下,只使用1-3种不同的余额类型
发布于 2011-01-27 01:14:35
选项B是更好的规范化、更灵活的选项(稍后很容易添加新的存储桶),并且将获得我的投票。
发布于 2011-01-27 01:15:15
虽然规范化精灵经常会引诱您朝着后者的方向发展(就像我一样),但前者可能更明智。您只讨论了10列(而不是500列),并且没有真正被破坏的规范化规则。除非这个支付分配桶列表很有可能会增长,否则我会远离EAV结构,因为它可能会产生令人头疼的问题(以及一些查询中的无数连接)。
发布于 2011-01-27 01:21:36
选项B对我来说似乎更好。一个决定性的问题是你的应用程序是否被设计成像这样显示细节:
 Item             Amount
 --------------   ---------------
 Principal        $10.00
 Interest          $1.11如果是这样的话,规范化的版本不仅“更正确”,而且实际上以更接近应用程序所需的格式存储数据。
对我来说,最大的问题是,您是将付款总额存储在付款记录中,还是从详细信息中导出。
https://stackoverflow.com/questions/4807556
复制相似问题