【数据库设计】概念结构设计

引入——整体解释

上次我们讲完了关系模型,这次我们来讲新的章节:数据库设计

该怎样有效地管理和存储现实中的数据?答案是设计一个优秀的数据库。现实中的数据转化成关系表中的数据需要经过四个主要的设计步骤。

现实世界需求分析——>概念结构设计——>逻辑结构设计——>物理结构设计
注:物理结构设计其实就是表的形式

现实世界需求分析很容易理解比如要开发一个学生选课系统,这时候就需要设计一个存储和管理学生的数据库。其余三个阶段的设计使用不同的方式表示数据,我们说过描述数据和数据之间关系的叫数据模型,换言之,各个阶段有各自的数据模型。设计一款数据库的最终目的是将概念数据模型转化成物理数据模型。

概念结构设计

即将现实世界里的客观事物和它们之间的联系抽象成实体(entity)和关系(relation),叫E-R模型。此模型属于基于对象的逻辑模型,用来描述现实世界中的数据对象及其关系。

E-R模型组成

实体:可以指现实世界中的人或事物,比如你自己,再比如公司里的职员,学校里的学生,但这种数量多的叫实体集。

属性:实体集可以有单个或者多个特征来描述,比如学校里的学生,是个实体集,可以有学生号、学生姓名等属性来描述。属性其中:可以唯一区分实体的叫标识符,如:

多个组合在一起能唯一区分实体的叫复合标识符,如:

联系:就像现实世界里人与人之间人与事物之间的联系,此处可以指实体之间的联系也可以指实体里各个属性之间的联系。但E-R模型中的联系通常指实体与实体之间的联系,并且联系用动词来表示,比如:

学生表和课程表之间的联系是“选课”。

E-R图

以上元素可以用图来表示:

如上图:Student表示实体,用矩形表示,属性用椭圆表示,标识符用下划线来标出。

课程表的类似。

如下图:联系用菱形表示,即图中的SC,在两端标注上联系类型,这里是n:m,即每一个学生可以选多门课,每一门课也可以被多个学生选择。

联系类型

可以分成一元、二元、三元联系。

一元:指实体集之间内部的联系,比如学生实体集中存在“同级管理”的联系,有班干部管理其余学生的联系,此联系是“同级管理”

二元:即两个实体之间,如学生与课程之间。此联系是“选课”

二元联系又包含上面说的多对多(n:m),还有1:1,1:n,n:1。

1:1

n:1

三元:即三个实体之间,如学生与学校与课程之间。该联系是“学习”,用一句描述:学生在学校选课学习。

通常情况下会将三元联系转化成二元的:创设一个新的实体,然后之前的每一个实体都与新实体建立联系,也就变成了新实体和旧实体的二元联系。比如图中新的实体是“修读计划”,与旧实体之间的联系分别是“包含”、“选择、“制定”。

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

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

相关文章

JavaScript ES6 新特性全览:变量声明、函数语法、数据结构等多方面解析

在现代 JavaScript 开发中,ECMAScript 6(简称 ES6)带来了许多强大的新特性,极大地提升了开发效率和代码的可读性。本文将带你全面了解 ES6 的主要新特性。 一、let 和 const 关键字 let和const是 ES6 中引入的新的变量声明方式&…

JAVA地狱级笑话

为什么Java开发者总是不怕黑暗? 因为他们总是有null指针来照亮路。 Java程序员最讨厌的音乐是什么? Garbage Collection旋律,节奏总是让他们烦躁。 为什么Java中的HashMap很擅长社交? 因为它总是能快速找到key对应的朋友。 Java开…

java常用工具包

Java标准库(Java Standard Library) 比喻:就像你厨房里的基础调料,没有它们,你很难做出美味的菜肴。Java标准库包含了进行基本编程所需的所有核心类和方法,如字符串处理、集合框架、输入输出操作等。 关键…

C++ 内存布局 - Part6: 虚继承

1. 关于虚继承 虚继承可以在菱形继承体系中,防止派生类中有多份重复祖基类内容。如下图所示,如果是常规继承,Class Final中会有两份Class Base的内容。通过虚继承,即Derived1 虚继承自Base, Derived2 也虚继承自Base, 那么Final中…

【Gin】Gin框架介绍和使用

一、简单使用Gin框架搭建一个服务器 package mainimport ("github.com/gin-gonic/gin" )func main() {// 创建一个默认的路由引擎r : gin.Default()// GET 请求方法r.GET("/hello", func(c *gin.Context) {// c.JSON 返回的是JSON格式的数据c.JSON(200, g…

003_ipc概述及信号

【背景】 程序运行起来后,每个模块都有自己的进程,那么不同的模块如何进行通讯或者数据交换呢? 上面这张图说明了linux的ipc是继承最初的Unix 的IPC逻辑的,那么具体关系和概述讲解,请参考此链接的原文:htt…

mac 桌面版docker no space left on device

报错信息 docker pull镜像时报: failed to register layer: Error processing tar file(exit status 1): write /home/admin/oceanbase_bak/bin/observer: no space left on device 解决 增加 docker 虚拟磁盘大小。 调整完点击重启即可。

助力语音技术发展,景联文科技提供语音数据采集服务

语音数据采集是语音识别技术、语音合成技术以及其他语音相关应用的重要基础。采集高质量的语音数据有助于提高语音识别的准确性,同时也能够促进语音技术的发展。 景联文科技作为专业的数据采集标注公司,支持语音数据采集。可通过手机、专业麦克风阵列、专…

两个案例全面阐述全链路测试怎么做

首先我们先针对全链路功能测试部分进行一下讲解。去年的时候,有一家电商公司可能知道我一直在帮银行做相关的测试,就请我帮他们去做一些规划。这个平台有虚拟订单,也有实体订单,方式不太一样。 还涉及到分账分佣以及跟银行的对接…

nuxt3脚手架安装报错解决方法

当使用脚手架安装时 npx nuxilatest init appname 错误1:ECONNRESET npm error code ECONNRESET npm error syscall read npm error errno -4077 npm error network read ECONNRESET npm error network This is a problem related to network connectivity. npm …

Redis 集群:高效缓存与数据存储的利器

在当今的互联网时代,数据的存储和处理速度至关重要。Redis 作为一种高性能的内存数据库,广泛应用于各种场景。而 Redis 集群则进一步提升了 Redis 的可用性、扩展性和性能。本文将为你详细介绍 Redis 集群的简介以及三种模式。 一、Redis 集群简介 Redi…

大数据-174 Elasticsearch Query DSL - 全文检索 full-text query 匹配、短语、多字段 详细操作

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

阿里云国际站DDoS高防增值服务怎么样?

利用国外服务器建站的话,选择就具有多样性了,相较于我们常见的阿里云和腾讯云,国外的大厂商还有谷歌云,微软云,亚马逊云等,但是较之这些,同等产品进行比较的话,阿里云可以说当之无愧…

计算机网络基础(1)

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络基础 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1. 计算机网…

简易CPU设计入门:验证取指令模块【未完成】

项目代码下载 还是请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。 下载本项目代码 准备好了项目源代码以后&#xff…

linux下详细安装docker

对于有在mac下的docker安装配置请参考mac下安装docker详细教程,在Linux上安装Docker相对简单,以下是详细步骤。以Ubuntu和CentOS为例,步骤略有不同,但基本思想相似。 1. 系统要求 确保你的系统满足以下要求: 64位操…

MySQL详细学习攻略 MySQL基础非常全面教程 MySQL安装教程

MySQL安装教程 章节目录 一、MySQL简介与安装前准备 二、Windows系统下MySQL的安装 三、Linux系统下MySQL的安装 四、MySQL安装后的基本配置 五、MySQL服务的启动与停止 六、MySQL客户端工具的使用 七、MySQL安装常见问题与解决方案 一、MySQL简介与安装前准备 重点内容知识…

Flythings学习(四)串口通信

文章目录 1 串口编程基本步骤1.1 打开串口1.2 配置串口 1.3 读串口1.4 发送串口1.5 关闭串口 2 综合使用3 如何在软件上保证串口稳定通信4 flythings中的串口通讯5 协议接收部分使用和修改方法6 通讯协议数据怎么和UI控件对接 1 串口编程基本步骤 串口通信有5个步骤 1.打开串口…

YOLOv11模型改进-注意力机制-引入自适应稀疏自注意力ASSA

随着目标检测领域的快速发展,YOLO系列模型凭借其端到端、高效的检测性能逐渐成为工业界和学术界的标杆。然而,如何进一步优化YOLOv11的特征提取能力,减少冗余信息并提升模型对复杂场景的适应性,仍是一个值得深入探讨的问题。为此&…

Android:记录一个打包发布版的release包以后闪退的问题

个人感觉其实release闪退的问题挺难排查的,因为release包运行起来as捕获不到相应的应用程序进程,从而不易查看到日志,也是我玩得不溜,大家有不同的方法可以评论区探讨,我也定期回复一些评论一起讨论。以下是我遇到的情…