9、规范数据库设计
9.1为什么需要设计
当数据库比较复杂的时候,我们就需要设计了
糟糕的数据库设计:
??数据冗余,浪费空间
??数据库插入删除都很麻烦、异常(屏蔽使用物理外键)
??程序性能差
??
良好的数据库设计:
??节省内存空间
??保证数据库的完整性
??方便我们开发系统
??
软件开发中,关于数据库的设计
??分析需求:分析业务和需要处理的数据库的需求
??概要设计:设计关系图E-R图
??
??
设计数据库的步骤:(以个人博客为例)
??收集信息,分析需求
·用户表(用户登录 注销、用户的个人信息,写博客,创建分类)
·分类表(文章分类,谁创建的)
·文章表(文章的信息)
·友链表(友链信息)
·自定义表(系统信息,某个关键字的信息,或者一些主字段)key:value
??
??标识实体(把需求落地到每个字段)
??标识实体之间的关系
·写博客:user->blog
·创建分类:user->category
·关注:user->user
·友链:links
·评论:user-user-blog
??
??
9.2三大范式
为什么需要数据规范化/strong>
·信息重复
·更新异常
·插入异常
??无法正常显示信息
·删除异常
??丢失有效信息
??
??
三大范式
第一范式
原子性:保证每一列不可再分
??
第二范式
前提:第一范式
每张表只描述一个事情
??
第三范式
前提:满足第一和第二范式
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
??
??
规范和性能取舍的问题
关联查询表不得超过三张表
·考虑商业化的需求和目标,(成本,用户体验!)数据库的性能更加重要
·在规范性能是问题的时候,需要适当考虑一下规范性!
·故意给某些表增加一些冗余的字段。(降低性能来提升体验,从多表查询中变为单表查询)
·故意增加一些计算列(从大数据量降低为小数据量查询;或增加索引)
文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树首页概览31413 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!