Skip to content
On this page

数据库设计

原则

设计数据库的时间要充沛

数据库是用户需求的映射,设计的初衷要以用户需求为中心,尽量和用户(产品经理或提出需求的人)保持沟通;如果遇到需求不明确,设计表时要事先预留出可变通的字段;未雨绸缪。

多考虑一些性能和优化

提前判断哪些数据将会比较大,对于这类数据的表结构,设计的时候往往是粗粒度的,以达到用最少的表,最弱的关系去存储大量数据。

添加必要的(冗余)字段

像“创建时间”、“修改时间”、“备注”、“操作用户IP”和一些用于其他需求(如统计)的字段等,在每张表中必须都要有,不是说只有系统中用到的数据才会存到数据库中,一些冗余字段是为了便于日后维护、分析、拓展而添加,这点是非常重要的,比如黑客攻击,篡改了数据,我们便就可以根据修改时间和操作用户 IP 来查找定位。

设计合理的表关联

表与表之间的关系复杂的情况下,建议采用第三张映射表来维系两张张复杂表之间的关系,达到降低表之间的直接耦合度。

若多张表涉及到大数据量的问题,表结构尽量简单,关联也要尽可能避免。

MySQL 设置时间自动生成

字段 ctime 设置默认 CURRENT_TIMESTAMP

TIME.png

或者直接使用语句:

sql
DROP TABLE IF EXISTS `CONTENT`;
CREATE TABLE `CONTENT` (
  `ID` char(20) NOT NULL,
  `CURRENT_TIME` timestamp not null default current_timestamp,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;