在这之前,我都是用tinyint
存状态
的,比如用户的状态:1代表正常用户
,0代表锁定用户
,2代表逻辑删除的用户
,文章用1代表正常文章
,2代表逻辑删除的文章
等等。
但是我看了typecho
和wordpress
的表结构后,发现我对世界的认知是错误的,这些著名的程序表结构和我想的完全不一样~
好了,那么问题来了:
Q1:用varchar存储状态除了一眼就可以看出是啥状态,还有啥好处么(我认为70和wordpress团队都是经验丰富的人,这么做一定有啥道理,只是我境界还不够而已)?相对于tinyint
会不会慢一丢丢?
Q2:为啥有的字段使用varchar(1000)
都不用text
类型?
这其实是两种不同的设计思路,没有谁对谁错,开源软件需要考虑的是灵活性和对开发者的友好。
我就灵活性方面展开来讲一点,比如我做了一个插件叫
test
,它需要会给文章重新定义一种状态10
这个表示这个状态,如果其它插件也用这个数字呢?test_status
就ok了,前面是前缀,也可以避免其他插件重复实际上我在开发的时候也没有预想到其他开发者会这么用,但是我在设计时订立的原则就是
Keep it simple and stupid