数据库设计和数据库对象

目录

序言

一、数据库设计的步骤

二、如何绘制E-R图

2.1 酒店管理系统的基本功能

2.2 绘制E-R 实体关系图(三要素):

2.3 关系型数据库常见映射基数:

2.4 转化E-R图形成数据库模型图

三、使用三大范式实现数据库设计规范化

3.1 第一范式 (1st NF)

3.2 第二范式(2st NF)

3.3 第三范式 (3st NF)

规范化的酒店管理系统E-R图:

规范化的酒店管理系统数据库模型图:


序言

        我们为什么要进行数据库设计呢?一个成熟完善的数据库设计可以带给我们什么好处呢?而糟糕的数据库设计又会给我们带来什么不便呢?学习本篇文章,你将对数据库设计的步骤有一个框架概念,并通过实例教会你如何让绘制E-R图以及如何转换为数据库模型图。

一、数据库设计的步骤

糟糕的数据库设计:

1,数据冗余,存储空间造成大量浪费;

2,内存空间与日志空间的浪费;

3,数据的更新迭代与插入时刻伴随着风险和异常;

成熟的数据库设计:

1,节省数据的存储空间;

2,数据的完整性高,原子性强;

3,方便进行数据库应用和系统开发;

那么我们该如何进行数据库设计呢?

数据库设计步骤:

1.需求分析阶段:旨在分析客户的业务和数据处理的需求

2.概要设计阶段:设计出数据库的E-R模型图,确认需求信息的正确和完整性

3.详细设计阶段:运用数据库三大范式越泽,规范审核数据库结构,形成数据库模型图

4.代码编写阶段:物理实现数据库,代码实现应用

5.测试阶段: 实践||实验

6.备份还原阶段:...

二、如何绘制E-R图

2.1 酒店管理系统的基本功能

1.收集信息:

系统有关人员进行交流、座谈,充分了解用户需求,理解数据库需要完成的任务

  • 旅客办理入住手续:后台数据库需要存放入住客人的信息和客房信息

  • 客房信息:后台数据库需要存放客房的相关信息,如客房号、床位数、价格等

  • 客房管理信息:后台数据库需要保存客房类型信息和客房当前状态信息

2.标识出实体:

数据库要管理的关键对象或实体内容,实体通常情况下 是一个名词

  • 客人:入住酒店的旅客。办理入职手续时,需填写用户信息。

  • 客房:酒店为客人提供休息的住所。

3.标识出每个实体的属性:

  • 客人属性:编号 姓名 身份证.....

  • 客房属性:编号 名称 床位 状态 类型....

4.标识出实体和实体之间的关系

实体和实体之间的关系 通常用动词去描述

客房和客人之间 存在主从关系 客房是主1 客人是从N

1对N关系 被引用 引用关系

从设计角度上来说 就是 N个人可以住一个房子

客房被客人引用了---客人引用了客房

2.2 绘制E-R 实体关系图(三要素):

符号 含义
矩形 实体,一般是名词
椭圆形 实体,一般是名词
菱形 关系,一般是动词

2.3 关系型数据库常见映射基数:

2.4 转化E-R图形成数据库模型图

1 将各实体转化为对应的各表,将各属性对应成为各表的列。

2 标识出每个表的主键列(非空+唯一),一张表有且只有一个主键列。

3 在表之间建立主外键,形成引用被引用关系。

三、使用三大范式实现数据库设计规范化

数据库设计规范化的的重要性:防止信息重复、更新异常、插入异常以及删除异常等等

三大范式原则:

3.1 第一范式 (1st NF)

  • 第一范式的目标是确保每列的原子性

  • 如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)

3.2 第二范式(2st NF)

  • 第二范式要求每个表只描述一件事情

3.3 第三范式 (3st NF)

  • 如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF)

规范化的酒店管理系统E-R图:

规范化的酒店管理系统数据库模型图:

相关推荐

  1. 数据库设计SQL基础语法】--查询数据--排序

    2024-01-22 16:48:06       35 阅读
  2. 查找 Oracle 数据库对象失效的原因时间?

    2024-01-22 16:48:06       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-22 16:48:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-22 16:48:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-22 16:48:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-22 16:48:06       20 阅读

热门阅读

  1. [Combine 开发] combineLatest、merge、zip的使用区别

    2024-01-22 16:48:06       34 阅读
  2. dp_day1

    2024-01-22 16:48:06       30 阅读
  3. DDD系列 - 第9讲 实体、值对象

    2024-01-22 16:48:06       38 阅读
  4. SQL笔记 -- 数据库结构优化

    2024-01-22 16:48:06       34 阅读
  5. Go 语言实现冒泡排序算法的简单示例

    2024-01-22 16:48:06       36 阅读
  6. 部署Golang服务

    2024-01-22 16:48:06       36 阅读
  7. 面试题-MySQL如何定位慢查询

    2024-01-22 16:48:06       33 阅读
  8. htb Analysis wp

    2024-01-22 16:48:06       24 阅读
  9. php.2安装Imagick扩展

    2024-01-22 16:48:06       40 阅读
  10. 计算机视觉未来的走向

    2024-01-22 16:48:06       34 阅读