一个用 Django 写公司内部系统的运维狗怎么能提高数据的设计水平?

2020-06-06 21:46:58 +08:00
 zhoudaiyu
经常设计一些只有 2 3 个字段的小表,然后弄一堆外键和多对多的表,导致即便数据量不大也查询比较慢。还有用一些反模式,比如一个短信发送表,把一次给一堆人发送的结果存成一条记录,然后有个发给谁的字段存了好几个人手机号,再用逗号分隔,导致查发给了谁只能模糊查询,也是慢。甚至有一些报表需要使用正则查数据库,要么就从数据库都拿出然后在 Django 里做正则匹配。然而发现这些问题都是得过段时间重新审视表设计,或是遇到一些需求才能发现。怎么才能在最初设计的时候就能规避一些问题呢?
2163 次点击
所在节点    数据库
10 条回复
rim99
2020-06-06 22:04:36 +08:00
敏捷嘛,不同的重构就是
rim99
2020-06-06 22:05:03 +08:00
不停,打错了
zhoudaiyu
2020-06-06 22:06:34 +08:00
@rim99 重构有时候会影响报表数据
MOONLIGHTT
2020-06-06 22:12:49 +08:00
数据库设计有范式的,一般能够达到 3NF 性能就可以了(课本上是这么说的)。。

对于一对多的记录的话,postgresql 好像可以存 json 的数据,也能查询 jso 。
chenxytw
2020-06-06 22:17:44 +08:00
在最初设计时没法规避没有遇到过的问题...
所以需要刷经验...
实在自己涨经验慢的话,多看看别人的博客 /文章吧 0 0
zhoudaiyu
2020-06-06 22:19:43 +08:00
@chenxytw 最近看了 SQL 反模式,感觉能稍微少点坑,但还是有些坑和业务关系更大,不太好从书本上学到
zhoudaiyu
2020-06-06 22:20:11 +08:00
@MOONLIGHTT 我们用的 mysql 5.6 好像对 json 支持一般
Govn
2020-06-06 22:34:14 +08:00
mark 一下 我现在也有这个问题 我现在的解决方法就是写 sql 。
HashV2
2020-06-07 02:12:47 +08:00
@MOONLIGHTT 也没必要完全遵守第三范式吧,有时候一些冗余换查询效率也是很有必要的
37Y37
2020-06-07 11:30:44 +08:00
多写就好了,每次发现之前设计的不合理就改掉记录下来,下次设计就会更合理一点,长此以往就设计合理了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/679269

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX