数据库设计

 

需求

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

 

根据产品原型分析,词性分析法,名词创建表或字段,动词表示关系。


数据存储:长期存储的数据,


1.主键:唯一、自增。

可以不用手动指定,mysql会默认生成自增主键;


不适合做主键:业务数据,比如mobile,id_card


2.表之间的关系:
一个用户可以发布文章数?一对多,用户是一方,文章是多方


3.外键:多表之间没有外键,可以进行行连表查询吗? 可以
作用:确保数据的完整性。


工作中:项目初期一般会使用外键,项目运行中后期,一般都会取消外键。

 

4.文章封面图片存储:在MySQL5.7版本后,新加如json数据类型;
json的类型底层是longtext
方便便存储多个键值对形式的字符串串,不不容易易发生的数据。

 

5.数据库设计—范式:
1.表字段的原子性
2.满足第1范式的基础上,有主键依赖
3.满足第1、2范式的基础上,非主属性之间没有依赖关系;


6.反范式:DBA的水平,反范式设计用的越多,水平越高。
设计数据库表,存储冗余字段;
利利用数据库表的存储空间,节省查询数据时间;

 

7.索引设计:
主键、外键、unique、index


哪些字段适合索引的设计:
适合:mobile,name,nick_name
不不适合:photo_url,intro,gender


结论:
1.数据形式比较复杂的;
2.查询语句句条件后面,where后面
3.数据形式单一的不适合。

 

8.数据库引擎:决定数据存储和查询的方式;
InnoDB:支持事务,更更安全,查询和插入的效率相对较低;
MyISAM:不支持事务,查询效率相对较高;
一个项目中,不不同的表,可以指定不不同的引擎。

 

下图是一个模拟表的设计:

【SQL数据库设计】数据库设计【小型数据库】_sql数据库

 

多思考也是一种努力,做出正确的分析和选择,因为我们的时间和精力都有限,所以把时间花在更有价值的地方。