9、规范数据库的设计

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)

(规范数据库的设计)

规范性可能会与性能冲突
①关联查询的表不得超过三张
②考虑商业化时需求和目标, (成本与用户体验! ) 数据库的性能更加重要
③故意给某些表增加一些冗余这段。(从多表查询变成单表查询)
④故意增加一些计算列(从大数据量降低为小数据量查询: 索引)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值