数据库基础--概念模型

文章目录

    • 概念模型
      • 回顾
      • 概念结构设计
      • 基本概念
      • 概念模型中的几个基本概念
      • 联系——实体集之间的对应关系
      • 讨论:怎样寻找信息世界中的实体和联系?
      • 实体和联系的举例
      • 概念模型的设计
      • 概念模型的设计方法与步骤
      • 概念结构设计步骤
      • 合并E-R图时的冲突解决方法
      • 练习:E-R模型设计
      • 小结


概念模型

回顾

  • 数据库系统的软件构成:应用程序、数据库管理系统(DBMS)、数据库(DB)。
  • 三种数据模型:概念模型、逻辑模型、物理模型。
  • 数据库的三级模式和两级映射结构。
  • 设计数据库的步骤。

概念结构设计

  • 逻辑结构设计的任务和步骤。

  • 在这里插入图片描述

  • E-R图:概念结构设计。

  • 实现设计阶段:初始关系模式设计、关系模式规范化、逻辑结构设计、模式改进、模式评价。

基本概念

  • 实体、联系、属性、值域、型、值、候选码、主码。
    在这里插入图片描述

概念模型中的几个基本概念

  • 概念模型是对现实世界的抽象,通过抽象得到信息实体及实体集之间的联系,所以概念模型也称为实体-联系模型。

  • 实体:可以相互区分的事物。

  • 实体集:同类实体的集合。

  • 联系:实体集之间的相互关联。

  • 属性和值域:属性是实体或联系的特征,值域是属性的取值范围。

  • 例:教师实体有性别和职称属性;性别取值范围是(男,女)。

  • 例:选课联系具有学号、课程号、修读学期等属性。

  • 型和值:型是实体或联系的结构描述,值是属性值的组合。

  • 例:型 ——教师(工号,姓名,性别)
    值——(15021,“李木”,男)

  • 候选码、主码:候选码用于区分不同实体,主码是选定的候选码。当一个实体集中有多个候选码,可以选定其中的一个作为主码
    例:学生(学号,姓名,性别,年龄,生日,身份证号)候选码为:学号、身份证号 主码可为:学号

举例:选课业务中的实体、实体集与联系

  • 实体:
  • 教师、课程、学生
  • 实体集:
  • 全体教师、全体课程、全体学生
  • 联系:
  • 教师讲授课程、学生选修课程

联系——实体集之间的对应关系

  • 联系类型:一对一(1:1)、一对多(1:n)、多对多(n:n)。
  • 注意:两个方向结合才能判断一个联系的类型。
    1个A实体对应几个B实体,得到B端类型;1个B实体对应几个A实体,得到A端类型。比如:1个班级对应多个学生;1个学生对应1个班级,因此班级与学生之间的联系类型是一对多。
    一对一写成1:1,一对多写成1:n,多对多写成n:n
    联系跟实体一样也具有属性,这些属性一部分取自于与联系相关的实体,一部分是联系自身的特征,比如上面的修读课程联系,是学生实体和课程实体之间的联系,其中学号和课程编号取自于实体,学期和分数是自身的特征。
    学生数据集中,候选码不止一个。修读课程集中,候选码由几个属性组合而成。

讨论:怎样寻找信息世界中的实体和联系?

  • 界定信息边界,剔除无关信息。
  • 寻找名词和动词,名词对应实体,动词对应联系。

实体和联系的举例

  • 批发公司案例分析。
    一个批发公司,法人代表是张孝全,位于广州市海珠区新港西路132号,员工50人。公司设三个部门,每部门有一个经理和若干员工。公司从事纺织品批发,每样商品都有唯一编号。公司从供应商采购商品并销售给客户,每次采购由一个员工负责,每次销售由一个员工负责……
  • 实体
    公司(公司注册号,地址,法人代表,规模,经营范围)
    部门(部门名,经理)
    员工(员工号,姓名,性别,入职日期,部门名)
    供应商(供应商编号,名称,地址,联系人)
    客户(客户编号,名称,地址,联系人)
    商品(商品号,商品名,规格)
  • 联系
    销售(员工号,商品号,客户编号,日期,数量,单价)
    采购(员工号,商品号,供应商编号,日期,数量,单价)
    部门_员工(员工号,部门名)
    公司_部门(部门名,公司注册号),这个联系可剔除

概念模型的设计

  • E-R图(陈品山首创):用矩形框表示实体,椭圆形表示属性,菱形框表示联系。
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
    多个实体集之间的联系
    在这里插入图片描述

同一个实体集内部联系

在这里插入图片描述

概念模型的设计方法与步骤

  • 自顶向下地进行需求分析:从宏观角度理解整个系统的需求,确定系统的目标和功能。
    识别系统的主要实体和它们之间的关系,以及系统需要处理的主要业务流程。
  • 自底向上地设计概念结构:从具体的业务细节出发,逐步构建局部概念模型。
    确定每个局部模型中的实体、属性和联系,并绘制局部E-R图。

概念结构设计步骤

  • 需求分析、数据抽象、局部视图设计、全局E-R图、视图集成、逻辑结构设计。
    在这里插入图片描述

合并E-R图时的冲突解决方法

  • 属性冲突、命名冲突、结构冲突。
    属性冲突:表现为各个局部E-R图之间同一属性的值域不一致。
    命名冲突:表现为各个局部E-R图之间的同名异义或者异名同义。
    结构冲突:表现为各个局部E-R图之间实体(或联系)的结构不一致。
    同一对象在不同应用中具有不同的抽象;解决方法:通常是把属性变换为实体或把实体变换为属性,使同一对象具有相同的抽象。
    同一实体在不同局部视图中所包含的属性个数和排列次序不完全相同。解决方法:使该实体的属性取各分E-R图中属性的并集,再适当设计属性的次序。
    同一联系在不同局部视图中呈现不同的类型。解决方法:根据应用语义对实体联系的类型进行综合或调整。
  • 消除冲突实例:
    1、异名同义:同一对象在不同部门中有不同名称。
    在这里插入图片描述
    2、同名异义:同一对象在不同应用中具有不同的抽象

例:职称在不同的应用中可以作为职工的属性,也可以作为一个实体。
通常当对职称没有进一步的描述时,作为职工实体的属性;
但在涉及住房分配时,由于分房与职称有关,也就是说职称与住房实体之间有联系,这时把职称作为实体来处理会更合适些。
3、结构冲突之一:同一实体在不同局部视图中所包含的属性个数和排列次序不完全相同
在这里插入图片描述
在这里插入图片描述

练习:E-R模型设计

  • 教务管理系统的E-R图设计。
  • 在简单的教务管理系统中,有如下语义约定:
    ① 一个学生可选修多门课程,一门课程可为多个学生选修,因此学生和课程是多对多的联系。
    ② 一个教师可讲授多门课程,一门课程可为多个教师讲授,因此教师和课程也是多对多的联系。
    ③ 一个系可有多个教师,一个教师只能属于一个系,因此系和教师是一对多的联系,同样系和学生也是一对多的联系。
    学生选课局部E-R图
    在这里插入图片描述
    教师任课局部E-R图
    在这里插入图片描述
    初步E-R图
    在这里插入图片描述
    基本图
    在这里插入图片描述

小结

  • 实体(E)、联系®的概念。
  • 联系类型:1:1、1:n、n:n。
  • E-R模型的概念模型表示方法。
  • 采用E-R方法进行数据库概念设计,可以分成3步进行:首先设计局部E-R模式,然后把各局部E-R模式综合成一个全局的E-R模式,最后对全局E-R模式进行优化,得到最终的E-R模式,即概念模式。

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

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

相关文章

二叉树习题leetcode 572. 另一棵树的子树

题目链接:572. 另一棵树的子树 二叉树遍历综合问题 题意 给定两棵树,判断第二棵树是否为第一颗树的子树。 思路 用到了100. 相同的树 的思路,把给定的二叉树,每个节点都和subRoot都做一次相同的树的比较,只要正确&…

Llama + Dify,在你的电脑搭建一套AI工作流

theme: smartblue 点赞 关注 收藏 学会了 本文简介 最近字节在推Coze,你可以在这个平台制作知识库、制作工作流,生成一个具有特定领域知识的智能体。 那么,有没有可能在本地也部署一套这个东西呢?这样敏感数据就不会泄露了&…

使用两台虚拟机分别部署前端和后端项目

使用两台虚拟机分别部署前端和后端项目 1 部署方案2 准备两台虚拟机,并配置网络环境3 部署后端项目3.1 打包服务3.2 上传jar包到服务器3.3 集成Systemd3.3.1 移动端服务集成Systemd3.3.2 后台管理系统集成Systemd 4 配置域名映射5 部署前端项目5.1 移动端5.1.1 打包…

Kettle下载安装

环境说明 虚拟机:Win7;MySql8.0 主机:Win11;JDK1.8;Kettle 9.4(Pentaho Data Integration 9.4)(下载方式见文末) 安装说明 【1】解压后运行Spoon.bat 【2】将jar包 复…

DjangoRF-6-项目模块projects模型

首先,这是个新模块,在apps下创建projects 1.1、django-admin startapp projects 1.2进行注册 ‘apps.projects.apps.ProjectsConfig’ 进行接口编写的过程中,落入数据库的字段相同的有很多我们要在utils文件下进行闯进模型鸡肋 from django…

【黑科技】:Laravel 项目性能提升 20 倍

令人激动的黑科技:Laravel 项目性能提升 20 倍 这个项目能够在无需修改任何代码且无需第三方扩展的前提下,将你的 Laravel 项目性能提高 20 倍。它仅依赖于 PHP 原生的 pcntl、posix、fiber 和 sockets。 项目灵感 起因是看到官方发布的 PHP 8.1 更新…

【教学类-70-01】20240728一个茶壶两个茶杯(果茶)

‘ 背景需求: 用通义万相下载简笔画茶壶、茶杯 茶杯,简单笔画,卡通,黑白,未着色,幼儿插图,线条画,没有背景,没有颜色,黑白漫画线条艺术:,空背景…

【全国大学生电子设计竞赛】2022年B题

🥰🥰全国大学生电子设计大赛学习资料专栏已开启,限时免费,速速收藏~

Hakuin:一款自动化SQL盲注(BSQLI)安全检测工具

关于Hakuin Hakuin是一款功能强大的SQL盲注漏洞安全检测工具,该工具专门针对BSQLi设计,可以帮助广大研究人员优化BSQLi测试用例,并以自动化的形式完成针对目标Web应用程序的漏洞扫描与检测任务。 该工具允许用户以轻松高效的形式对目标Web应…

基于Python的宿舍管理系统/基于Spring Boot的学生宿舍管理系统/计算机专业/课设

摘要 宿舍管理系统是一种基于计算机技术的管理工具,旨在提高学生宿舍管理的效率、准确性和安全性。随着高校规模的不断扩大和学生数量的增加,宿舍管理工作变得愈发复杂,传统的手工管理已经无法满足需求。因此,开发宿舍管理系统已…

Greenplum的诞生与成长过程

Greenplum 成立与早期发展 Greenplum的诞生于早起发展 Greenplum于2003年在美国硅谷成立,在2006年发布了基于PostgreSQL(8.x)的MPP数据库产品,作为与公司同名的MPP数据库,专为分析和管理海量数据集而设计,支持复杂的数据分析和商…

大语言模型系列-Transformer:深入探索与未来展望

大家好,我是一名测试开发工程师,已经开源一套【自动化测试框架】和【测试管理平台】,欢迎大家联系我,一起【分享测试知识,交流测试技术】 Transformer模型自其问世以来,便迅速在自然语言处理领域崭露头角&a…

synchronized锁解析+synchronized锁的膨胀过程

目录 synchronized锁(具体详解) synchronized锁具体的三种形式: synchronized锁的实现原理是什么? 类锁和对象锁(面试重点) 锁的升级与对比(synchronized锁的膨胀 面试重点) 偏…

Jenkins持续部署

开发环境任务的代码只要有更新,Jenkins会自动获取新的代码并运行 1. pycharm和git本地集成 获取到下面的 Git可执行文件路径 2. pycharm和gitee远程仓库集成 先在pycharm中安装gitee插件 在设置中找到gitee,点击添加账户,并将自己的账户添…

vscode 根据不同语言项目自定义配置项(插件版本)

2024.7.28 天微热,心情燥。 前文,如果我们是一个全栈开发者,我们想在写前端项目时只让vscode加载前端的插件,写后端的时候只加载后端的插件,该如何配置呢? 1. 通过配置 workspace 这里大家都会&#xff0…

HAL库源码移植与使用之SPI驱动VS1053音频解码

你可以理解为带着dac adc芯片功能的集成芯片,声音的高低音形成由频率决定,大小声由波峰决定,所以采集时记录时间和电压值就可以确定高低音色和大小声,形成声音波形,再把波形用dac输出给喇叭,让喇叭在对应时…

Nginx系列-12 HTTP消息处理流程

背景 了解Nginx处理HTTP请求的11个阶段,有助于理解和配置nginx、自定义模块、基于lua模块自定义功能。按如下配置,执行"curl http://localhost:8001/query/test.html",如果读者对结果不是很确定,建议阅读本文。 serve…

初识C++ · AVL树(2)

目录 前言: 1 左右旋 2 右左旋 3 部分细节补充 3.1 单旋和插入 3.2 部分小函数 前言: AVL树作为一种结构,理解树的本身是不大难的,难的在于,树旋转之后的连接问题,写AVL树的代码大部分都是在旋转部分…

压力温度实时图 livecharts

var mapper Mappers.Xy<MeasureModel>() //.X(model > model.currentTime.Ticks/TimeSpan.FromDays(1).Ticks) //使用 Time.作为X轴的标签 .X(model>model.Time) .Y(model > model.Value); // 作为Y轴的值 //全局保存映射器 Charting.For<Measu…

如何在安卓设备上运行Linux(使用termux+图形界面)加上换源等优化

我学生嘛&#xff0c;喜欢讲故事&#xff0c;你看看我大部分文章开头&#xff0c;都会有"事情的起因"一类话 当然这次也不例外哦 我最新获得了一个新平板&#xff0c;华为的matepad air&#xff0c;很喜欢。想捣鼓&#xff0c;不太懂&#xff0c;但好像鸿蒙不能直接…