数据库设计经验总结

  • 使用数据库的理由
    • 不同服务之间的数据同步、共享
    • 不同实例之间的数据同步、共享
    • 数据持久化,避免重启丢失(和放到内存中相比)
  • 同质数据的存储
    • 放在不同的表中
      • 在这几张表中联合查询较慢
    • 在同一张表中,用type字段来区分(字符串类型,或者int引用另一张类型表的id)
      • 单表数据量较大(可以考虑分表)
      • 不同类型数据之间如果有不同字段,会导致字段冗余
        • 一种方式是不同类型数据的字段都定义上,缺点是字段名固定,每种类型的数据就都有了用不到的字段
        • 另一种方式是提前创建一些预定义的字段,如int1, int2, string1, string2等,然后对于不同的数据类型有不同的含义,缺点是从表结构上比较难看出字段数据的含义
  • 选项表的设计
  • 运算列的设计
    • 如果某一列是计算所得(即使只是几个列的简单拼接)
      • 空间换时间:单独的列和计算的列都存储,这样的话既可以根据单独的列进行搜索,也可以按计算列或合并列进行搜索
  • 升级
    • 服务端:数据迁移、代码调整
    • 客户端:对于sqlite等这种用户设备上的内嵌数据库,同样需要升级数据库结构和数据,但更加复杂,因为用户库可能是不同版本的状态

posted on 2018-10-25 15:36  碎羽love星谊  阅读(193)  评论(0编辑  收藏  举报

导航