mysql 数据库设计中用户信息部分怎样设计好?

在日常数据库用户信息部分怎样设计好.

假设结构如下:

CREATE TABLE users(
    `id` INT(11) PRIMARY KEY AUTO_INCREMENT,
    `nickname` char(20) COMMENT '昵称',
    `age` INT(4) COMMENT '年龄',
    `phone` char(11) COMMENT '手机号',
    `password` char(100) COMMENT '密码',
     ....
    `other` text COMMENT '其他'

)

疑惑点是在 other 里。里面存放用户的其他信息。结构如:{"birthday":"2018-06-06","place":"陕西"}

这样做有什么好处以及不好的地方。更好的设计是怎样的。谢谢指导!

阅读 2.6k
2 个回答

这样的设计我个人认为挺不错。
这样做的好处:

  1. 容易扩展字段,不需要为了添加属性就去添加字段

坏处:

  1. 不方便对某个属性搜索,比方说要搜索出某段时间内生日的用户,那么可能会对生日的字段记录在other里面,可能存在其他日期的属性。
  2. 不利于索引的创建。other里面的属性不确定

具体来说,我认为需要根据需求来确定other里面的信息,不能把所有其他的属性都放入other里面。

other 里存放的数据应该只是单纯地用于记录,绝对不会被用于 搜索排序统计联表的字段。

birthdayplace这样的字段我一般还是会分别使用一个字段进行存储的,这两个字段很容易被用于类似不同年龄段的用户占比不同地区的用户占比 的统计功能,存在other中的话会很不方便。

当然,具体怎样存储还是需要根据实际需求来定。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题