【数据库系统概论】第七章数据库设计

news2024/11/26 22:52:45

7.1数据库设计概述

数据库设计定义是什么?

数据库设计(database design):数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。

其中:数据库设计的目标是为用户和各种应用系统提供一个信息基础设施和高效的运行环境

信息管理要求:数据库中应该存储和管理哪些数据对象

数据操作要求:对数据对象需要进行哪些操作

数据库设计基本步骤

需求分析

概念结构设计

逻辑结构设计

物理结构设计

数据库实施

数据库运行和维护

注:

需求分析和概念结构设计可以独立于任何数据库管理系统进行

逻辑结构设计和物理结构设计与选用的数据库管理系统密切相关

7.3概念结构设计

将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程就是概念结构设计,它是整个数据库设计的关键

一:E-R模型

(1)两个实体之间的联系

一般地,把参与联系的实体型的数目称为联系的度

两个实体型之间的联系度为2,也称为二元联系

三个实体型之间的联系度为3,称为三元联系

N个实体型之间的联系|度为N,也称为N元联系

①:一对一联系(1:1)

例如,学校里一个班级只有一个正班长,而一个班长只在一个班中任职,则班级与班长之间是1:1关系

②:一对多联系(1:n)

例如,一个班级中有若干名学生,而每个学生只在一个班级中学习, 则班级与学生之间具有一对多联系

③:多对多联系(m:n)

例如,一门课程同时有若干个学生选修,而一个学生可以同时选修多门课程,则课程与学生之间具有多对多联系。

(2)两个以上实体型之间的联系

两个以上实体型之间也存在着一对一、一对多或多对多的联系

例如,对于课程、教师与参考书三个实体型,如果一门课程可以有若干个教师讲授,使用若干本参考书,而每一个教师只讲一门课程,每一本参考书只供一门课程使用,则课程与教师、参考书之间的联系是一对多的

又如,有三个实体型:供应商、项目、零件,一个供应商可以供给多个项目多种零件,而每个项目可以使用多个供应商供应的零件,每种零件可由不同供应商供给,由此看出供应商、项目、零件三者之间是多对多的联系

(3)单个实体型内的联系

同一个实体集内的各实体之间也可以存在一对一、一对多和多对多的联系

例如,职工实体型内部具有领导与被领导的联系,即某一职工 (干部)“领导”若干名职工,而一个职工仅被另外一个职工直接领导,因此这是一对多的联系

二:E-R图

(1)定义

使用实体联系图可以建立数据模型,利用E-R图描绘的数据模型称之为E-R模型

  • 实体: 描述的数据对象
  • 属性: 描述数据对象的性质
  • 联系: 描述数据对象之间的交互方式

(2)符号表示

椭圆吧

(3)示例

一个学生可选修多门课,一门课有若干学生选修;一个教师可讲授多门课,一门课只有一个教师讲授;学生选修一门课,产生成绩;学生的属性有学号、姓名等;教师的属性有教师编号,教师姓名等;课程的属性有课程号、课程名等。请画出该系统E-R图

7.4逻辑结构设计

一:E-R图向关系模式的转换

(1)转换原则

一般1:1、1:m联系不产生新的关系模式,而是将一方实体的码加入到多方实体对应的关系模式中,联系的属性也一并加入

m:n联系要产生一个新的关系模式,该关系模式由联系涉及实体的码加上联系的属性(若有)组成

(2)具体转换

①:同一实体间1:m 联系

例如,下面的E-R图可以转化为如下关系模式

职工(工号,姓名,年龄,性别,职称,工资,领导者工号,民意测验)

②:同一实体间m:n 联系

必须为这个“联系”单独建立一个关系,该关系中至少应该包含被它所联系的双方实体的“主码”,如果联系有属性,也一并纳入该关系中。由于这个“联系”只涉及一个实体,所以加入的实体的主码不能同名

例如,下面的E-R图可以转化为如下关系模式

零部件(代号,名称,价格)

组装(代号,组装件代号,数量)

B:两实体间

①:两实体间1:1联系

一个1:1 联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并(米老师说一般搞合并)

如果与某一端实体对应的关系模式合并:则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性

例如,下面的E-R图可以转化为如下关系模式

厂长(姓名,性别,年龄,厂号,任期)

工厂(厂号,厂名,地点)

②:两实体间1:m联系

可以将“1”方实体的主码纳入“m”方实体对应的关系中作为外码,同时把联系的属性也一并纳入“m”方对应的关系中

例如,下面的E-R图可以转化为如下关系模式

仓库(仓库号,地点,面积)

商品(货号,品名,价格,仓库号,数量)

③:两实体间m:n联系

必须对“联系”单独建立一个关系,该关系中至少包含被它所联系的双方实体的主码,如果联系也有属性,也一并纳入该关系中

例如,下面的E-R图可以转化为如下关系模式

学生(学号,姓名,性别,年龄)

课程(课程号,课程名,学时)

选修(学号,课程号,成绩)

一道上课例题(涵盖大部分知识点)

某一研究院有若干处室,包括处编号、处名称、地点、负责人等;

每一个处室有若干个科室,包括科编号、科名称、人数、地点;

每一个科室有若干个工作人员,包括职工编号、姓名、职务,学历、职称,简历;

每个职工的简历包括开始时间、终止时间、单位、担任职务;

该研究院承担若干个课题,包括课题号课题名、经费等;

每个职工可以承担若干个课题;

每个课题可以由若干人参加每个课题有一个负责人。

要求:画出ER图,并且向关系模式转换

向关系模式转换:

注意点和难点:

1.负责人写成属性,首先它不可能在职工当中,因为那个意思代表的是所有职工只有一个代表,现在把它写在课题的属性当中去

2.简历此时不算职工的属性,他是一个独立的实体

3.关系转换的时候,m:n是参加关系,所以得写双方的主码和联系的属性(本题没有联系属性)

二:数据模型的优化

数据库逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,还应该根据应用需要适当地修改、调整数据模型的结构,这就是数据模型的优化

关系数据模型的优化通常以规范化理论为指导,方法为:

确定每个关系模式内部各个属性之间的数据依赖以及不同关系模式属性之间的数据依赖

对各个关系模式之间的数据依赖进行最小化处理,消除冗余的联系

确定各关系模式的范式等级

按照需求分析阶段得到的处理要求,确定要对哪些模式进行合并或分解

为了提高数据操作的效率和存储空间的利用率,对上述产生的关系模式进行适当的修改、调整和重构

三:设计用户子模式

将概念模型转换为全局逻辑模型后,还应该根据局部应用需求,结合具体关系数据库管理系统的特点设计用户的外模式

在定义用户外模式时可以注重考虑用户的习惯于方便,包括以下几个方面

使用更符合用户习惯的别名

可以为不同级别的用户定义不同的视图,以保证系统的安全性

可将经常使用的复杂的查询定义为视图,简化用户对系统的使用

学习通课后题

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

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

相关文章

【排序算法】详解冒泡排序及其多种优化稳定性分析

文章目录 算法原理细节分析优化1优化2算法复杂度分析稳定性分析总结 算法原理 冒泡排序(Bubble Sort) 就是从序列中的第一个元素开始,依次对相邻的两个元素进行比较,如果前一个元素大于后一个元素则交换它们的位置。如果前一个元素小于或等于后一个元素…

RootSIFT---SIFT图像特征的扩展

RootSIFT是论文 Three things everyone should know to improve object retrieval - 2012所提出的 A Comparative Analysis of RootSIFT and SIFT Methods for Drowsy Features Extraction - 2020 当比较直方图时,使用欧氏距离通常比卡方距离或Hellinger核时的性能…

分析智能平台VMware Greenplum 7 正式发布!

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

芯片学习记录TLP104

TLP104 芯片介绍 引脚信息 引脚1阳极3阴极4GNDGND5输出6VCC5V(4.5~30) 推荐使用条件 *此项目表示操作范围,而不是建议的操作条件。 注:建议的操作条件作为设计指南,以获得预期的性能设备。此外,每个项目…

HTML5播放 M3U8的hls流地址

在HTML5页面上播放M3U8的hls流地址 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>视频播放</title> <script src"https://cdn.jsdelivr.net/npm/hls.jslatest"></script> &…

Spring6注解管理Bean

文章目录 过程搭建子模块spring6-ioc-annotation使用注解定义 BeanAutowired注入①场景一&#xff1a;属性注入②场景二&#xff1a;set注入③场景三&#xff1a;构造方法注入④场景四&#xff1a;形参上注入⑤场景五&#xff1a;只有一个构造函数&#xff0c;无注解⑥场景六 A…

Vue3 + Quasar系列-代码配置以及报错汇总记录(不断更新中)

1. Vue3 Quasar系列-代码配置打包去掉hash后缀 去掉hash https://quasar.dev/quasar-cli-vite/developing-pwa/configuring-pwa 2. Vue3 Quasar改变主题背景 quasar的样式和其他的框架修改不太一样&#xff0c;需要我们使用动态的方式来进行变更&#xff0c;一般来说有两…

计算机毕业设计 高校实习信息发布网站的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

宝塔使用腾讯COS存储实现自动备份服务器网站数据图文教程

一、进入宝塔安装腾讯COS 点击设置打开后需要配置以下cos参数 二、腾讯云创建COS存储桶 选择私有读写&#xff0c;其他默认就行 三、创建访问密钥 四、配置宝塔中腾讯COS相关设置 很多人是配置错误导致无法正常链接cos region为cos存储桶所属地域 Bucker为存储桶名称 五、…

力扣-461.汉明距离

Method 1 直接比较x&#xff0c;y二进制中的每一位&#xff0c;如果不同则cnt加一&#xff0c;并且x&#xff0c;y每次右移一位 class Solution { public:int hammingDistance(int x, int y) {int cnt 0;while(x > 0 && y > 0) {if((x & 1) ! (y & 1)…

MySQL 2023 MySQL Summit 大会感受,我们距离MySQL 新技术越来越远

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题&#xff0c;有需求都可以加群&#xff0c;群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;…

2023.10.14 培训总结

培训内容 数字模型联合仿真及集成测试技术 MBSE(Model-Based-System-Engiaeering&#xff09; 参数化建模参数化仿真 产生的疑问 支持面向对象支持CAE CFD工具优化工具 飞机的业务功能 开发分布式架构 新技术 WSDL协议DDS 发布/订阅SAOPCORBA 明显开发者 Chris Garrett 美…

c# xml 参数配置表的使用

使用简介 实际使用界面 配置表管理界面 进入 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;…

挖机技术哪家强

挖机技术哪家强&#xff0c;中国山东找蓝翔&#xff0c;开挖机是我曾经的梦想&#xff0c;每个男人心中都有一台自己的挖机&#xff0c;近半年做的项目就是关于挖机销售CRM&ERP系统&#xff0c; 今天我们聊聊关于挖机的基本知识。 注&#xff1a;此文并非广告&#xff0c;…

Lua 协程

一、协程 Lua 中使用半协程的方式进行组织代码。 和线程的最大区别在于&#xff0c;一个多线程程序可以并行运行多个线程&#xff0c;而协程却需要彼此协作运行&#xff0c;即任意指定时刻只能一个协程运行&#xff0c;且只有当正在运行的协程显式地要求被挂起时&#xff0c;…

Net6 用imagesharp 实现跨平台图片处理并存入oss

项目要求&#xff1a;生成电子证书 一、模板文件在OSS中&#xff0c;直接加载 二、向模板文件添加二维码 三、向模板文件添加多行文字 四、生成二维码&#xff0c;存入本地&#xff0c; 五、向模板文件添加二维码 代码实现步骤 一、建立.net 6 API项目&#xff0c;安装N…

SpringBoot-黑马程序员-学习笔记(五)

74.自定义bean属性绑定以及第三方bean属性绑定 自定义bean属性绑定 1.自定义一个bean Data Component public class ServerConfig {private String ipAddress;private int port;private long timeout; } 2.在yml配置文件中中定义一组值 3.在bean中进行属性绑定 加上这个注…

【Linux】:Linux环境与版本

以下哪个命令输出Linux内核的版本信息 A.uname -r B.vmstat C.sar D.stat uname -r 查看linux内核版本信息 vmstat 报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息 sar 主要帮助我们掌握系统资源的使用情况&#xff0c;特别是内存和CPU的使用情况 stat 用于显示…

【从零开始学习Redis | 第二篇】Redis中的数据类型和相关命令

前言&#xff1a; Redis是一种快速、高效的开源内存数据库&#xff0c;被广泛用于构建各种类型的应用程序。其被设计成支持多种数据类型&#xff0c;这使得Redis在处理各种场景的数据存储和操作中非常灵活。Redis的数据类型提供了对不同数据结构的直接支持&#xff0c;包括字符…

并查集维护集合 ac240食物链

题目&#xff1a; 代码&#xff1a; #include<iostream> using namespace std; const int N50010; int p[N],d[N]; int n,m;int find(int x){if(p[x]!x){ int ufind(p[x]);d[x] d[p[x]];p[x]u;}return p[x]; }int main(){scanf("%d%d",&n,&m);fo…