sql – 设计一个可能相互矛盾的列的数据库是否可以

前端之家收集整理的这篇文章主要介绍了sql – 设计一个可能相互矛盾的列的数据库是否可以前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我正在为一家保险公司设计一个数据库,其中包含以下两个表:

顾客

CustomerID,CustomerName

政策

PolicyID,CustomerID,EffectiveDate,ExpirationDate

如果客户的策略使得策略的到期日期在今天之后,则该客户被视为“活动”.当然,我希望构建许多查询来过滤掉不活跃的客户,反之亦然.我的争论是在“客户”表中添加“活动”字段.

一方面,这将提高我的一堆查询性能,它看起来更清晰,更容易理解.

另一方面,它必须每天更新.此外,客户是否被视为活动状态完全取决于策略表中的数据.因此,通过添加“活动”列,我创建了一个潜在的场景,其中客户被标记为活动,但他的策略数据会认为他处于非活动状态(反之亦然).换句话说,我正在创建一个数据可能与之相矛盾的设计.

这是不好的做法吗?

解决方法

正如duskwuff所说,这是一种常见的做法.

但是,非规范化有一些成本 – 您必须提出另一种方法来使“活动”列保持最新,并且该过程将引入更多代码,从而导致失败的机会.

一般情况下,如果您知道存在性能问题,我强烈建议仅进行非规范化.在您达到数亿条记录之前,对策略表的额外连接几乎肯定不会对您的系统性能产生可衡量的影响.如果你担心,建立一个测试数据库并使用像DBMonster这样的工具用测试数据填充它,并编写你需要的查询;尽可能地优化它们,并且只有在考虑非规范化时才能获得所需的性能程度.

原文链接:https://www.f2er.com/mssql/77458.html

猜你在找的MsSQL相关文章