数据库的基本设计
一、结构设计
数据库结构设计的步骤;
需求分析:全面了解产品设计的存储需求。->存储需求、数据处理需求、数据的安全性和完整性
逻辑设计:设计数据的逻辑存储结构。->数据实体之间的逻辑关系,解决数据冗余和数据维护异常。
物理设计:根据所使用的数据库特点进行表结构设计。
关系型数据库:oralce SQLServer,MySQL
非关系型数据库:mongoDB,Redis,Hadoop
存储引擎:Innodb
维护优化:根据实际情况对索引、存储结构等进行优化。
数据库设计范式:
第一范式:
>>数据库表中的所有字段都只具有单一属性
>>单一属性的列是由基本的数据类型所构成的
>>设计出来的表都是简单的二维表
第二范式:
>>要求一个表中只具有一个业务主键,也就是说符合第二范式的表中不能存在非主键列对只对部分主键的依赖关系
第三范式:
>>指每一个非主属性既不部分依赖于也不传递依赖于业务主键,也就是第二范式的基础上消除了非主属性对主键的传递依赖。
二、物理设计
物理设计涉及的内容
- 定义数据库、表及字段的命名规范
- 选择合适的存储引擎
- 为表中的字段选择合适的数据类型
- 建立数据库结构
- 定义数据库、表及字段的命名规范
- 数据库、表及字段的命名要遵守可读性原则
- 数据库、表及字段的命名要遵守表意性原则
- 数据库、表及字段的命名要遵守长命名原则(平衡)
2、选择合适的存储引擎
Innodb 支持事务的存储引擎,支持MVCC的行及锁,主要应用:事务处理
MyISAM 不支持事务支持并发插入的表及锁
3、如何存储日期数据
datetime 与时区无关,占用8个字节的存储空间。
TIMESRAMP 存储了由格林尼治时间1970年1月1日到当前时间的秒数,占用4个字节。
时间范围1970-01-01到2038-01-19 显示依赖于所指定的时区,在行的数据修改时可以自动修改timestamp列的值