GuilinDev

Principals Design Databases

17 June 2021

3个基础原则(任何系统)

  1. 结构清晰:表名、字段命名没有歧义,一眼看懂
  2. 唯一职责:一表一用,领域定义清晰,不存储无关信息,相关数据在一张表中
  3. 主键原则:设计不带物理意义的主键(例如名字作为主键,而名字可能变动);有唯一约束,确保幂等

4个扩展原则(影响系统的性能和容量)

  1. 长短分离:可与扩展,长文本独立存储;有合适的容量设计
  2. 冷热分离:当前数据与历史数据分离
  3. 索引完备: 有合适的索引方便查询
  4. 不使用关联查询:不使用一切的SQL Join操作,不做2个表或更多表的关联查询 - 尤其是两个表特别大的时候
    • Case:查询商家每一个订单的金额
    • Select s.shop_name, o.id as order_id, o.total_amount From shop s, order o Where s.id = o.shop_id

3个完备性原则(任何系统)

  1. 完整性:保证数据的准确性和完整性,重要的内容都有记录
  2. 可追溯:可追溯创建时间,修改时间,可以逻辑删除 - 而不是物理删除,逻辑删除也就是删除本身操作也做记录方便追溯
  3. 一致性原则:数据之间保持一致,尽可能避免同样的数据存储在不用表中