1.2 数据模型 数据库系统概论
目录
1.2.1 两类数据模型
1.2.2 概念模型
1.信息世界中的基本概念
(1)实体
(2)属性
(3)码
(4)实体型
(5)实体集
(6)联系
2.两个实体型之间的联系
1.一对一联系(1:1)
2.一对多联系(1:n)
3.多对多联系(m:n)
1.2.3 数据模型的组成要素
1.数据结构
2.数据操作
3. 数据的完整性约束条件
1.2.4 常用的数据模型
1.2.5 层次模型
1.2.6 网状模型
1.2.7 关系模型
术语
数据模型是对现实世界数据特征的抽象。数据模型就是现实世界的模拟。一个数据模型应满足三方面的要求:1.能比较真实地模拟现实世界。2.容易为人理解。3.便于在计算机上实现。数据模型是数据库系统的核心和基础。
1.2.1 两类数据模型
数据模型分为两类(两个不同的层次):1.概念模型(信息模型) 按用户的观点来对数据和信息建模,用于数据库设计。2.逻辑模型和物理模型 逻辑模型主要包括网状模型、层次模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型等。是按计算机系统的观点对数据建模,用于DBMS的实现。物理模型是对数据最底层的抽象,用于描述数据在系统内部的表示方法和存取方法。
客观对象的抽象过程--两步抽象:1.现实世界中的客观对象抽象为概念模型 2.把概念模型转换为某一数据库管理系统支持的数据模型。
1.2.2 概念模型
概念模型实际上是现实世界到机器世界的一个中间层次。概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库实际人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。
概念模型一方面应该具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识,另一方面它还应该简单、清晰、易于用户理解。
1.信息世界中的基本概念
(1)实体
客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念或联系。
(2)属性
实体所具有的某一特性称为属性。一个实体可以由若干属性来刻画。
(3)码
唯一标识实体的属性集称为码。
(4)实体型
具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体称为实体型。
(5)实体集
同一类型实体的集合称为实体集。
(6)联系
现实世界中,事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系。(ps:实体内部之间的联系:指组成实体的各属性之间的联系,实体之间的联系:指不同实体集之间的联系)
2.两个实体型之间的联系
实体之间有一对一,一对多和多对多等多种类型。如下图:

1.一对一联系(1:1)
定义:如果对于实体集A中的每一个实体,实体集 B中至多有一个(也可以没有)实体与之联系, 反之亦然,则称实体集A与实体集B具有一对一联系,记为1:1。
2.一对多联系(1:n)
定义:如果对于实体集A中的每一个实体,实 体集B中有n个实体(n≥0)与之联系,反之, 对于实体集B中的每一个实体,实体集A中 至多只有一个实体与之联系,则称实体集A 与实体集B有一对多联系,记为1:n。
3.多对多联系(m:n)
定义:如果对于实体集A中的每一个实体,实体 集B中有n个实体(n≥0)与之联系,反之, 对于实体集B中的每一个实体,实体集A中 也有m个实体(m≥0)与之联系,则称实体 集A与实体B具有多对多联系,记为m:n。
实体-联系方法,是概念模型的一种表示方法。例如:

1.2.3 数据模型的组成要素
数据模型: 严格定义的一组概念的集合。能精确地描述系统的静态特性、动态特性和完整性约束条件。
组成三要素:1.数据结构(描述系统的静态特性)2.数据操作(描述系统的动态特性)3.数据的完整性约束条件。
1.数据结构
数据结构:描述数据库的组成对象,以及对象之间的联系。
描述内容:1. 与对象的类型、内容、性质有关。2. 与数据之间联系有关的对象。
按照数据结构的类型命名数据模型:层次结构—层次模型、网状结构-网状模型、关系结构—关系模型。
数据结构是对系统静态特性的描述。
2.数据操作
数据操作:对数据库中各种对象(型)的实例(值)允许执行的操作的集合, 包括操作及有关的操作规则。
数据操作的类型:查询,更新。
数据模型对操作的定义:操作的确切含义、操作符号、操作规则;实现操作的语言。
数据操作是对系统动态特性的描述。
3. 数据的完整性约束条件
数据的完整性约束条件是一组完整性规则的集合。
完整性规则:给定的数据模型中数据及其联系所具有的制约和依存规则。用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。
数据模型应反映和规定必须遵守的基本的、通用的完整性约束条件。提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。
1.2.4 常用的数据模型
格式化模型(层次模型(Hierarchical Model);网状模型(Network Model))关系模型(Relational Model);面向对象数据模型(Object Oriented Data Model); 对象关系数据模型(Object Relational Data Model); 半结构化数据模型(Semistruture Data Model)……
基本层次联系
在格式化模型中实体用记录表示,实体的属性对应记录的数据项 (或字段)。实体之间的联系在格式化模型中转换成记录之间的两两联系,是格式化模型中数据结构的单位。
定义:是指两个记录以及它们之间的一对多(包括一对一)的联系。
1.2.5 层次模型
层次模型是数据库系统中最早出现的数据模型。典型代表是IBM公司的IMS(Information Management System)数据库管理系统。用树形结构来表示各类实体以及实体间的联系。
表示方法:实体型:用记录类型描述,每个结点表示一个记录类型(实体)。属性:用字段描述,每个记录类型包含若干个字段。联系:用结点之间的连线表示记录类型(实体)之间的一对多的父 子联系。
满足下面两个条件的基本层次联系的集合为层次模型: 1. 有且只有一个结点没有双亲结点,这个结点称为根结点 2. 根以外的其它结点有且只有一个双亲结点。
层次模型的特点:1.结点的双亲是唯一的 2.只能直接处理一对多的实体联系 3.每个记录类型可以定义一个 排序字段,也称为码字段 4.任何记录值只有按其路径查看时,才能显出它的全部意义。5.没有一个子女记录值能够脱离双亲记录值而独立存在。
层次模型的数据操纵:查询,插入,删除,更新。
层次模型的完整性约束条件:1.无相应的双亲结点值就不能插入子女结点值 2.如果删除双亲结点值,则相应的子女结点值也被同时删除 3.更新操作时,应更新所有相应记录,以保证数据的一致。
层次模型的优点:1.层次模型的数据结构比较简单清晰 2. 查询效率高,性能优于关系模型,不低于网状模型 3. 层次数据模型提供了良好的完整性支持。
层次模型的缺点:1.结点之间的多对多联系表示不自然 2.对插入和删除操作的限制多,应用程序的编写比较复杂 3. 查询子女结点必须通过双亲结点 4.层次命令趋于程序化。
1.2.6 网状模型
网状数据库系统采用网状结构来表示各类实体以及实体间的联系。
定义:满足下面两个条件的基本层次联系的集合: 1. 允许一个以上的结点无双亲; 2. 一个结点可以有多于一个的双亲。
特点:1.允许多个结点没有双亲结点 2.允许结点有多个双亲结点 3.允许两个结点之间有多种联系(复合联系) 4.可以更直接地描述现实世界。
网状模型中子女结点与双亲结点的联系可以不唯一。要为每个联系命名,并指出与该联系有关的双亲记录和子女记录。
网状模型没有如层次模型那样严格的完整性约束条件,实际的网状数据库系统(如DBTG)对数据操纵加了一些限制,提供了一定的完整性约束:1.支持码的概念:唯一标识记录的数据项的集合 ,取唯一的值; 2.保证一个联系中双亲记录与子女记录之间是一对多联系 3.可以支持双亲记录和子女记录之间某些约束条件。
优点:能够更为直接地描述现实世界,如一个结点可以有多个双亲 ;具有良好的性能,存取效率较高。
缺点:结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握 ;DDL、DML语言复杂,用户不容易使用 ;记录之间联系是通过存取路径实现的,用户必须了解系统结构的细节(加重了程序员的负担)。
1.2.7 关系模型
关系数据库系统采用关系模型作为数据的组织方式。计算机厂商新推出的数据库管理系统几乎都支持关系模型。
在用户观点下,关系模型中数据的逻辑结构是一张二维表, 它由行和列组成。
术语
关系 一个关系对应通常说的一张表
元组 表中的一行即为一个元组
属性 表中的一列即为一个属性,给每一个属性起一个名称即属性名
主码 也称码键。表中的某个属性组,它可以唯一确定一个元组。
域 是一组具有相同数据类型的值的集合。属性的取值范围 来自某个域。
分量 元组中的一个属性值。
关系模式 对关系的描述:关系名(属性1,属性2,…,属性n)
关系必须是规范化的,满足一定的规范条件,最基本的规范条件:关系的每一个分量必须是一个不可分的数据项, 不允许表中还有表.
关系模型的操纵:查询,插入,删除,更新。
存取路径对用户隐蔽,用户只要指出“干什么” ,不必详细说明“怎么干”(提高数据的独立性,提高用户的生产率)
关系的完整性约束条件:1.实体完整性 2.参照完整性 3.用户定义的完整性
优点:建立在严格的数学概念(关系)的基础上;概念单一 ,实体和各类联系都用关系来表示 ,对数据的检索结果也是关系 ;关系模型的存取路径对用户透明 ,具有更高的数据独立性,更好的安全保密性 ,简化了程序员的工作和数据库开发建立的工作。
缺点:存取路径对用户透明,查询效率往往不如格式化数据模型 ;为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度。
相关文章:
1.2 数据模型 数据库系统概论
目录 1.2.1 两类数据模型 1.2.2 概念模型 1.信息世界中的基本概念 (1)实体 (2)属性 (3)码 (4)实体型 (5)实体集 (6)联系 2.…...
C#中openFileDialog 对话框不在最顶层,TopMost的异常情况
重点!!!若 当前窗体this的TopMost是false,可以设置为true,这样打开的对话框就是最顶层 /// <summary> /// 设置窗体TopMost,缺点和其他程序ide有冲突。例如VS有断点的调试会卡死 /// </summary&g…...
信息安全与阿里云等保三级方案实践总结
信息安全在当今数字化时代变得至关重要,企业和组织需要采取有效措施来保护其数据和信息资产。阿里云作为中国领先的云服务提供商,提供了等保三级方案,帮助用户满足国家信息安全等级保护的要求。本文将探讨信息安全和阿里云等保三级方案的重要…...
嵌入式学习记录——线程
线程基本概念: 线程:线程是一个轻量级的进程,位于进程空间内部,一个进程中可以创建多个线程 1.线程创建: 线程独占栈空间,文本段、数据段和堆区与进程共享 2.线程调度: 与进程调度是一样的 宏观并行,微观串行 3.线程消亡: 与进程消亡是一样的 4.进程和线程…...
同步服务器操作系统公网仓库到本地 _ 统信UOS _ 麒麟KYLINOS
原文链接:同步服务器操作系统公网仓库到本地 | 统信UOS | 麒麟KYLINOS 在如今快速发展的信息技术时代,维护和更新服务器操作系统变得越来越重要。无论是为了提高安全性、增加新功能还是提升系统稳定性,同步公网源仓库到本地都是一个关键步骤。…...
【数仓】flume常见配置总结,以及示例
相关文章 【数仓】基本概念、知识普及、核心技术【数仓】数据分层概念以及相关逻辑【数仓】Hadoop软件安装及使用(集群配置)【数仓】Hadoop集群配置常用参数说明【数仓】zookeeper软件安装及集群配置【数仓】kafka软件安装及集群配置【数仓】flume软件安…...
统计信息锁定
在导入成功后我要收集下这些表的信息,结果发现好几张表都没法收集,用DBMS_STATS包显示ORA-20005:object statistics are locked (stattype ALL),用Analyze命令显示ORA-38029: 对象统计信息已锁定。 解决办法很明确&a…...
光猫改为bridge模式
注意事项: 改成桥接模式后,光猫将不再拨号上网,建议提前记录自己的宽带账号,打10010申请修改自己的宽带密码。 光猫改好桥接之后,把宽带账号和密码输入到负责拨号上网的终端设备中,完成宽带PPPOE拨号设置。…...
回溯算法01-组合(Java)
1.组合 题目描述 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4]]示例 2: 输入&#x…...
初始网络 --- 网络基础
目录 0、 前言 1、 计算机网络发展背景 1.1. 局域网(LAN) && 广域网(WAN) 2、 认识并理解协议 3、 初始网络协议 3.1. 协议分层 4、 TCP/IP 五层(或四层)模型 4.1. 简单了解TCP/IP层状体系 4.2. TCP/IP协议层状结构和计算机层状结构的关系 5、 OSI七层模型 …...
在Linux/Ubuntu/Debian中计算MD5,SHA256的方法
MD5(消息摘要算法 5)和 SHA-256(安全哈希算法 256 位)等流行的哈希算法广泛用于从任意数据生成固定大小的哈希值或校验和。 以下是这些算法及其计算方式的简要概述: MD5(消息摘要算法5)&#x…...
mybatis mysql insert 主键id为空
错误示范 java代码设置了param参数,但是sql 字段没有带上参数,例如 void insertV2(Param("historyDO") HistoryDO historyDO); <insert id"insertDuplicate" parameterType"com.test.entity.HistoryDO"keyProperty&…...
批次大小对ES写入性能影响初探
问题背景 ES使用bulk写入时每批次的大小对性能有什么影响?设置每批次多大为好? 一般来说,在Elasticsearch中,使用bulk API进行批量写入时,每批次的大小对性能有着显著的影响。具体来说,当批量请求的大小增…...
c语言十大核心用法
当然,以下是十个关于 C 语言用法的代码示例: 指针的基本用法: #include <stdio.h>int main() {int num 10;int *ptr;ptr #printf("The value of num is: %d\n", *ptr);return 0; }结构体的使用: #in…...
网页打开慢,这锅该谁背?
一、背景 工作中扯皮说不可避免且非常常见的事情. 开发与产品、开发和测试、前端和后端都会产生扯皮现象。今天要聊的一个问题就是前后端之间的扯皮问题。 网页打开太慢或者点击了某个按钮发现数据很久才显示出来,这个锅谁背? 做开发不能无凭据地胡乱甩锅, 我们…...
题目 1538: 蓝桥杯-格子位置
题目描述: 输入三个自然数N,i,j (1< i< N,1< j< N),输出在一个N*N格的棋盘中,与格子(i,j)同行、同列、同一对角线的所有格子的位置。 样例解释…...
第十三届蓝桥杯嵌入式省赛程序设计详细题解
第十三届蓝桥杯嵌入式省赛题目相对于第十二届较为简单,没有那么多串口的数据处理以及判断! 第十三届省赛主要是制作一个可由串口设置密码的密码锁。本实验中,我们将用到LED模块、按键模块、串口模块、定时器的PWM模块以及官方会提供源码的LC…...
Go 语言指针
1. 什么是指针? 在 Go 语言中,指针是一种特殊的数据类型,它存储了一个变量的内存地址。指针提供了直接访问和修改变量值的能力。 2. 指针的基本操作 2.1 声明指针 在 Go 中声明指针需要使用 * 符号,例如: var p *…...
指针运算笔试题解析
题目1: int main() { int a[5] { 1, 2, 3, 4, 5 }; int* ptr (int*)(&a 1); printf("%d %d", *(a 1), *(ptr - 1)); return 0; } ptr中存放了整个数组的地址,ptr是int*类型,&a1跳到5的地址后又被强制类…...
Matlab梁单元有限元编程 | 铁木辛柯梁 | 欧拉梁 | Matlab源码 | 理论文本
专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…...
破局 AIGC 检测重围:PaperXie 如何让论文从 “机器量产“ 回归 “学术原创“——3000 字深度解构双效降重新范式
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/weight?type1https://www.paperxie.cn/weight?type1 引言:当学术写作撞上 AIGC 检测,毕业与投稿的双重困局凌晨两点的图书馆,屏幕上刺眼…...
OpenClaw性能优化:nanobot镜像响应速度提升50%
OpenClaw性能优化:nanobot镜像响应速度提升50% 1. 为什么需要优化nanobot镜像性能 第一次使用nanobot镜像时,我就被它的轻量级特性吸引——基于Qwen3-4B-Instruct-2507模型,却能跑在我的开发笔记本上。但实际使用中发现,当连续处…...
告别手动重标:基于Python脚本的Labelme数据集增强与JSON同步更新实战
1. 为什么我们需要自动化处理Labelme标注数据 做计算机视觉项目的朋友都知道,数据标注是个体力活。特别是使用Labelme这类工具进行语义分割标注时,每张图片都要手动勾勒物体轮廓,工作量巨大。更让人头疼的是,当我们对原始图片进行…...
Qwen-Image-2512-Pixel-Art-LoRA 模型v1.0 传统艺术数字化:将油画、素描转化为像素风数字藏品
Qwen-Image-2512-Pixel-Art-LoRA 模型v1.0:当古典艺术遇见像素方块 最近在数字艺术圈里,有个话题挺有意思:怎么把那些挂在博物馆里的古典油画、素描,变成年轻人也爱玩的像素风数字藏品?听起来像是把交响乐改编成8-bit…...
如何高效捕获网页媒体资源?猫抓插件让智能嗅探变得如此简单
如何高效捕获网页媒体资源?猫抓插件让智能嗅探变得如此简单 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否遇到过想保存网页上的精彩视频却找不到下载按钮的尴尬?是否曾…...
终极指南:如何用Ice轻松管理你的Mac菜单栏,打造清爽高效的工作空间
终极指南:如何用Ice轻松管理你的Mac菜单栏,打造清爽高效的工作空间 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice 还在为杂乱的macOS菜单栏烦恼吗?Ice是一款专为…...
别再手动复制粘贴了!用CubeMX一键生成FreeRTOS工程(STM32F4 HAL库实战)
告别繁琐配置:STM32CubeMXFreeRTOS全自动工程生成指南 在嵌入式开发领域,时间就是竞争力。传统FreeRTOS移植需要手动复制文件、配置路径、修改中断向量表,稍有不慎就会陷入头文件缺失、链接错误的泥潭。现在,STM32CubeMX的图形化…...
使用Java实现数据的生产和消费
【Kafka】Java实现数据的生产和消费 Kafka介绍 Kafka 是由 LinkedIn 公司开发的,它是一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系统。 Kafka术语 …...
Unity游戏模组革命:MelonLoader新手10分钟完全指南
Unity游戏模组革命:MelonLoader新手10分钟完全指南 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 你是否想过为喜爱…...
终极RippleEffect测试指南:5步确保Android波纹动画质量的完整策略
终极RippleEffect测试指南:5步确保Android波纹动画质量的完整策略 【免费下载链接】RippleEffect Implementation of Ripple effect from Material Design for Android API 9 项目地址: https://gitcode.com/gh_mirrors/ri/RippleEffect RippleEffect是一款为…...
