数据库设计 ER图

news2024/12/24 10:03:38

三个基本概念

Entity

Entity Set表示一类事物,类似于面向对象中类的概念,而Entity Instance表示一个具体的事物,类似于对象的概念。
Entity中可以有属性(Attribute),也可以与其他Entity之间存在关系(Relationship)。在设计数据库时,一个Entity Set通常就是一个数据表,而Entity Instance就是表中的具体数据。

Strong & Weak

Entity可以分为Strong Entity(强实体)和Weak Entity(弱实体)。如果一个Entity可以独立存在,则称为Strong Entity,反之,如果一个Entity必须依赖于其他Entity,则称为Weak Entity。Weak Entity必须与若干个Strong Entity之间存在依赖关系。

ER图

在ER图中,Strong Entity用实线绘制的矩形表示,其中的主键属性用下划线标识。Weak Entity则用双层实线绘制的矩形表示,并且其中的主键用虚下划线标识。依赖关系则用双层实线绘制的菱形表示,并且由于每个Weak Entity Instance都需要依赖至少一个Strong Entity Instance,因此二者之间为强制参与关系。

Relationship

Relationship(关系)表示Entity之间的交互,Relationship同样可以分为Relationship Set和Relationship Instance。例如在teacher和student两个Entity之间存在teach关系,这是一个Relationship Set,而具体哪个老师教哪个学生则是一个Relationship Instance。由此可以看出,在设计数据库时,一个Relationship Set也可以用一个数据表来表示。但在大多数情况下没有这种必要。
当Relationship单独成表时,表中需要包含数数据有相互交互的两个Entity的主键,以及Relationship自身的属性。
在实际数据库的设计中,对于一对一关系,直接将任意Entity Set的主键以及关系自身的属性作为属性添加到另一个Entity Set中即可。对于一对多关系,需要将“一”的Entity主键以及关系属性作为属性添加到“多”的Entity中。对于多对多关系,则需要专门创建一个新表保存双方的主键的关系自身的属性。
Role表示Entity中参与Relationship的属性,对于二元和多元属性来说,role通常都是Entity各自的主键,因此通常不用标识。而对于一元关系来说,role通常为Entity自身的主键以及有主键生成的另一属性,通常需要标识。

分类

根据关系涉及的Entity种类,可以分为Unary Relationship(一元关系),Binary Relationship(二元关系)以及Ternary Relationship(多元关系),其中二元关系(即有两种Entity参与的关系)最为常见。
按照映射关系,关系可以分为一对一关系,一对多关系和多对多关系。
根据参与限制,可以分为Mandatory Participate Relationship(强制参与关系)以及Optional Participate Relationship(可选参与关系)。

ER图

在ER图中,关系使用实线绘制的菱形表示。除了Weak Entity与Strong Entity之间的依赖关系用双层菱形表示。关系的属性写在单层实线绘制的矩形中,并通过虚线与关系连接。
关系通过实线与相关的Entity连接,在连接线上可以标识关系对应的role。连接线的箭头表示映射关系,对于一对一关系,双方的连接线均有箭头,对于一对多关系,只有“一”的一方有箭头,对于多对多关系,双方均无箭头。
可选参与关系用单实线表示,强制参与关系用双实线表示。在实线上除了可以标识role,还可以添加一些简单的映射限制,用m…n表示。其中m和n分别表示对应侧Entity Instance参数数量的最小值和最大值。当n为*时表示无限制。

Attribute

属性(Attribute)隶属于实体或关系,某些特定的属性可以被称为Key(键)。

分类

按照结构类型,属性可以分为Simple Attribute(简单属性)和Composite Attribute(复杂属性)。简单属性就是普通的属性,例如生日、性别等。复杂属性由多个简单属性组成,例如地址属性可以由国家、省份、城市、街道等简单属性组成。
按照值类型,属性可以分为Single-valued Attribute(单值属性)、Multivalued Attribute(多值属性)、Derived Attributes(派生属性)以及Null Attribute(空属性)。其中单值属性就是基本的属性,只能有一个值。多值属性可以有多个值,例如一个人可以有多个电话号码,因此电话号码就是人的多值属性。如果一个属性可以通过其他属性推导得出,那就称为派生属性,例如可以通过一个人的生日推导出他的年龄,年龄就是一个派生属性。而如果一个属性可以为Null,则称为空属性。

ER图

在ER图中,Primary Key(主键)用下划线表示。
Entity中的属性标注在矩形内部的Entity Name之下,简单属性占据一行,用属性名表示。复杂属性占据多行,首行为复杂属性名,后续每一行用每个隶属于复杂属性的属性名表示,除首行外都要添加一个缩进。多值属性用花括号{}包裹的属性名表示。派生属性则在属性名之后添加一个小括号。

ER图示例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

EER Model

EER(Extend Entity Relationship)Model是ER Model的补充版本。主要添加了Entity的继承和聚合的概念。
与OOP中的Class类似,被继承的Entity称为Super Entity,继承之后的称为Sub Entity。
在ER图中,继承关系用带空心箭头的实现表示,箭头指向Super Entity。Sub Entity有着Super Entity的所有属性。
Aggregation(聚合)指的是将一个关系和与其相关的所有Entity视作一个整体,当做一个新的Entity并可以参与其他关系的概念。

Relation Schema

我们使用ER图的目的就是为了设计关系型数据库,而Relation Schema(关系模式)就是关系型数据库表的直接体现。当我们得到了一组Relation Schema,也就得到了一组关系型数据库的基本结构。
简单来说,Relation Schema的结构就是 table_name(item_name1, item_name2, item_name3…)
ER图与Relation Schema之间的映射关系:

  1. 对于Strong Entity,一个Entity Set就是一个表,每个Attribute为一列,主键同样用下划线表示。
  2. 对于Weak Entity,一个Entity Set同样是一个表,每个Attribute一列,同时还要将依赖的Entity的主键作为Weak Entity主键中的一列。
  3. 对于Composite Attribute,直接将其展开,每个子属性作为一列。
  4. 对于Multivalued Attribute,需要将其视作一个Entity和Multivalued Attribute之间的一对多关系。因此需要为Multivalued Attribute成立一个新的数据表,并将原Entity的主键作为一列添加到数据表中。
  5. 对于One-to-One Relationship,需要将任意一方Entity的主键作为一列添加到另一Entity表中。
  6. 对于One-to-Many Relationship,需要将One侧的主键作为一列添加到Many侧Entity的表中。
  7. 对于Many-to-Many Relationship, 需要以Relationship的名字创建一个新表,表中的字段为两侧Entity的主键,以及Relationship自身的属性。
  8. 对于Sub Entity,需要为其建立一个新表,表中包含所有Sub Entity引入的新属性,并将Super Entity中的主键作为一列。
  9. 对于Aggregation,由于其涉及的Entity已经超过两个,需要为其设立新表,其中包含所有涉及的Entity的主键。

总的来说,在转换过程中,每个Entity会被转换成一个数据表,一对一关系和一对多关系会被转换为数据表中的一列或几列,而多对多关系则会用额外的数据表表示。复杂属性会被展开,多值属性会被转换为一对多关系,并为属性创建一个新表。

数据库设计

在设计完Relation Schema之后,数据库的基本结构就已经定下来了,接下来只需要按照每个字段的实际数据为其设计数据类型以及NULL或NOTNULL属性,并根据后续使用需求为其添加合适的索引,即可完成数据库的设计。

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

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

相关文章

【最新版全插件】多功能同城优选小程序源码

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 1.为本地的线下商家提供线上销售渠道。一直以来本地商品、娱乐、休闲、旅游服务线上购买大家都是以美团为准。近几年来随着微信公众号、小程序的渗透力逐渐加强,越来越多的用…

【深度学习】实验6答案:图像自然语言描述生成(让计算机“看图说话”)

DL_class 学堂在线《深度学习》实验课代码报告(其中实验1和实验6有配套PPT),授课老师为胡晓林老师。课程链接:https://www.xuetangx.com/training/DP080910033751/619488?channeli.area.manual_search。 持续更新中。 所有代码…

ElasticSearch实战

一、es集群的搭建 1.集群相关概念 单节点故障问题 单台服务器,往往都有最大的负载能力,超过这个阈值,服务器性能就会大大降低甚至不可用。单点的elasticsearch也是一样那单点的es服务器存在哪些可能出现的问题呢? 单台机器存储…

[附源码]计算机毕业设计基于springboot在线影院系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

ROS MoveIT1(Noetic)安装总结

前言 由于MoveIT2的Humble的教程好多用的还是moveit1的环境,所以又装了Ubutun20.04和ROS1(Noetic)。【2022年12月6日】 环境 系统:Ubutun20.04LTS Ros:Noetic 虚拟机:VMware 安装 ROS Noetic 安装教程…

【微信小程序】canvasToTempFilePath遇到的问题

在微信小程序开发中,经常需要将绘制好的canvas保存到本地,这就需要调用canvasToTempFilePath将canvas画布转为本地临时文件。遇到过的问题如下: 1.create bitmap failed 2.fail canvas is empty 这个问题就是canvas还没画为空拿不到转化的临…

Eclipse+Maven+Tomcat 集成开发环境配置

在Eclipse中创建的Dynamic Web Project 类型的Web 项目, 通过Run As -> Run on Server 可以添加本地安装的Tomcat,在Eclipse 中启动Tomcat 进行整合开发。 但是如果创建的是Maven类型的项目,如果没有导入额外的包还正常, 但是…

Nginx入门到搭建

前言 上一篇文章我们分享了Linux的软件安装以及项目后端的部署,本篇文章将要分享的内容是,Nginx的入门安装、反向代理、负载均衡等。 一、Nginx简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3) 代理服务…

如何让彩色网页变灰

如何让彩色网页变灰 在特殊的日子&#xff08;如清明节特殊纪念日等&#xff09;&#xff0c;需要让彩色网页变成灰色&#xff08;黑白色&#xff09;如下图所示&#xff0c;怎么做到呢&#xff1f; 下面先给出彩色正常的网页示例源码&#xff1a; <!DOCTYPE html> <…

消除数据库表中的重复组

重复组是在整个数据库表中重复的一系列字段/属性。大型和小型组织都面临着一个普遍的问题&#xff0c;这个问题可能会带来多种后果。例如&#xff0c;在不同区域中存在的同一组信息会导致数据冗余和数据不一致。而且&#xff0c;所有这些重复的数据可能会占用大量宝贵的磁盘空间…

【计算机图形学入门】笔记2:向量与线性代数(图形学中用到的线性代数)

02向量与线性代数&#xff08;图形学中用到的线性代数&#xff09;1.A Swift and Brutal Introduction to Linear Algebra!简单粗暴入门线性代数1.Graphics’ Dependencies 图形学依赖的一些知识2.Vectors 向量1.Dot product向量的点乘2.向量的叉乘Cross product3.矩阵Matrix4.…

Linux——进程并发控制(系统中的POSIX信息量机制、进程间通信)

目录 一、Linux系统中POSIX信号量机制 1、POSIX有名信号量 &#xff08;1&#xff09;常用函数 &#xff08;2&#xff09;有名信号量应用于多线程的例子 &#xff08;3&#xff09;有名信号量应用于多进程 2、POSIX无名信号量 &#xff08;1&#xff09;常用函数 &…

基于jsp+mysql+ssm大学生社交平台-计算机毕业设计

项目介绍 本系统需要满足校园网上社交方面的基本需要。需要实现用户所要求的功能&#xff0c;方便他们进行交流。在界面上力求做到美观、操作方面尽量避免由于会员操作不当带来系统的出错现象。对数据库操作的性能需要做到优化&#xff0c;数据库过大将会影响运行速度。编程过…

(四) Docker镜像

Docker镜像一、概述二、镜像加载原理三、镜像注意点四、Docker镜像commit操作五、总结一、概述 书面解释 是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时…

开关电源环路稳定性分析(04)-电压控制模式

大家好&#xff0c;这里是大话硬件。 在前3节分析了一个开环电源是如何工作的&#xff0c;开环电源的弊端也很明显&#xff0c;无法维持输出的稳定&#xff0c;不能抗扰动&#xff0c;无法得到我们想要的电压等等。因此&#xff0c;开关电源的闭环环路对稳定性来说非常重要。 …

LeetCode简单题之统计共同度过的日子数

题目 Alice 和 Bob 计划分别去罗马开会。 给你四个字符串 arriveAlice &#xff0c;leaveAlice &#xff0c;arriveBob 和 leaveBob 。Alice 会在日期 arriveAlice 到 leaveAlice 之间在城市里&#xff08;日期为闭区间&#xff09;&#xff0c;而 Bob 在日期 arriveBob 到 l…

大数据:Storm和流处理简介

一、Storm 1.1 简介 Storm 是一个开源的分布式实时计算框架&#xff0c;可以以简单、可靠的方式进行大数据流的处理。通常用于实时分析&#xff0c;在线机器学习、持续计算、分布式 RPC、ETL 等场景。Storm 具有以下特点&#xff1a; 支持水平横向扩展&#xff1b;具有高容错…

信息安全技术 信息安全风险评估方法 汇总

概述 风险评估应贯穿于评估对象生命周期 各阶段中。评估对象生命周期各阶段中涉及的风险评估原则和方法昆一致的&#xff0c;但由干各阶段实施内容对象、安全需求不同.使得风险评估的对象、目的、要求等各方面也有所不同。在规划设计阶段&#xff0c;通过风险评估以确定评估对…

(推荐阅读)H264, H265硬件编解码基础及码流分析

需求 在移动端做音视频开发不同于基本的UI业务逻辑工作,音视频开发需要你懂得音视频中一些基本概念,针对编解码而言,我们必须提前懂得编解码器的一些特性,码流的结构,码流中一些重要信息如sps,pps,vps,start code以及基本的工作原理,而大多同学都只是一知半解,所以导致代码中的…

JAVA-元注解和注解

故事背景&#xff1a;罗芭是一名正在学习java的妹子&#xff0c;最近看甲骨文的官方文档&#xff0c;学到了注解Annotation这里&#xff0c;发现注解我可以自定义&#xff0c;但罗芭不会诶。但是布洛特 亨德尔已经学习过了java注解。 罗芭&#xff0c;help me~ 唰唰唰&#xff…