【发布时间】:2012-03-11 18:25:15
【问题描述】:
目前我们的数据库已设置好,以便支付交易记录支付类型 ID,并链接到包含这些值的支付类型(现金、支票、信用)表。示例:
支付交易:
- 身份证
- 金额
- 日期
- 付款类型 ID
付款方式:
- 身份证
- 付款方式(现金、信用卡)
我的问题是我是否应该删除支付类型表,并将支付类型值作为文本存储在支付交易中。
这类似于this question。除了支付类型,可以肯定的是,无需为每种支付类型添加新信息。 'Cash' 没有链接到任何东西,我不需要知道关于 Cash 本身的任何信息,它就是。
据我所知,用单个字段替换付款类型表的优缺点如下:
优点
- 在需要查找付款类型时删除大部分不必要的联接。
- 交易的付款类型将始终准确反映交易记录时的情况。即,如果我将付款类型表中的“现金”记录更改为“信用”(无论出于何种原因),所有链接到现金的付款交易现在都将链接到信用。
缺点
- 将支付类型存储为文本字段会减慢按支付类型排序的速度,并使这种排序比现在更加混乱。
- 交易的付款类型将始终准确反映交易记录时的情况。即,如果我有一个拼写错误并且付款类型存储为“Kash”,我可以轻松修复该拼写错误,并且链接到该付款类型的所有交易都将自动更新。
我倾向于删除支付类型表并将单个字段添加到支付交易表中,您建议的最佳做法是什么?
【问题讨论】:
标签: mysql database normalization