第3课:数据库设计

只学会了SQL的使用,不会设计数据库表,是不能完成项目的
数据库设计原则:
1. 保证数据一致性
2. 保证数据完整性
3. 保证性能

数据库设计首先表的创建要遵循第三范式的要求,所谓第三范式即每个非关键字列都独立于其他非关键字列,并依赖于关键字,第三范式指数据库中不能存在传递函数依赖关系
但是也不能生搬硬套,比如一个数据集是几个表联合查询出来的,这个时候可以根据需求与场景,权衡取舍,适当允许数据冗余,比如可以把需要的字段都放在一个表里,减轻数据库压力

设计表阶段在满足需求的前提下,要尽量避免连表查询等复杂SQL的出现

数据库设计工具:
小型项目可能纸上画画就可以了,但是如果是大型,比较复杂的项目,就需要专业的数据库设计工具
推荐:Navicat Data Modeler  Navicat的数据库管理工具与设计工具个人感觉都很好用

系统级别的设计:
比如主从如何配置,主从对应的表引擎如何选择,都要根据实际需求来确定,设计最忌讳的就是教条主意。如果数据量不大,访问量也不大,可以简单的一主即可,读写都在一台机器上,随着访问量的提升,可以选择读写分离,设置成一主一从,或者一主多从,主只进行写操作,从只进行读操作。然后考虑到主有单点故障的问题,可以考虑设置两台主进行热备份,或者多主

网络上有种多主环形同步的模式,比如有A B C三台主,配置A的数据同步给B,B的数据同步给C,C的数据同步给A,实现多主。
但是这种模式有个很大的弊端,A,B,C互相依赖,一旦其中一台出错,系统就崩溃了,有个优化方式是存在一个D服务器,和A,B,C都有关联,形成一个网状结构
另外也可以用两个主,但是只有一个主提供业务服务,另一个主作为一个热备份

表级别设计:
字段尽量考虑周到,比如一些状态字段,一定要分清楚,减少后面的麻烦。该建索引的字段要建索引,提升查询效率
表原则上都要有主键
当数据量大的时候还要考虑分表操作或者分区操作
字段尽量设置合适的数据类型等

还有很多设计技巧需要在工作中慢慢积累
比如记录一个用户上传的文件,你可以每传一个文件,插入一条数据到数据表,也可以维护一个uid 和 file_num 2个字段的表,没传一个文件,更新一下file_num
关键在于根据实际情况灵活应用


试着做做下面的题目吧

    1:varchar与char的区别
    2:如何恢复已备份数据表
    3:如何提升数据库支持并发数
打赏  如对你有帮助,请我喝杯咖啡吧!