在我设计数据库太过分之前,我想弄清楚如何最好地处理这种情况。
我目前有一张桌子,打算成为各种银行总账。该表有一个存款字段和一个撤销字段(以及一堆其他信息)。连续的所有信息都与存款和取款相关,但是只会填写一个或另一个(存款/取款)(其他字段将始终为空)。
我应该创建两个表(撤销表和存款表)还是只将两个默认值都保留为null并且只填充插入中的单个值?也就是说,拥有这样的空字段是一个性能问题吗?而且,如果我将它扩展为包含更多的空字段(比如说数据库中的15个字段。其中8个字段默认为null)该怎么办?
答案 0 :(得分:0)
正如@HABO建议的那样,我会使用一列来计算金额。要确定它是撤回还是存款创建第二列,除非,该数量的符号足以确定。如果要从表中提取信息,可以使用视图或计算列。
如果您将心脏设置在两个单独的列上,那么为了确保只设置一个,您可以在表上添加一个强制执行该规则的触发器,并在违反时执行回滚。这会对您的中间层代码负责,以便正确输入数据,当然,当触发器执行回滚并引发反复错误时,会做出适当的反应。