数据库学习笔记(三)—— 数据库设计


一、数据库设计

(1) 为什么要设计数据库、
良好的数据库设计:节省数据存储空间;保证数据完整性;发布进行数据库应用系统的开发
糟糕的数据库设计:数据冗余、存储 空间浪费;内存空间浪费;数据更新和插入异常

(2)阶段

需求分析阶段:分析客户的业务和数据处理需求(开题)

概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整
详细设计阶段:将E-R图转换为多张表,进行逻辑设计,并应用数据库设计的三大范式进行审核 。【流程图、时序图……】

  • 先有模型后有表

代码编写阶段:选择具体数据库进行物理实现,并编写代码实现前端应用 (关键代码、效果图)
软件测试阶段:……
安装部署:……

(3)😊 步骤 😊

  1. 了解需求
  2. E-R图

①【同面向对象4个找】

  • 找标识对象(实体Entity——类):名词
  • 找实体属性
  • 找实体间的关系(找方法)
  • 找映射基数:一对一、一对多、多对一、多对多

一对一(one-to-one): A中一个实体至多与B中一个实体相关联,反之亦然。

一对多(one-to-many):A中的一个实体可以与B中任意数目的实体关联,而B中的实体至多与A中的一个实体关联

多对一(many-to-one):A中的一个实体至多与B中的一个实体相关联,而B中的实体可以与A中的任意数目的实体相关联。

多对多(many-to-many): A中的实体可以与B中任意数目的实体关联,B中的实体也可以与A中任意数目的实体相关联

②=>E-R图(实体关系图——类图)

  • E-R图的绘制
  1. E-R图 转 数据模型
    实体转化为表、属性转化为列
    标识主键列 id
    表间建立主外键,体现实体间的映射关系(外键设置描述映射关系)

  2. 数据规范化 范式 数据模型
    仅有好的RDBMS并不足以避免数据冗余,编写在数据库设计中创建好的表结构。范式时具有最小任意的表结构。

进行规范化的同时,还现有综合考虑数据库的性能,性能高于规范

(4)注意!

  1. 命名规范
  2. 表中一定有主键

二、E-R图绘制

  • 符号在这里插入图片描述
  • 线表示方法:
    ——有箭头代表1,无箭头代表多
    ——直线连接,标记1,m

举例:
在这里插入图片描述

在这里插入图片描述
重点:
在这里插入图片描述
关系表()只有两个外键,没有主键
实体表()主键+外键以外的东西


三、数据库规范——三大范式

  1. 第一范式(1st NF——First Normal Fromate)
  • 确保每列的原子性(不可再拆分)
  • 每列都是不可再分的最小数据单元(最小的原子单元),则满足第一范式(1NF)
  • 在这里插入图片描述
  1. 第二范式(2nd NF——Second Normal Fromate)
  • 每个表只描述一件事
  • 确保表中的每列,都和主键相关
  • 一个关系满足1NF,不全除了主键以外的其他列,依赖于该主键,则满足第二范式(2NF)

在这里插入图片描述

  1. 第三范式(3rd NF——Thirdd Normal Fromate)
  • 确保每列都和主键列直接相关,而不是间接相关
  • 如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖主键列,则满足第三范式(3NF)
    在这里插入图片描述

四、数据库设计可能出现的问题

  1. 表的设计:是不是实体(字典表,常量信息,如:民族)注意不要多表少表
  2. 关系:表之间的映射基数。(一对一、一对多、多对多)
  3. 关系约束设计
    ① 一对多: 外键设计 ——在多的一方添加 ,1的一方的主键作为自己的外键(多的一方添加 fk_)(eg:一个班级有很多学生)
    ②一对一:任意一方添加外键 - 外键进行唯一约束(添加唯一键uk_)(eg:一个班级只有一个班主任)
    ③ 多对多:新建立一个关系表,关系表没有主键,只有两个外键(eg:学生—选课关系stu_cou—课程)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值