假设我们有一张用户表:
uid,username,nickname,birthday……等有限个元素
当我们需要加入用户更多的信息应该如何实现?
有如下两个我想到的方案
- 根据uid作为外键,然后建立新表
- 在此表中加入一个可以动态扩展的字段
先说第一种,
比如我要新加一种属性,叫用户性别:gender;那么我就可以新建立一张表叫做gender,或者直接用db的外键,或者直接带逻辑代码中用uid查询。
这里的好处是可以保持原来的字段不改变,避免原来的表结构膨胀,可以直接做索引(扩展字段无法索引,随时可能超出64字节的索引量,MYSQL)
第二种,
我们可以在用户表中新增一个null的字段,叫做ext,中间保存的是json字符串,这个字符串由各个业务共同使用各自转换成相应语言中的数据结构
好处也是不增加新表
坏处是这个字段是无法索引的,所以只能存放一些静态的,不需要索引的数据