数据库系统原理与实践 笔记 #6

news2024/11/18 20:23:17

文章目录

  • 数据库系统原理与实践 笔记 #6
  • 数据库设计和E-R模型
    • 设计过程
    • 实体-联系模型
      • 实体集
      • 联系集
      • 联系集中实体的角色
      • 联系集的度
      • 属性
      • 复合属性
    • 约束
      • 映射基数约束
      • 参与约束
      • 实体集的码
      • 联系集的码
      • 冗余属性
    • 实体-联系图
      • E-R图
      • 参与联系集中的实体集
      • 基数约束
      • 角色
      • 三元关系上的基数约束
      • 弱实体集
    • 转换为关系模式
      • 具有简单属性的实体集的表示
      • 复合属性
      • 多值属性
      • 联系集的表示
      • 模式的冗余—合并

数据库系统原理与实践 笔记 #6

数据库设计和E-R模型

设计过程

  • 设计数据库模式、设计访问更新数据库的程序、以及设计控制数据访问的安全模式
  • 设计阶段:
    • 概念设计阶段:构建实体-联系图
    • 逻辑设计阶段:将实体-联系图映射到关系模式
    • 物理设计模式:指明数据库文件组织格式和索引结构
  • 设计问题:冗余、不完整

实体-联系模型

  • 实体-联系(Entity-Relationship)模型:E-R模型是一种语义模型,在将现实世界事物的含义和相互关联映射到概念模式方面非常有用
  • 采用三个基础概念:实体集联系集属性
  • 一个数据库可以被建模为:实体的集合、实体间的联系

实体集

  • 实体是现实世界可区别于所有其他对象的一个“事物”或“对象”
  • 实体集是想同类型即具有相同性质(或属性)的一个实体集合
  • 实体集的外延是指属于实体集的实体的实际集合
  • 实体有属性,它是实体集中每个成员所拥有的描述性性质
  • 每个实体的每个属性都有一个

联系集

  • 联系是指多个实体间的相互关联
  • 联系集是相同类型联系的集合
  • 联系集也可以有属性

联系集中实体的角色

  • 实体在联系中扮演的功能称为实体的角色
  • 角色是隐含的,通常不指定
  • 当同样的实体集参与一个联系集多于一次,这类联系集称作是递归联系集

联系集的度

  • 参与联系集的实体集的数目称为联系集的
  • 二元联系集:涉及两个实体集(度为2)、数据库系统中大多数联系集都是二元

属性

  • 实体通过一组属性来表示,属性是实体集中每个成员所拥有的描述性性质
  • —每个属性可取值的集合,也称值域
  • 属性类型:
    • 简单复合属性
    • 单值多值属性
    • 派生属性和属性:派生属性可以从别的属性派生出来、派生属性值不存储,而是在需要时计算出来

复合属性

  • 复合属性可以是有层次

约束

映射基数约束

  • 映射基数,或基数比率,表示一个实体通过一个联系集能关联的实体的个数
  • 对二元联系集来说,映射基数必然是以下情况之一:一对一、一对多、多对一、多对多
  • 二元联系集中的一个集合的某个元素可能并不映射到另一集合的任一元素

参与约束

  • 如果实体集E中的每个实体都参与到联系集R的至少一个联系中,实体集E在联系集R中的参与称为全部
  • 如果实体集E中只有部分实体参与到R的联系中,实体集E在联系集R中的参与称为部分

实体集的码

  • 一个实体集的超码是一个或多个可以用来唯一标识实体的属性(集)
  • 一个实体集的候选码是最小的超码
  • 主码是被选择用来区分实体的候选码,主码只有一个,但候选码可以有多个

联系集的码

  • 如果联系集R没有属性,那么属性集合 p r i m a r y − k e y ( E 1 ) ∪ p r i m a r y − k e y ( E 2 ) ∪ . . . ∪ p r i m a r y − k e y ( E n ) primary-key(E_1)\cup primary-key(E_2)\cup ... \cup primary-key(E_n) primarykey(E1)primarykey(E2)...primarykey(En)描述了集合R中的一个联系

  • 如果联系集R属性 a 1 , a 2 , . . . , a m a_1,a_2,...,a_m a1,a2,...,am,那么属性集合 p r i m a r y − k e y ( E 1 ) ∪ p r i m a r y − k e y ( E 2 ) ∪ . . . ∪ p r i m a r y − k e y ( E n ) ∪ { a 1 , a 2 , . . . , a m } primary-key(E_1)\cup primary-key(E_2)\cup ... \cup primary-key(E_n)\cup \{a_1,a_2,...,a_m\} primarykey(E1)primarykey(E2)...primarykey(En){a1,a2,...,am}描述了集合R中的一个联系

  • 相关的实体集的主码的集合形成了联系集的超码,在以上的两种情况下,属性集合 p r i m a r y − k e y ( E 1 ) ∪ p r i m a r y − k e y ( E 2 ) ∪ . . . ∪ p r i m a r y − k e y ( E n ) primary-key(E_1)\cup primary-key(E_2)\cup ... \cup primary-key(E_n) primarykey(E1)primarykey(E2)...primarykey(En)总是构成联系集的一个超码

冗余属性

  • 假设有实体集:
    • instructor实体集有dept_name属性
    • department实体集
  • 以及联系集:
    • inst_dept,联系instructor和department
  • instructor中的dept_name属性是冗余的,因为有一个明确的关系inst_dept来联系instructor和department:
    • dept_name属性重复了inst_dept联系中的信息,应该从instructor中除去

实体-联系图

E-R图

在这里插入图片描述

  • 矩形代表实体集
  • 属性在实体矩阵中列出
  • 构成主码的属性以下划线标明
  • 菱形代表联系集

参与联系集中的实体集

  • 全部参与(用两条线标识):实体集中的每个实体都参与到联系集的至少一个联系中
  • 部分参与:某些实体不参与到联系集中的任何一个联系

基数约束

  • 我们在联系集和实体集之间画一个箭头( → \rightarrow ) 代表“一”,或者一条线段(—) 代表“多”来表示基数约束
    在这里插入图片描述

角色

  • 一个联系的实体集不需要唯一:一个实体集总的元素每次读出现在关系中代表一个“角色”
  • course_id和prereq_id被称为角色
    在这里插入图片描述

三元关系上的基数约束

  • 我们只允许在一个三元(或三元以上)联系集外有一个箭头来表示基数约束
  • 如果有多余一个的箭头,那就会有两种解释:
    • 例如,R是A,B和C之间的三元联系集,并且有两个箭头指向B和C,这可以表示为:
      • 每个在A中的实体都与来自B和C的至多一个实体相关联
      • 每个来自(A,B)的实体对都与来自C的至多一个实体相关联,而每个来自(A,C)的实体对都与来自B的至多一个实体相关联
    • 为了避免混淆,在联系集这外我们只允许有一个箭头

弱实体集

  • 一个没有足够的属性形成主码的实体集叫做弱实体集

  • 弱实体集必须与标识属主实体集(Owner Entity Set) 关联才有意义

  • 将弱实体集与其表示实体集相连的联系称为标识性联系:标识联系集以双边框的菱形表示

  • 弱实体集通过一个全部参与的、(多对一或一对一)的联系集与标识实体集联系

  • 弱实体集的分辨符是使得我们区分弱实体集中实体的属性集合,也称为该弱实体集的部分码

  • 弱实体集的主码标识实体集的主码和该弱实体集的分辨符共同组成

  • 弱实体集的分辨符用虚下划线表示

  • 标识联系集以双边框的菱形表示

  • 强实体集的主码并不存储于弱实体集

  • 弱实体集可以参与标识性联系以外的任何联系,也可能与不止一个标识实体集关联

  • 在某些情况下,数据库设计者会选择讲一个弱实体集表示为属主实体集的一个 (多值)符合属性

    • 如果弱实体集只参与标识性联系,而且其属性不多,建模时更适合将其作为属性
    • 反之,更适合将其表示为弱实体集

转换为关系模式

  • 一个符合E-R模式的数据库可以表示为一些关系模式的集合
    • 实体集联系集都可以用表示数据库内容的统一的关系模式来表示
    • 每个实体集合联系集独有一个特有的关系模式与其对应,并分配相应的名字
    • 每个关系模式都有一些列,每个列多有唯一的名字

具有简单属性的实体集的表示

  • 从强实体集转换而来的模式与强实体集具有相同属性、主码
  • 从弱实体集转换的模式包含弱实体集的属性表示强实体集的主码
  • 该模式的主码由强实体集的主码与弱实体集的分辨符组合而成

复合属性

  • 复合属性通过为每个子属性创建单独的属性
    • 实体集instructor有复合属性name:由first_name, middle_name和last_name构成
    • 转化成关系模式后,该实体集具有name_first_name,name_middle_name和name_last_name

多值属性

  • 实体集E的多值属性M用一个独立的模式EM表示
  • 模式EM包含对应于的E主码及多值属性M的属性
  • 多值属性的每个值映射到关系模式EM的每一个独立元组
  • 不需要建立一个对应于实体集的模式,只需创建一个对应于多值属性的关系即可

联系集的表示

  • 联系集关系模式属性的选择
  • 联系集主码选择:二元联系集主码选择、多元联系集主码选择
  • 注意:需要为联系集的属性建立外码约束

模式的冗余—合并

  • 多对一和一对多的联系集的模式,如果“多”方参与是全部的,那么可以将 “多”方实体集和联系集的模式合并成单个包含两个模式所有属性并集的关系模式
  • 合并后模式加入原联系集的外码约束
  • 如果“多”方参与是部分的,也可以通过使用空值来进行模式合并。转换为关系模式时,联系集中 “一”方的相关属性应注意不能设置为not null
  • 在一对一联系的情况下,联系集的关系模式可以跟参与联系的任何一个实体集的模式进行合并
  • 一般而言,连接弱实体集与其标识强实体集之间的标识性联系集转换出的模式是冗余

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

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

相关文章

JMeter简单使用

JMeter是一个功能强大的开源性能测试工具,用于对各种应用程序、协议和服务器进行性能和负载测试。它被广泛用于测试Web应用程序的性能,并可以模拟多种负载条件和行为。 JMeter使用 添加线程组 设置线程组的配置 设置请求 配置请求 添加监听器 查看压…

Java微服务构建:打造健壮订单模型的完整指南

Java微服务构建一个健壮的订单模型(业务,规划,设计与实现) 在设计领域业务模型时,我们通常会追求理论完美,而忽略实践的脆弱性。尽管我们没有贬低领域建模的意图,但事实上,在电商技术发展多年之后,某些系统…

idea中启动多例项目配置

多实例启动 日常本地开发微服务项目时,博主想要验证一下网关的负载均衡以及感知服务上下线能力时,需要用到多实例启动。 那么什么是多实例启动嘞?简单说就是能在本地同时启动多个同一服务。打个比方项目中有一个 MobileApplication 服务&…

怎么压缩视频?试试这个方法

怎么压缩视频?我们都知道视频的内存比其他类型的文件都要大很多。那是因为视频的分辨率越高,所包含的像素点就越多,因此文件大小也就越大。而且一般来说,视频文件的时长都比较长,当视频的时间越长,那么视频…

RFID银行款箱智能管理应用解决方案

一、行业背景 随着金融业务的不断发展,金融物流的安全性成为越来越重要的问题,银行金库每天都有大量现金款箱的出入库和配送,如果无法确保及时准确地进行入库、库存控制和出库,将给银行带来巨大的风险,增加了银行的管…

堆栈与队列算法-八皇后问题的求解算法

目录 堆栈与队列算法-八皇后问题的求解算法 C代码 堆栈与队列算法-八皇后问题的求解算法 八皇后问题是一种常见的堆栈应用实例。在国际象棋中的皇后可以在没有限定一步走几格的前提下,对棋盘中的其他棋子直吃、横吃和对角斜吃(左斜吃或右斜吃均可&…

博客模板博客模板

xservices-bpm-6.2.1.1.jar 本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》作者 公众号:山峯草堂,非技术多篇文章,专注于天道酬勤的 Java 开发问题、中国国学、传统文化和代码爱…

使用Objective-C和ASIHTTPRequest库进行Douban电影分析

概述 Douban是一个提供图书、音乐、电影等文化内容的社交网站,它的电影频道包含了大量的电影信息和用户评价。本文将介绍如何使用Objective-C语言和ASIHTTPRequest库进行Douban电影分析,包括如何获取电影数据、如何解析JSON格式的数据、如何使用代理IP技…

文心一言 VS 讯飞星火 VS chatgpt (124)-- 算法导论10.5 5题

五、用go语言,给定一个n结点的二叉树,写出一个 O(n)时间的非递归过程,将该树每个结点的关键字输出。要求除该树本身的存储空间外只能使用固定量的额外存储空间,且在过程中不得修改该树,即使是暂时的修改也不允许。 文…

ice和Dtls 传输的创建及1个简单的SFU转发实例

ice和Dtls 传输的创建及1个简单的SFU转发实例 licode中,webrtcconn基于dtlstransport 收发,而dtlstransport通过libnice作为底层。dtlstransport 使用了srtp加解密。文末给出一个简化的sfu实例的实现。对应的,看下M98的代码,更能理解为啥这么做: IceTransportInternal 与D…

Transformer模型原理

NLP预训练模型的架构大致可以分为三类: 1. Encoder-Decoder架构(T5),seq2seq模型,RNN、LSTM网络 2. BERT:自编码语言模型,预测文本随机掩码 3. GPT: 自回归语言模型,预测…

Elasticsearch(一)---搭建

搭建es 不允许root用于运行 创建esuser用户: useradd esuser 设置密码 passwd esuser 让esuser拥有sudo的权限,需要修改/etc/sudoers文件 需要先给/etc/sudoers添加写的权限 [rootnode1 ~]# vim /etc/sudoers 改完之后将写权限删除 三台服务器上操…

“阿里巴巴按关键字搜索接口:一键获取海量商品信息,助力商家抢占市场先机!“

阿里巴巴按关键字搜索商品的接口是通过开放平台提供的API接口来实现的。要使用这个接口,需要进行以下步骤: 确认API接口的请求地址和所需参数:需要先查看API文档,了解所要访问的API接口的请求地址和请求参数,以便正确…

python随手小练13

题目1: 定义学员信息类,包含姓名、成绩属性,定义成绩打印方法 (90分及以上显示优秀,80分及以上显示良好,70分及以上显示中等,60分及以上显示合格,60分以下显示不及格) 具体操作: cl…

基于pyqt5和yolov8的智慧工地施工人工安全检测系统

基于pyqt5和yolov8的智慧工地施工人工安全检测系统 主要基于两者进行集成 在前面模型训练基础上,实现安全马甲、安全面具和安全帽的检测。 核心检测代码 def run(self):self.hilo_corriendo Truemodel YOLO("best.pt")cap cv2.VideoCapture(0)while…

安全生产管理系统助力企业安全细化管理

安全生产管理系统利用完整的安全生产管理体系,结合信息化、数字化和智能化等技术手段,将安全生产过程中的各个环节进行有效整合,使安全管理更加科学、规范和高效。 安全生产管理系统可以对企业安全生产进行全面、细致的管理。它能够实现对企…

NFTScan | 10.23~10.29 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2023.10.23~ 2023.10.29 NFT Hot News 01/ sudoswap 推出 NFT 做空协议 sudoshort 10 月 24 日,NFT 交易协议 sudoswap 推出 NFT 做空协议 sudoshort,是建立在 su…

C语言C位出道心法(一):基础语法

一:基础语法认知 变量与常量,数据类型认知升维 C语言中各种变量的定义及数据类型的认知: 一般而言,在譬如C等高级编程语言中,我们定义不同的类型的变量,需要不同的数据类型来进行声明,不同类型的数据类型声明的变量占用的内存空间不一样; 而数据类型大致分为两种: (1)内置的…

ORACLE运行的数据库突然连接报“无监听程序”

远程:用远程的数据库连接工具用localhost可以连接,用ip地址除127.0.0.1不可连接。 可能是日志文件满了,解决办法如下: 第一步:关闭数据库监听程序【任务管理器--》服务--》右键停止服务】 第二步:找到日志…

安防视频监控平台EasyCVR服务器需要开启firewalld防火墙,该如何开放端口?

智能视频监控/视频云存储/集中存储/视频汇聚平台EasyCVR具备视频融合汇聚能力,作为安防视频监控综合管理平台,它支持多协议接入、多格式视频流分发,视频监控综合管理平台EasyCVR支持海量视频汇聚管理,可应用在多样化的场景上&…