首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于被分成多个部分的余额,哪种桌子设计更好?

对于被分成多个部分的余额,哪种桌子设计更好?
EN

Stack Overflow用户
提问于 2011-01-27 01:09:54
回答 3查看 303关注 0票数 2

我有一个数据库,其中余额和付款需要被分解成不同的“钱桶”,以显示它们是如何分配的。例如,有本金、利息、滞纳金、退票费、杂项等等。有多达10个不同的钱桶。

这两种方法中哪一种是设计数据库的更好方法,为什么?

选项A

代码语言:javascript
运行
复制
PAYMENTS 
AccountId
// Other payment-related columns
TotalPaid 
PrincipalPaid
InterestPaid
MiscPaid
BadCheckChargesPaid
...

选项B

代码语言:javascript
运行
复制
PAYMENTS
AccountId
// Other payment-related columns
TotalPaid

PAYMENT_DETAILS
PaymentId
PaymentTypeId
AmountPaid

在大多数情况下,只使用1-3种不同的余额类型

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-27 01:14:35

选项B是更好的规范化、更灵活的选项(稍后很容易添加新的存储桶),并且将获得我的投票。

票数 4
EN

Stack Overflow用户

发布于 2011-01-27 01:15:15

虽然规范化精灵经常会引诱您朝着后者的方向发展(就像我一样),但前者可能更明智。您只讨论了10列(而不是500列),并且没有真正被破坏的规范化规则。除非这个支付分配桶列表很有可能会增长,否则我会远离EAV结构,因为它可能会产生令人头疼的问题(以及一些查询中的无数连接)。

票数 3
EN

Stack Overflow用户

发布于 2011-01-27 01:21:36

选项B对我来说似乎更好。一个决定性的问题是你的应用程序是否被设计成像这样显示细节:

代码语言:javascript
运行
复制
 Item             Amount
 --------------   ---------------
 Principal        $10.00
 Interest          $1.11

如果是这样的话,规范化的版本不仅“更正确”,而且实际上以更接近应用程序所需的格式存储数据。

对我来说,最大的问题是,您是将付款总额存储在付款记录中,还是从详细信息中导出。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4807556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档