对计算列进行非规范化时需要权衡哪些因素?
我希望我没有在这里问一个太明显的问题。
对于我当前的项目,我正在使用 sql server 2008 设计一个相对简单的数据库。对于其中一个表,我决定引入“计算列”(未持久化)。它的表达式只是其他两个数字列的乘积,其存在的唯一原因是方便(我正在对网页进行一些单向数据绑定)。
然而,我意识到使用计算列违反了第一范式。这让我想知道:权衡是什么?如果我使用计算列的唯一原因是方便,那么它是否比非规范化更重要?
I hope I am not asking a too obvious question here.
For my current project I am designing a relatively simple database using sql server 2008. For one of the tables I have decided to introduce a 'Computed Column' (not persisted). Its expression is simply the product of 2 other numeric columns and its sole reason for existence is convenience (I am doing some one-way databinding to a webpage).
I realized however that using a computed column violates the first normal form. This got me wondering: Wat are the trade-offs? If my only reason for the computed column is convenience, does it outweigh the denormalization?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
“使用计算列违反了第一范式”:根本不是!它不会被存储,而是始终使用最新数据重新计算。所以这是一个很好的解决方案,就像在视图中拥有一个计算列一样。
"using a computed column violates the first normal form": not at all ! It's not stored, it is re-calculated with the latest data at all time. So it is an excellent solution, just like having a calculated column in a view.
然后将计算放入 SELECT 语句中,而不是放入数据库中。
Then put the calculation in your SELECT statement, not into the database.