需求很简单,下单后给当前用户增加积分,所以有这么一个表
其中 points 字段为入账积分或者是出账积分,取决于type
字段。1为入账,2为出账
今天看到一个业务上的表,需求也是积分的入账和消费,但是其设计如下
可以看到,减少了type
字段,使用了负数的形式。突然觉得这样更加直观明了。 所以想请教下大家说说自己的看法。2 种设计有没有潜在的坑。
大家更倾向于哪一种。
1
MorningBOBO 2020-03-25 14:19:02 +08:00
倾向第一种
|
2
changwei 2020-03-25 17:04:58 +08:00
第一種設計更好,因為如果以後需求有變化,例如要篩選所有入賬數據,那麼業務代碼中寫 where point<0 比 where type=1 的效率是更差的( type 使用 bool 類型,對 type 做索引所佔用的硬盤空間要比對類型為 int 的 points 小)
|
3
aliipay 2020-03-25 18:39:13 +08:00
@changwei 虽然我觉得第一张好,但是理由上不太认同:索引上 bool 相比 int 带来的优势非常非常小,而且考虑扩展性,type 不能定义为 bool,因为积分操作能为下单增加,其它活动增加,消费减少,下单取消减少等等非常多。
如果两种方案结合下,即 type 表示操作类型,points 正负表示积分增减,是否鱼与熊掌兼得? |
4
lepig OP |
5
123444a 2020-03-26 01:27:29 +08:00 via Android
建议第二种,需求变就加字段好了,正负还是不需要变啊,加 10 万个需求都成
|