9.1、为什么要设计
当数据库比较复杂就需要设计数据库了
糟糕的数据库设计:
数据冗余, 浪费空间
数据插入和删除会比较麻烦、异常
程序性能差
良好的数据库设计:
节省内存空间
保证数据库的完整性
方便我们开发系统
9.2、具体设计:
软件开发中的, 关于数据库的设计:
分析需求: 分析业务和需要处理的数据库的需求
概要设计: 设计关系图
![image.png](https://img-blog.csdnimg.cn/img_convert/c9c434844a17880e6c2eb510392948ef.png#clientId=ua4135fb4-d79d-4&from=paste&height=487&id=gUyIn&margin=[object Object]&name=image.png&originHeight=620&originWidth=916&originalType=binary&ratio=1&size=209915&status=done&style=none&taskId=u957ad475-a99c-4a59-b4c8-8f1ac86ae5e&width=719)
用户表:
![image.png](https://img-blog.csdnimg.cn/img_convert/88a69d0aeaab1582f9d2f2e646967778.png#clientId=ua4135fb4-d79d-4&from=paste&height=241&id=u7e02f8ed&margin=[object Object]&name=image.png&originHeight=249&originWidth=742&originalType=binary&ratio=1&size=172959&status=done&style=none&taskId=u9a1d28a7-9e0c-4b89-87ee-c58380c036a&width=719)
分类表:
![image.png](https://img-blog.csdnimg.cn/img_convert/3393cb6183644617d3c8b5295d66bfc6.png#clientId=ua4135fb4-d79d-4&from=paste&height=260&id=ud2211785&margin=[object Object]&name=image.png&originHeight=297&originWidth=869&originalType=binary&ratio=1&size=111414&status=done&style=none&taskId=ueb1280fd-74d6-4b94-872f-06f08bffe97&width=760.5)
文章表:
![image.png](https://img-blog.csdnimg.cn/img_convert/053f4c9aecd6236f318c4507a388e35b.png#clientId=ua4135fb4-d79d-4&from=paste&height=289&id=u9dc49ab1&margin=[object Object]&name=image.png&originHeight=313&originWidth=885&originalType=binary&ratio=1&size=218614&status=done&style=none&taskId=u2cd9b8b7-2e19-4303-8594-a65bea00b01&width=817.5)
评论表:
![image.png](https://img-blog.csdnimg.cn/img_convert/bab47142d299219820600e5423c0ec06.png#clientId=ua4135fb4-d79d-4&from=paste&height=280&id=udbaf9356&margin=[object Object]&name=image.png&originHeight=319&originWidth=891&originalType=binary&ratio=1&size=159721&status=done&style=none&taskId=uc8b9a03c-47c1-4f35-933f-636297710f8&width=781.5)
友链表:
![image.png](https://img-blog.csdnimg.cn/img_convert/f2bbfa3c8af5f63695a1d1290da5ac21.png#clientId=ua4135fb4-d79d-4&from=paste&height=287&id=u774296a7&margin=[object Object]&name=image.png&originHeight=308&originWidth=842&originalType=binary&ratio=1&size=161942&status=done&style=none&taskId=u0868b937-5e79-4d0a-adba-cdf860e9fb9&width=784)
粉丝表:
![image.png](https://img-blog.csdnimg.cn/img_convert/a8a27c5733dedd93c2c58bbfa287b724.png#clientId=ua4135fb4-d79d-4&from=paste&height=196&id=u19a41a18&margin=[object Object]&name=image.png&originHeight=198&originWidth=770&originalType=binary&ratio=1&size=114129&status=done&style=none&taskId=udcd5a1a4-31cd-4431-889a-04c3e29e88f&width=764)
9.3、三大范式
为什么要数据规范化?
①信息重复
②更新异常
③插入异常: 无法正常显示信息
④删除异常: 丢失有效信息
三大范式:
第一范式(1NF)
原子性: 保证每一列(字段)不可再分
第二范式(2NF)
前提满足第一范式
确保每一列都与主键相关且与其他列相关 (即: 每张表只做一件事)
![image.png](https://img-blog.csdnimg.cn/img_convert/37739485269d3aa0734e6f47535b4a8f.png#clientId=ua3da56b7-1d2b-4&from=paste&height=406&id=u7aa3be2f&margin=[object Object]&name=image.png&originHeight=455&originWidth=821&originalType=binary&ratio=1&size=294409&status=done&style=none&taskId=u1597f514-f46a-48a1-a855-4a55814c6f1&width=732.5)
第三范式(3NF)
前提满足第一与第二范式
确保时间表中的每一列都与主键直接相关不能间接相关。
![image.png](https://img-blog.csdnimg.cn/img_convert/f93826cda6edcc4e790369232c28f8ac.png#clientId=ua3da56b7-1d2b-4&from=paste&height=451&id=u055ee06c&margin=[object Object]&name=image.png&originHeight=465&originWidth=797&originalType=binary&ratio=1&size=228636&status=done&style=none&taskId=ue1c7585c-b8f9-41fb-a26c-469e92d2929&width=772.5)
(规范数据库的设计)
规范性可能会与性能冲突
①关联查询的表不得超过三张
②考虑商业化时需求和目标, (成本与用户体验! ) 数据库的性能更加重要
③故意给某些表增加一些冗余这段。(从多表查询变成单表查询)
④故意增加一些计算列(从大数据量降低为小数据量查询: 索引)