物理设计

物理设计,指的是根据所选择的关系型数据库的特点对逻辑模型进行存储结构的设计,主要包括如下几点:

  • 定义数据库、表及字段的命名规范;

  • 选择合适的存储引擎;

  • 为表中的字段选择合适的数据类型;

  • 建立数据库结构。

定义数据库、表及字段的命名规范:

数据库、表、字段的命名要遵守可读性原则:
  • 使用大小写来格式化的库对象名字以获得良好的可读性。

例如:使用custAddress而不是custaddress来提高可读性。

数据库、表、字段的命名要遵守表意性原则:
  • 对象的名字应该能够描述它所表示的对象。

例如:

  • 对于表,表的名称应该能够体现表中存储的数据内容;
  • 对于存储过程,存储过程应该能够体现存储过程的功能。
数据库、表、字段的命名要遵守长名原则:
  • 尽可能少使用或者不使用缩写。

选择合适的存储引擎:

对比项 MyISAM InnoDB
主外键 不支持 支持
事务 不支持 支持
行表锁 表锁,即使操作一条记录也会锁住整个表 不适合高并发的操作 行锁,操作时只锁某一行,不对其它行有影响 适合高并发的操作
缓存 只缓存索引,不缓存真实数据 不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响
表空间
关注点 性能 事务
默认安装 Y Y

为表中的字段选择合适的数据类型:

当一个列可以选择多种数据类型时:

  1. 优先考虑数字类型;
  2. 其次是日期、时间类型;
  3. 最后是字符类型;
  4. 对于相同级别的数据类型,应该优先选择占用空间小的数据类型。

浮点类型:

列类型 存储空间 是否精确类型
FlOAT 4个字节
DOUBLE 8个字节
DECIMAL 每4个字节存9个数字,小数点占1个字节

![image-20201228231153087](2020-12-28 02-物理设计.assets/image-20201228231153087.png)

![image-20201228231223626](2020-12-28 02-物理设计.assets/image-20201228231223626.png)

日期类型:

![image-20201228231257169](2020-12-28 02-物理设计.assets/image-20201228231257169.png)

timestamp和时区有关,而datetime无关。

![image-20201228231359032](2020-12-28 02-物理设计.assets/image-20201228231359032.png)

insert into test_time VALUES(NOW(),NOW(),NOW());

show VARIABLES like ‘time_zone’;

set time_zone=”-10:00”

![image-20201228231428113](2020-12-28 02-物理设计.assets/image-20201228231428113.png)