【数据库系统概论】数据库设计

7.1 数据库设计概述

定义

数据库设计是指对于一个给定的应用环境,构造(设计) 优化的 数据库模式、内模式和外模式,并据此建立数据库及其 应用系统 ,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括 信息管理要求 数据操作要求 信息管理要求 :在数据库中应该存储和管理哪些数据对象 。
数据操作要求 :对数据对象需要进行哪些操作,如查询、增、 删、改、统计等操作。

数据库设计的目标

为用户和各种应用系统提供 信息基础设施和高效的运行环 。其中,高效的运行环境指数据库数据的 高存取效率 、数据库存储空间的 高利用率 和数据库系统运行维护的 高效率

数据库设计分6个阶段
需求分析
概念结构设计
逻辑结构设计
物理结构设计
数据库实施
数据库运行和维护
需求分析和概念设计 独立于任何数据库
管理系统
逻辑设计和物理设计 与选用的数据库管
理系统密切相

7.2 需求分析

需求分析就是分析用户的要求
是设计数据库的起点
结果是否准确地反映了用户的实际要求,将直接影响到后面各
个阶段的设计,并影响到设计结果是否合理和实用
需求分析的任务
详细调查现实世界要处理的对象(组织、部门、企业等)
充分了解原系统(手工系统或计算机系统)工作概况
明确用户的各种需求
在此基础上确定新系统的功能
新系统必须充分考虑今后可能的扩充和改变
调查的重点是“数据”和“处理”,获得用户对数据库的要求
(1)信息要求
(2)处理要求
(3)安全性与完整性要求
确定用户最终需求的难点
  用户缺少计算机知识,不能准确地表达自己的需求,他们所提出的需求往往不
断地变化。
  设计人员缺少用户的专业知识,不易理解用户的真正需求,甚至误解用户的需
解决方法
设计人员必须不断深入地与用户进行交流,才能逐步确定用户的实际需求

7.3 概念结构设计

概念模型的工具: E-R模型
实体之间的联系
两个实体型之间的联系:
①一对一联系(1∶1)
②一对多联系(1∶ n
③多对多联系( m n
联系的度: 参与联系的实体型的数目
2个实体型之间的联系度为2,也称为二元联系;
3个实体型之间的联系度为3,称为三元联系;
N个实体型之间的联系度为N,也称为N元联系
E-R图 提供了表示实体型、属性和联系的方法
实体型:用 矩形 表示,矩形框内写明实体名。
属性:用 椭圆形 表示,并用无向边将其与相应的实体型连接起来。
联系:用 菱形 表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1∶1, 1∶n m n )。
联系可以具有属性
为了简化E-R图的处置,现实世界的事物能作为属性对待的,尽量
作为属性对待。
两条准则:
(1) 作为属性,不能再具有需要描述的性质。 属性必须是不可分
的数据项,不能包含其他属性。
(2) 属性不能与其他实体具有联系,即E-R图中所表示的联系是
实体之间的联系
E-R图的集成一般需要分两步
合并。 解决各分E-R图之间的冲突,将分E-R图合并起来生
成初步E-R图。
修改和重构。 消除不必要的冗余,生成基本E-R图。
(1)合并E-R图,生成初步E-R图
各个局部应用所面向的问题不同,各个子系统的E-R图之间
必定会存在许多不一致的地方,称之为 冲突
子系统E-R图之间的冲突主要有三类:
①属性冲突
②命名冲突
③结构冲突
(2)消除不必要的冗余,设计基本E-R图
所谓 冗余的数据 是指可由 基本数据 导出的数据,冗余的联系是指
可由其他联系导出的联系。
消除冗余主要 采用分析方法 ,即以数据字典和数据流图为依据,
根据数据字典中关于数据项之间逻辑关系的说明来消除冗余。
规范化理论 来消除冗余
①确定分E-R图实体之间的数据依赖。
实体之间一对一、一对多、多对多的联系可以用实体码之间的函数依
赖来表示。于是有函数依赖集F L
E-R图的集成
.3 概念结构设计
②求FL的最小覆盖GL,差集为 D=FL-GL。
逐一考察D中的函数依赖,确定是否是冗余的联系,若是,就把它去掉

7.4 逻辑结构设计

任务

把概念结构设计阶段设计好的 基本E-R图转换为与选用数据库管理
系统产品所支持的数据模型相符合的逻辑结构。
转换内容:
E-R图由实体型、实体的属性和实体型之间的联系三个要素组成
关系模型的逻辑结构是一组关系模式的集合
  将E-R图转换为关系模型: 将实体型、实体的属性和实体型之间的
联系转化为关系模式
实体集的转换
1:1二元联系的转换
在某关系模式的属性中加入另一个关系模式的码和联系本身的属性
1:n二元联系的转换
可以转换为一个独立的关系模式。也可以与n端对应的关系模式S合并。即在关系模式S中加入联 系本身的属性和另一端实体的主码,且该主码作为S的外码。
m:n二元联系的转换
转换为一个新的关系模式S。把与该联系相连的实体集的主码以及联系本身的属性作为关系S的属
性,各实体集的码组合作为关系S的主码或者主码的一部分,且各实体集的主码为关系S的外码。
(4)三个或三个以上实体间的一个多元联系转换为一个关系模式。
关系的属性:与该多元联系相连的各实体的码以及联系本身的属性
关系的码:各实体码的组合
(5)具有相同码的关系模式可合并
减少系统中的关系个数
方法:
将其中一个关系模式的全部属性加入到另一个关系模式中
然后去掉其中的同义属性(可能同名也可能不同名)
适当调整属性的次序

数据模型的优化: 数据库逻辑设计的结果不是唯一的,得到初步数据
模型后,还应该适当地修改、调整数据模型的结构,以进一步提高数
据库应用系统的性能。
关系数据模型的优化通常以 规范化理论 为指导。
(1)确定 数据依赖
  按需求分析阶段所得到的语义,分别写出每个关系模式内部各属性之间的
数据依赖以及不同关系模式属性之间数据依赖。
(2)对于各个关系模式之间的数据依赖进行 极小化处理 ,消除冗余的联系。
(3)按照 数据依赖的理论对关系模式 进行分析,考察是否存在部分函数依赖、
传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式。
(4)按照需求分析阶段得到的各种应用对数据处理的要求, 分析对于这样的应
用环境这些模式是否合适 ,确定是否要对它们进行合并或分解。
7.4 逻辑结构设计
数据模型的优化方法
(5)对 关系模式进行必要分解 ,提高数据操作效率和存储空间的利用率。
  常用分解方法: 水平分解、垂直分解

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Element UI日期选择器默认显示1970年解决方案

目录 问题背景 问题根源 1. 数据绑定类型错误 2. 初始化逻辑错误 解决方案 核心思路 步骤 1:正确初始化日期对象 步骤 2:处理数据交互 步骤 3:处理年份切换事件 完整代码示例 注意事项 1. 时区问题 2. 格式化绑定值 常见问题 1. 为什…

kafka-保姆级配置说明(producer)

配置说明的最后一部分; ##指定kafka集群的列表,以“,”分割,格式:“host:port,host:port” ##此列表用于producer(consumer)初始化连接使用,server列表可以为kafka集群的子集 ##通过此servers列…

.NET周刊【2月第2期 2025-02-09】

国内文章 开箱即用的.NET MAUI组件库 V-Control 发布了! https://www.cnblogs.com/jevonsflash/p/18701494 文章介绍了V-Control,一个适用于.NET MAUI的组件库。作者计划将其开源,强调.NET MAUI是生产力强的跨平台移动开发工具。V-Control提供多种组件…

PHP2(WEB)

##解题思路 打开页面什么线索都没有,目录扫描只是扫出来一个index.php,而源代码没有东西,且/robots.txt是不允许访问的 于是一番查询后发现,有个index.phps的文件路径,里头写着一段php的逻辑,对url的id参数…

VisActor/VTable - 快速搭建表格

VTable源于VisActor体系,该体系是从字节跳动大量可视化场景沉淀而来,旨在提供面向叙事的智能可视化解决方案。VisActor包括渲染引擎、可视化语法、数据分析组件、图表组件、表格组件、GIS组件、图可视化组件、智能组件等多个模块,以及周边生态…

c++第一课(基础c)

目录 1.开场白 2.char(字符) 3.字符数组 4.ASCII码 1.开场白 OK,咱们也是亿(不是作者故意的)天没见,话不多说,直接开始! 2.char(字符) 众所不周知&…

2025年02月21日Github流行趋势

项目名称:source-sdk-2013 项目地址url:https://github.com/ValveSoftware/source-sdk-2013项目语言:C历史star数:7343今日star数:929项目维护者:JoeLudwig, jorgenpt, narendraumate, sortie, alanedwarde…

【简单】209.长度最小的子数组

题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回0。 示例 1: 输入&am…

【STM32】内存管理

【STM32】内存管理 文章目录 【STM32】内存管理1、内存管理简介疑问:为啥不用标准的 C 库自带的内存管理算法?2、分块式内存管理(掌握)分配方向分配原理释放原理分块内存管理 管理内存情况 3、内存管理使用(掌握&#…

Linux 命令大全完整版(14)

5. 文件管理命令 chgrp(change group) 功能说明&#xff1a;变更文件或目录的所属群组。语  法&#xff1a;chgrp [-cfhRv][–help][–version][所属群组][文件或目录…] 或 chgrp [-cfhRv][–help][–version][–reference<参考文件或目录>][文件或目录…]补充说明&…

[数据结构]顺序表详解

目录 一.线性表 二.顺序表 2.1概念及结构 1. 静态顺序表&#xff1a;使用定长数组存储元素。 2. 动态顺序表&#xff1a;使用动态开辟的数组存储。 2.1按需申请 2.2 接口实现&#xff1a;增删查改 SeqList.h: SeqList.c: test.c 一.线性表 线性表 &#xff08; line…

綫性與非綫性泛函分析與應用_2.賦范向量空間-母本

第2章 賦范向量空間 1.向量空間;哈默爾基;向量空間的維數 - 定義與性質 - 向量空間的定義:設\mathbb{K}為數域,集合X是\mathbb{K}上的向量空間,若在X上定義了加法(x,y)\in X\times X\to x + y\in X和數乘(\alpha,x)\in\mathbb{K}\times X\to\alpha x\in X兩種運算,且滿足…

2025年- G17-Lc91-409.最长回文-java版

1.题目描述 2.思路 思路1: 判断一个字符串中的字母个数是否是偶数个。 遍历字符串&#xff0c;检查每个字符是否是字母&#xff08;可以通过 Character.isLetter() 来判断&#xff09;。 累加字母的个数。 最后判断字母的个数是否是偶数。 思路2: 这段 Java 代码的作用是 统…

SpringBoot+Mybatis-Plus实现动态数据源

目录 一、前言二、代码实现1&#xff09;工程结构2&#xff09;相关依赖3&#xff09;数据源拦截切面4&#xff09;动态数据源切换5&#xff09;核心配置类6&#xff09;使用 三、原理分析1&#xff09;mapper接口注入流程2&#xff09;动态数据源切换执行流程 四、声明式事务导…

玩转 Java 与 Python 交互,JEP 库来助力

文章目录 玩转 Java 与 Python 交互&#xff0c;JEP 库来助力一、背景介绍二、JEP 库是什么&#xff1f;三、如何安装 JEP 库&#xff1f;四、JEP 库的简单使用方法五、JEP 库的实际应用场景场景 1&#xff1a;数据处理场景 2&#xff1a;机器学习场景 3&#xff1a;科学计算场…

Qt常用控件之日历QCalendarWidget

日历QCalendarWidget QCalendarWidget 是一个日历控件。 QCalendarWidget属性 属性说明selectDate当前选中日期。minimumDate最小日期。maximumDate最大日期。firstDayOfWeek设置每周的第一天是周几&#xff08;影响日历的第一列是周几&#xff09;。gridVisible是否显示日历…

三数之和:经典问题的多种优化策略

三数之和&#xff1a;经典问题的多种优化策略 大家好&#xff0c;我是Echo_Wish。今天我们来聊一个经典的算法问题——三数之和&#xff08;3Sum&#xff09;。它是许多面试和算法竞赛中常见的问题之一&#xff0c;也常常考察我们对算法优化的理解和技巧。我们不仅要解决问题&…

Go 语言中的协程

概念 Go语言中的协程&#xff08;Goroutine&#xff09;是一种由Go运行时管理的轻量级线程。它是Go语言并发模型的核心&#xff0c;旨在通过简单、易用的方式支持高并发的程序设计。 创建协程 协程的创建非常简单&#xff0c;只需要使用go关键字&#xff0c;后面跟着一个函数…

JAVA最新版本详细安装教程(附安装包)

目录 文章自述 一、JAVA下载 二、JAVA安装 1.首先在D盘创建【java/jdk-23】文件夹 2.把下载的压缩包移动到【jdk-23】文件夹内&#xff0c;右键点击【解压到当前文件夹】 3.如图解压会有【jdk-23.0.1】文件 4.右键桌面此电脑&#xff0c;点击【属性】 5.下滑滚动条&…

基于javaweb的SpringBoot个人博客系统设计和实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…