数据库相关

偶尔善良 提交于 2019-11-29 21:51:18

数据库设计:名词提炼法;名词考虑表或字段,动词考虑关系。

  • 表结构
  • 字段类型、是否允许为null、是否有默认值
  • 索引设计
  • 数据库引擎的选择

1.关系型数据,长期存储

2.主键

  • 唯一标识、行号、不会重复
  • 不能以业务数据作为主键
  • 自增id,

3.纵向字段转成横向数据

  • 用户选择的频道可以是多个,如果用户表存储多个频道数据,容易造成空间浪费
  • 把纵向的字段转成横向的数据
  • 节约空间存储

4.json数据

  • mysql5.7版本后,json数据支持,类似于python字典,LONGTEXT
  • 数据相对固定,变化较小,建议使用json;
  • 如果是mysql5.7版本之前的,建议选择另创建一张表;

5.范式

  • 三范式
    • 1.字段不重复、原子性、不可以分割
    • 2.满足第1范式的基础上,必须要有主键依赖
    • 3.满足第1、2范式的基础上,非主字段之间没有依赖关系

6.反范式

  • 利用空间换时间

  • 利用表的字段来存储冗余数据,可以节省查询时间。

实名认证

活体认证、至少存储1张图片

7.字段类型

  • tinyint/bigint/int
  • int(10),int(20),int(50),tinyint(20)
  • 字段数据类型的大小,是由括号外的类型决定,括号里面表示显示的宽度。

8.字符串

  • char,mobile,查询效率较高,容易浪费空间。

  • varchar,mobile,查询效率较低,存储节约空间。

9.索引

  • 特殊的数据结构,作用是优化查询效率;主键、外键等;
  • 哪些字段适合建立索引:
    • 字段数据比较复杂,容易在查询语句中出现where后面的
    • 字段数据比较简单,
    • 索引越多,增删改效率越低;
    • 外键:确保数据的完整性,没有外键,不影响数据的查询;

10.引擎

不同的引擎决定数据的存储结构,和查询语句执行的方式。

  • MyISAM:不支持事务,插入和查询效率相对较高;安全性相对不高;
  • InnoDB:mysql默认的引擎,支持事务,查询效率相对较低;安全性较高;
  • 一个项目的数据库,不同表可以指定不同的数据库引擎。、
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!