数据库的设计(E-R图,数据库模型图,三大范式)

一.数据库设计的概念

数据库设计是将数据库中的数据实体及这些数据实体之间的关系,进行规划和结构化的过程.

二.数据库设计的重要性

  • 如果一个数据库没有进行一个良好的设计,那么这个数据库完成之后他的缺点是:
  • 1.效率会很低
  • 2更新和检索数据时会出现很多问题,
  • 反之,一个数据库被尽心策划了一番,具有良好的设计,那他的优点是:
  • 1.效率会很高.
  • 2.便于进一步扩展.
  • 3.使得应用程序的开发变得更容易.

三.设计数据库的步骤

  • 1.需求分析阶段:分析客户的业务和数据处理需求.
  • 2.概要设计阶段:他主要就是绘制数据库的E-R图.
  • 3.详细设计阶段:应用数据库的三大范式进行审核数据库的结构.
    总结:在进行数据库的系统分析时,都以下列4点位参考的基本步骤.
  • 01.收集信息.
  • 02.标识实体.
  • 03.标识每个实体需要储存的详细信息.
  • 04.标识实体之间的关系.

四.学会绘制E-R图

  • 绘制E-R图首先要了解什么是实体,什么是属性,什么是联系.
  • 1.首先实体是指现实世界中具有区分其他事物的特征或属性与其他实体有联系的实体,针对于数据库中的表而言实体是指表中一行一行特定数据,但我们在开发中,也常常把整个表称为一个实体.
  • 2.属性可以理解为实体的特征,针对于数据库中的表而言实体是指表中的列.
  • 3.联系是两个或多个实体之间的关联关系.
  • 4.实体关系图:
    在这里插入图片描述
    例:酒店管理系统E-R图:
    在这里插入图片描述

五.映射基数

  • 1.一对一:X中的一个实体最对与Y中的一个实体关联,并且Y中的一个实体最多与X中的一个实体关联.
    Eg:一个人只有一张身份证.
  • 2.一对多:X中的一个实体可以与Y中的任意数量的实体关联;Y中的一个实体最多与X中的一个实体关联.
    Eg:一个班级有多名学生.
  • 3.多对一:X中的一个实体最多与Y中的一个实体关联;Y中的一个实体可以与X中的任意数量的实体关联.
    Eg:客人与客房之间的关系,一个客人只能住一间客房.
  • 4.多对多:X中的一个实体可以与Y中的任意数量的实体关联,反之亦然.
    Eg:学生和课程之间的关系,一个学生可以有多门课程,一门课程可以对应多名学生.

六.绘制数据库模型图

以酒店管理系统为例:
在这里插入图片描述

七.数据库规范化

如果数据库没有进行相应的规范设计,虽然在查询数据库可能会比较容易,但有时会造成一些问题,主要的问题如下:

  • 1.信息重复(会造成储存空间的浪费及一些其他问题).
  • 2.更新异常(冗余信息不仅浪费空间,还会增加更新的难度).
  • 3.插入异常
  • 4.删除异常(在某些情况下,当删除一行时,可能会丢失有用的信息).

八.三大范式

1.第一范式:

目标是确保每列的原子性.如果每列都是不可再分的最小数据单元,则满足第一范式.

2.第二范式:

第二范式在第一范式的基础上更进一层,其目标是确保表中的每列都和主键相关,也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中.如果一个关系满足第一范式,并且除了主键以外的其他列都依赖与该主键.则满足第二范式.

3.第三范式:

第三范式在第二范式的基础上更进一层,第三范式的目标是确保每列都和主键列直接相关,而不是间接相关.如果一个关系满足第二范式,并且除了主键以外的其他列都这能依赖于主键列,列和列之间不存在相互依赖关系,则满足第三范式.

九.规范性和性能的关系

为了满足三大范式,我们的数据操作性能会受到相应的影响,所以,在实际的数据库设计中,既要考虑三大范式,避免数据的冗余和各种数据操作异常;有要考虑到数据访问性能,有时,为了减少表间连接,提高数据库的访问性能,允许适当的数据冗余列,这可能是最合适的数据库设计方案.

### 如何使用 Navicat 绘制数据库 ER #### 准备工作 确保已经安装并启动了最新版本的 Navicat Premium 或其他支持建模功能的 Navicat 版本。如果尚未拥有该软件,则需先下载并按照官方指导完成安装过程。 #### 创建新模型 点击菜单栏中的“文件”,选择“新建”-> “模型”。此时会弹出对话框让用户指定保存位置及名称,设置完毕后确认创建新的数据模型项目[^1]。 #### 添加表对象 通过工具箱内的标或者右键单击画布空白处,在弹出菜单中选取“添加/插入表(Table)”选项来向当前设计区域引入表格实体。对于每一个新增加的数据表而言,可以为其定义字段属性、主外键约束条件等内容。 #### 建立关联关系 选中两个已存在的表结构之一,拖拽鼠标至另一张目标表上释放;接着会在两者间形成一条连接线表示它们之间的联系形式(一对一、一对多或多对多)。根据实际业务逻辑调整箭头方向以反映正确的参照完整性规则。 #### 自动布局优化 当完成了初步的设计草稿之后,可利用顶部的功能按钮执行自动排列操作。“格式化表”命令能够帮助整理杂乱无章的对象分布情况,使得整个形更加清晰易读。 ```sql -- 示例 SQL 语句用于展示如何在 Navicat 中编写简单的 DDL (Data Definition Language) CREATE TABLE `students` ( `id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`) ); CREATE TABLE `courses` ( `course_id` INT NOT NULL AUTO_INCREMENT, `title` VARCHAR(100), PRIMARY KEY (`course_id`), FOREIGN KEY (`student_id`) REFERENCES students(`id`) ); ``` #### 导入导出功能 Navicat 支持将现有的物理数据库反向工程成可视化的 E-R Diagrams ,同时也允许用户把精心制作好的设计方案正向部署到特定的目标平台上去实施。这提高了工作效率并且减少了手动编码可能出现的人为失误风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值