设计目的
减少各种状态值字段
减少数据库冗余和存储空间
增加状态值时可灵活调整,无需增加额外字段
运用场景
例子1:管理用户的支付方式
比如针对不同用户组设置了不同的支付方式支持,假设支付方式有支付宝、微信、银联、借条等。A用户支持支付宝、微信;B用户支持支付宝、微信、借条。一般用户支付方式数据库设计为:
ID
name
alipay
weixin
union
iou
1
A
1
1
0
0
2
B
1
1
0
1
这时如果后续多了其它支付方式后,就需要调整表结构增加字段,如快钱、货到付款等。这种设计方式明显不符合数据库设计第一范式,增加了很多冗余字段和存储空间。
例子2:设置用户的操作权限
比如有一组权限列表,查看,编辑,发布,删除,数据库可能会是这样:
ID
name
is_visible
is_editble
is_publishable
is_deleteable
1
A
1
1
0
0
2
B
1
1
1
1
上面只是举些例子来说明一个问题,当一张表的字段