为了账号安全,请及时绑定邮箱和手机立即绑定

他们在 django 模型上使用 @property 装饰器而不是将字段直接保存到数据

他们在 django 模型上使用 @property 装饰器而不是将字段直接保存到数据

米脂 2021-09-14 15:18:12
所以一个可以像 full_name 一样从名字和姓氏计算的字段,我们应该使用@property 来计算 full_name。但是当我们需要获得所有“n”个人的全名列表时。full_name 将被计算 'n' 次,这应该比从数据库中获取字段需要更多的时间(如果它已经存储为单独的字段!)。那么他们使用@property 计算full_name 的任何处理时间/数据库获取时间优势/劣势吗?(注意:我已经考虑过@property 的其他优点,比如减少数据库大小,不用担心名字或姓氏的变化而不改变全名,设置名字和姓氏的 setter 函数等。我只想知道处理/与将 full_name 保存到数据库中相比,db 获取时间优势/劣势。
查看完整描述

1 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

您正在谈论的技术称为Denormalization。这是相当先进的技术。

非规范化是一种用于先前规范化的数据库以提高性能的策略。在计算中,非规范化是通过添加数据的冗余副本或对数据进行分组来尝试提高数据库读取性能的过程,以损失一些写入性能为代价。

它与数据库规范化相反。并且您应该始终使用规范化数据库启动您的应用程序。

如果您没有任何严重的性能问题,我建议您不要这样做。如果您遇到问题,请先尝试其他解决方案以提高您的应用程序速度。

第一范式(1NF):

  • 它应该只有单(原子)值的属性/列。

非常基本的缺点示例:UPDATE声明。您需要访问 full_name 表 + 计算中的 2 列。

无论如何,您的 full_name 示例非常简单,您绝对应该使用 @property 执行此操作


查看完整回答
反对 回复 2021-09-14
  • 1 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号