数据库设计感悟

近期一直在负责一个项目的数据库设计,磕磕碰碰这么久,总算将大致的数据结构设计完毕。整个设计阶段走下来,主要有以下感想:

  1. 熟悉系统业务。这是肯定要掌握的,对业务的熟悉度越高越能设计出合理的数据结构。掌握的至少包括功能模块的划分、各个模块的临界点以及各模块的关系。这里清理清楚,就能尽量减少模块之间的耦合度。
  2. 设计系统架构。这也需要根据项目需求来设计部署方式与架构方式。例如多数据源、负载均衡、缓存、数据库类型、数据量等。了解这些可以帮助对数据结构的设计有极大的帮助,对表结构与字段冗余有很大的影响。
  3. 掌握基本的数据库设计原则以及思想。例如主外键关系、三范式原则、一对多关系设计、多对多关系设计、索引、表分区、冗余等。最好了解提高数据库效率的一些方式方法。

上面几点是基本的准备工作。下面才是实际进行数据库表结构的设计。

  1. 首先,绘制E-R图。
  2. 其次,数据库字段设计。这一步是开始实际的设计了。依据上面的准备工作,进行设计。内容包括:人员、角色、权限表的基础表设计;项目用到的其他辅助表,例如动态数据源的表设计,定时任务的表设计,日志记录表等表;最后,才是业务表设计,这时候就要考验对业务的理解程度了。在我负责的项目中,我做的工作有:

    1)根据需求文档以及原型整理出功能需求树(用Excel方式整理每个功能)

    2)在稍微大点的项目中,提炼出项目中各种类型的类型数据,放入数据字典中,并设计合适的数据字典表。

    3)公共字段的设计,比如每条数据的创建时间、修改时间、创建人(账号)、修改人(账号)、删除标志(逻辑删除)

    4)完全按照三范式规范设计出业务表

    5)考虑数据量、硬件成本、开发成本、维护成本、数据一致性、查询效率等问题,然后选择对业务表进行字段冗余设计,甚至表冗余。

    6)依据业务、基本原则、经验等来确定字段的类型以及长度。Mysql5.5以上版本中varchar(x),长度x指的是当前数据库表所用字符集的实际长度,比如utf-8,

  长度x指的是汉字的实际长度以及字母的实际长度,Mysql5.5以下版本没有测试过。

    7)数据库表字段设计完成之后,就做一些其他工作。例如,制定编码规则,整理数据字典内容,收集系统角色以及权限等。

  3. 最后,制作数据库模型图。

posted @ 2018-07-16 16:52  井井凉风  阅读(323)  评论(0编辑  收藏  举报