【数据库】六、数据库设计

文章目录

  • 六、数据库设计
    • 1 数据库设计步骤
      • 1.1 规划阶段
      • 1.2 需求分析
      • 1.3 概念设计阶段(重点)
      • 1.4 逻辑设计阶段(重点)
      • 1.5 物理设计阶段
      • 1.6 数据库的实现
      • 1.7 数据库运行与维护
    • 2 概念模型设计
      • 2.1 ER模型
        • 2.1.1 ER模型的基本元素
        • 2.1.2 联系的设计
        • 2.1.3 采用ER模型的概念设计
        • 2.1.4 ER模型转换为关系(逻辑)模型
      • 2.2 UML模型
    • 3 逻辑模型设计

六、数据库设计

构造最优的数据模型,建立数据及其应用系统的过程。影响着应用系统的质量和运行效果。

1 数据库设计步骤

数据分析(用户需求) -> 数据建模(概念模型) -> 关系数据库模型(逻辑模型) -> 关系数据库

其中 逻辑模型对外面向外模型 向内面向内模型

image-20250110222242049

1.1 规划阶段

  • 系统调查:画组织层次图
  • 可行性分析:技术、经济、法律
  • 确定数据库系统的总目标

1.2 需求分析

  • 业务流程图

  • 系统关联图

  • 数据流程图

  • 数据字典:关系数据库管理系统内部的一组系统表,记录了数据库中所有的定义信息

    • 包括数据、数据结构、数据流、数据存储
  • 得出 ===> 系统功能

1.3 概念设计阶段(重点)

目标是产生反映用户需求的数据库概念结构,得到一个与DBMS无关的概念模型。特点:硬件独立,软件独立

主要步骤

  1. 进行数据抽象,设计局部概念模型
  2. 将局部概念模型综合成全局概念模型
  3. 评审

设计方法

  1. 实体联系方法(ER模型)
  2. UML模型

1.4 逻辑设计阶段(重点)

目的:把概念设计阶段的概念模型转化成逻辑结构(与选用的机器上DBMS所支持的数据模型相符合)

逻辑结构:包括数据库逻辑模型和外模式

主要步骤

  1. 把概念模型转化成逻辑模型
  2. 设计外模型
  3. 设计应用程序域数据的接口
  4. 评估模型
  5. 修正模型

1.5 物理设计阶段

对应三级模式两级映像的内模式。
目的:对于给定的基本数据模型,选择最适合应用环境的物理结构

主要步骤

  • 物理结构设计
    1. 存储记录结构设计
    2. 确定数据存放位置
    3. 存取方法的设计
  • 约束和具体的程序设计
    1. 完整性和安全性的考虑
    2. 程序设计

1.6 数据库的实现

  • 定义数据库结构(DDL)
  • 组织数据入库
  • 调试与编制
  • 试运行

1.7 数据库运行与维护

由DBA完成。恢复、安全、监督、重构

注意:如果应用太大,无法通过重构来满足新的需求,则说明数据库的生命周期已结束,需重新设计数据库


2 概念模型设计

概念模型的作用

  • 是现实世界模型和计算机模型的桥梁。
  • 按用户观点对现实世界进行建模,以便于用户理解的表达方式(如ER图)对客观世界中数据的组织结构进行描述
  • 是数据库设计人员与用户之间交流的语言
  • 使设计出来的数据库能实现用户的各种应用需求

2.1 ER模型

ER:实体联系模型。

2.1.1 ER模型的基本元素
  1. 实体

    实体指数据对象,客观存在可以区别的事物;一个学生。实体集(常指),同一类实体构成的集合;全部学生。

    ER图中实体用方框表示,实体名为名词

    注意:一个实体必须有实体标识符。

  2. 属性

    属性是实体的某一特征。实体标识符是能够唯一表示实体的属性或属性集,一个实体只有一个实体标识符,主键。

    ER图中属性用椭圆表示,加下划线的属性为标识符(主键),属性名为名词。注:外键用波浪线

    实体的属性值是数据库中存储的主要数据。若干个属性的一组特定值确定了一个特定实体。

    实体和属性都是名词,该如何区分二者?

    实体由多个属性来构成,‘可再分’;属性‘不可再分’,率属于某个数体。

  3. 联系

    联系是一个或多个实体之间的关联关系;联系集:同一类联系的集合。

    ER图中联系用菱形表示,联系名为动词。连接菱形的线上的数字中体现了联系的类型。

2.1.2 联系的设计
  • 联系的元数:一个联系中设计到的实体个数。
    • 一元联系,也称递归联系,自身和自身的联系。
    • 二元联系,三元联系,…
  • 联系类型
    1. 二元联系(常见)
      • 1:1:E1实体集中的某个实体最多和E2实体集中的一个实体有联系,E2中的某个实体最多和E2中的一个实体有联系。
      • 1:n:E1的某个实体可以和E2中的多个实体有联系,E2中的某个实体最多和E1中的一个实体有联系。例:一个系能聘用多个教授,一个教授最多受聘于一个系。联系也可以有属性。
      • m:n:E1的某个实体可以和E2中的多个实体有联系,E2中的某个实体最多和E1中的多个实体有联系。例:学生和课程之间的联系。
    2. 一元联系(特殊)
    3. 三元联系(特殊):一个联系着涉及到多个实体
2.1.3 采用ER模型的概念设计

设计步骤

  1. 设计局部ER模型
    • 确定实体
    • 确定属性:要点、不可再分
    • 确定实体间联系
  2. 结合全局ER模型
    • 确定公共实体类型:根据实体名和主键
    • 合并局部ER模型
    • 消除冲突
  3. 优化设计ER模型
    • 原则:合并实体类型、消除冗余属性、消除冗余联系

合并分ER图的三大冲突

  1. 属性冲突:包括属性域冲突
  2. 命名冲突:同名异议。异议同名。
  3. 结构冲突
    • 同一对象在不同应用中具有的不同抽象。实体、属性不统一。
    • 同一实体在不同分ER图中属性组成不同。
    • 实体之间的联系在不同分ER图中呈不同类型

设计实例

image-20250110222252089

2.1.4 ER模型转换为关系(逻辑)模型

转换步骤

  1. 实体类型转换
    • 每个实体类型转换成一个关系模式
    • 实体的属性即为关系模式属性
    • 实体标识符即为关系模式的键
  2. 联系类型转换
    • 二元联系类型
      • 1:1 :在任意一个关系模式添加对方的主键作为外键即可
      • 1:n :在n方加入1方的主键作为外键
      • m:n :将联系类型转换为关系模式,主键为双方键的组合
    • 一元联系、三元联系类型类似

案例

image-20250110222300057


2.2 UML模型


3 逻辑模型设计

把概念设计的模型通过根据直接可以转化为逻辑模型,也就是计算机中数据库,我们可以通过SQL语言来操作各种数据。

这里不做过多赘述,就是SQL语言中设计表、设计数据库的操作。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/951687.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

onLoad 生命周期函数是否执行取决于跳转的方式和小程序的页面栈管理机制

文章目录 1. 页面跳转方式2. 你的场景分析3. 页面生命周期4. 总结5. 建议 在微信小程序中,页面跳转时, onLoad 生命周期函数是否执行取决于跳转的方式和小程序的页面栈管理机制。以下是详细说明: 1. 页面跳转方式 微信小程序提供了多种页面…

51c~Pytorch~合集4

我自己的原文哦~ https://blog.51cto.com/whaosoft/12311033 一、Pytorch~训练-使用 这里介绍了Pytorch中已经训练好的模型如何使用 Pytorch中提供了很多已经在ImageNet数据集上训练好的模型了,可以直接被加载到模型中进行预测任务。预训练模型存放在Pytorch的…

深度学习的原理和应用

一、深度学习的原理 深度学习是机器学习领域的一个重要分支,其原理基于多层神经网络结构和优化算法。以下是深度学习的核心原理: 多层神经网络结构:深度学习模型通常由多层神经元组成,这些神经元通过权重和偏置相互连接。输入数据…

基于人工智能的公司logo设计生成方法

随着科技的飞速发展,人工智能(AI)已经深入到我们生活的方方面面。其中,基于AI的公司logo设计生成方法,不仅为品牌形象的塑造提供了新的思路,也为企业带来了前所未有的设计体验。本文将详细探讨这一新兴的、…

BO-CNN-BiLSTM-Multihead-Attention,贝叶斯优化CNN-BiLSTM融合多头注意力机制多变量回归预测

BO-CNN-BiLSTM-Multihead-Attention,贝叶斯优化CNN-BiLSTM融合多头注意力机制多变量回归预测 目录 BO-CNN-BiLSTM-Multihead-Attention,贝叶斯优化CNN-BiLSTM融合多头注意力机制多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Ma…

WPF系列九:图形控件EllipseGeometry

简介 EllipseGeometry用于绘制一个椭圆的形状。它通常与其他图形元素结合使用,比如 Path 或者作为剪切区域来定义其他元素的外形。 定义椭圆:EllipseGeometry 用来定义一个椭圆或者圆的几何形状。参与绘制:可以被用作 Path 元素的数据&…

ue5动画重定向,一键重定向。ue4小白人替换成ue5

这就是我们下载的 初学者动画内容包 点击设置选中列 绿色的是动画 黄色的关卡 蓝色是蓝图 ctrla 全选 ctrl鼠标左键 选中所有动画 重定向动画资产 不要选错,只要绿色 选择目标网格体 选择所有的绿色 动画 导出动画 添加前缀ycn 导出 一定要提前新建好存放的…

服务器漏洞修复解决方案

漏洞1、远程桌面授权服务启用检测【原理扫描】 Windows Remote Desktop Licensing Service is running: Get Server version: 0x60000604 1、解决方案:建议禁用相关服务避免目标被利用 方法一:使用服务管理器 打开“运行”对话框(WinR&am…

uniapp 微信小程序内嵌h5实时通信

描述: 小程序webview内嵌的h5需要向小程序实时发送消息,有人说postMessage可以实现,所以试验一下,结果是实现不了实时,只能在特定时机后退、组件销毁、分享时小程序才能接收到信息(小程序为了安全等考虑做了…

案例解读 | 香港某多元化综合金融企业基础监控+网管平台建设实践

PART01 项目背景 01客户简介案例客户是一家创立20多年的香港某多元化综合金融企业,其业务范围涵盖证券、期货、资产管理、财富管理等,凭借广泛的业务网络和多元化的金融服务产品,在市场中拥有显著的影响力。02痛点分析随着业务版图的持续拓展…

LabVIEW实现动态水球图的方法

水球图是一种直观展示百分比数据的图表,常用于数据监测与展示。LabVIEW 虽不直接支持水球图绘制,但可通过图片控件动态绘制波形,或借助 HTMLCSS 的 Web 控件实现。此外,还可以结合 Python 等第三方工具生成水球图,LabV…

Simulink中的正弦波模块学习【Sine Wave】

Simulink中的正弦波模块学习 Simulink库中的Sine Wave模块 如下图所示为MATLAB Simulink中的正弦波模块 其元器件库位置为Simulink→Sources→Sine Wave 各项设置参数如下, 点击Help可查看详细信息 正弦波的数学表达式为 y A sin ⁡ ( ω x φ ) k y A \sin(\omega x \va…

maven高级(day15)

Maven 是一款构建和管理 Java 项目的工具 分模块设计与开发 所谓分模块设计,顾名思义指的就是我们在设计一个 Java 项目的时候,将一个 Java 项目拆分成多 个模块进行开发。 分模块设计我们在进行项目设计阶段,就可以将一个大的项目拆分成若干…

Vite源码学习分享(一)

!](https://i-blog.csdnimg.cn/direct/971c35b61c57402b95be91d2b4965d85.png) 同一个项目 vite VS webpack启动速度对比

C#里使用libxl设置EXCEL里公式计算的例子

在EXCEL的使用里,经常使用的是公式功能, 为什么会这样说呢? 因为公式是一种自动化计算工具,并且可以固化人类的智慧,相当于把复杂的计算功能嵌入到固定的数据处理了。比如一个经验丰富的财务人员,可以编制一个复杂公式计算的表格,只要一个不懂财务的人员,输入每个人的…

使用证件照制作软件的常见问题及解决方案

在数字化时代,证件照的制作变得越来越简单。借助各种证件照制作软件,我们可以轻松在家中制作出符合要求的证件照。然而,用户在使用这些软件时,可能会遇到一些常见问题。为了帮助您顺利制作出满意的证件照,我们整理了一…

【LeetCode Hot100 贪心算法】 买卖股票的最佳时机、跳跃游戏、划分字母区间

贪心算法 买卖股票的最佳时机买卖股票的最佳时机II跳跃游戏跳跃游戏II划分字母区间 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的…

LLaMA-Factory web微调大模型并导出大模型

LLaMA-Factory 开源大模型如LLaMA,Qwen,Baichuan等主要都是使用通用数据进行训练而来,其对于不同下游的使用场景和垂直领域的效果有待进一步提升,衍生出了微调训练相关的需求,包含预训练(pt)&am…

30天开发操作系统 第 12 天 -- 定时器 v1.0

前言 定时器(Timer)对于操作系统非常重要。它在原理上却很简单,只是每隔一段时间(比如0.01秒)就发送一个中断信号给CPU。幸亏有了定时器,CPU才不用辛苦地去计量时间。……如果没有定时器会怎么样呢?让我们想象一下吧。 假如CPU看不到定时器而仍想计量时…

HOW - Form 表单 label 和 wrapper 对齐场景

一、背景 在日常使用 表单 时&#xff0c;我们一般有如下布局&#xff1a; 可以通过 Form 表单提供的配置直接设置&#xff1a; <Formform{form}labelCol{{ span: 4 }}wrapperCol{{ span: 20 }}onFinish{handleSubmit}><Form.Itemlabel"输入框"name"…