【数据库上】 第四讲 E-R模型基础知识
第四讲 E-R模型基础知识
一、数据库设计过程
数据库设计的关键阶段?
各个阶段设计的主要任务?
基础条件:清楚一个应用系统的功能需求与数据需求(直接与用户交互、数据流程图示例/UML类图等)
核心阶段:
- 数据库建模阶段(概念设计)
- 数据库逻辑结构设计阶段(逻辑设计)
- 数据库物理设计阶段(物理设计)
数据库设计的后期工作(数据库实现)
根据设计的逻辑模型和物理模型->实际的数据库结构
二、实体-联系模型(E-R模型)
E-R模型与E-R图有何区别?
E-R模型-是一种描述方法
E-R图-采用E-R模型方法,对一具体应用的描述(结果)
E-R模型有哪些基本要素?
E-R模型的三个最基本的要素:
实体集&属性(矩形)-描述数据对象及特征(内部结构);
联系集(菱形&连线)-描述数据对像间联系(外部结构)。
实体集也有超码,候选码,主码吗?
有,定义与作用都与关系模式类似!
实体集&联系集
分别指什么?
联系集上也可以有属性,表示何意?
可以带属性!表示联系的特征(与联系相关)
实体集和联系集的示例
*实体集与实体间的关系?
实体集:相关类型实体(对象)的集合
*联系集与联系间的关系?
联系集:相关类型联系(连线)的集合
联系集的类型与弱实体集
联系集采用双线表示何义?
弱实体集特点
1)没有键;
2)存在依赖于
主实体集;
3)键由主实体
集键和它的
分辨符合并
构成。
如何解释实体集自身的联系?
实体集到联系集采用双线表示何义?
联系集有哪几种常见类型(映射基数)?
四、复合属性与多元联系集
1、复合属性
E-R模型如何描述具有复杂结构的数据对象?
理论上讲:
E-R模型可描述任何复杂客观对象,实体集可以是任何一种复杂数据结构
因为:E-R模型重点是面向客观世界,建立易于用户理解的抽象数据模型
(它不关心数据如何才能够被实际存储)
2、多元联系与角色
什么是多元联系集和角色?
多元联系集描述可否转换为二元联系集描述?
多元联系的二元分解
(实体集间的关系):
对多元联系集R中的每个
实体(ai,bi,ci):
1. 创建实体集E中的一个
新实体ei=(ai , bi , ci)
2. 添加(ei,ai)到二元联系集RA
3. 添加(ei,bi)到二元联系集RB
4. 添加(ei,ci)到二元联系集RC
练习
设有商店和顾客两个实体,“商店”有属性:商店编号、商店名、地址、电话,“顾客”有属性:顾客编号、姓名、地址、年龄、性别。
假设一个商店有多个顾客购物,一个顾客可以到多个商店购物,顾客每次去商店购物有一个消费金额和日期,而且规定每个顾客在每个商店里每天最多消费一次。
图书借阅管理系统具有以下功能:
可随时查询书库中现有书籍的数量与存放位置。
所有各类书籍均可由书号唯一标识。
可随时查询书籍借还情况,包括借书人单位、姓名、借书证号、借书日期和还书日期。
任何人可借多种书,任何一种书可为多个人所借;
借书证号具有唯一性。
可通过数据库中保存的出版社的Email、电话、邮编及地址等信息向相应出版社增购有关书籍。
一个出版社可出版多种书籍,同一本书仅为一个出版社出版;
出版社名具有唯一性。
请为该系统作概念模型设计,画出ER图.
人事管理系统
公司有多个部门,每个部门都有部长,副部长,职员
每一个职员都会有一个工作岗位
【数据库上】 第四讲 E-R模型基础知识的更多相关文章
- OSI七层模型基础知识及各层常见应用
OSI Open Source Initiative(简称OSI,有译作开放源代码促进会.开放原始码组织)是一个旨在推动开源软件发展的非盈利组织.OSI参考模型(OSI/RM)的全称是开放系统互 ...
- PHP基础入门(四)---PHP数组实用基础知识
PHP数组 数组是特殊的变量,它可以同时保存一个以上的值. ***关键词:数组基础.数组遍历.超全局数组.数组功能.数组函数. 下面来和大家分享一下有关PHP的数组基础知识,希望对你PHP的学习有所帮 ...
- Go语言核心36讲(Go语言基础知识四)--学习笔记
04 | 程序实体的那些事儿(上) 还记得吗?Go 语言中的程序实体包括变量.常量.函数.结构体和接口. Go 语言是静态类型的编程语言,所以我们在声明变量或常量的时候,都需要指定它们的类型,或者给予 ...
- Go语言核心36讲(Go语言基础知识五)--学习笔记
05 | 程序实体的那些事儿(中) 在前文中,我解释过代码块的含义.Go 语言的代码块是一层套一层的,就像大圆套小圆. 一个代码块可以有若干个子代码块:但对于每个代码块,最多只会有一个直接包含它的代码 ...
- JMM模型基础知识笔记
概述 内存模型可以理解为在特定的操作协议下,对特定的内存或者高速缓存进行读写访问的过程抽象,不同架构下的物理机拥有不一样的内存模型,Java虚拟机也有自己的内存模型,即Java内存模型(JavaMem ...
- 分布式数据库对比评测(Es,mongodb,redis)基础知识篇
前言 我建议大家看下这个,否则后面你不知道我在说什么. 1.ES数据库相关概念 啥是Es,说白了就是支持文档搜索的分布式数据库,专门方便搜索的,GITHUB京东现在都在用. 1.ES的数据库存放在哪里 ...
- 计算机网络(四)--全世界最好的TCP基础知识讲解
TCP传输的数据单元是报文段,报文段分为首部.数据两部分 TCP首部 首部的前20字节是固定长度,后面的4n字节根据需要增加的选项 字段解释:图中标示单位为bit,不是byte 1.源端口.目的端口: ...
- Go语言核心36讲(Go语言基础知识二)--学习笔记
02 | 命令源码文件 我们已经知道,环境变量 GOPATH 指向的是一个或多个工作区,每个工作区中都会有以代码包为基本组织形式的源码文件. 这里的源码文件又分为三种,即:命令源码文件.库源码文件和测 ...
- Go语言核心36讲(Go语言基础知识三)--学习笔记
03 | 库源码文件 在我的定义中,库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话). 这里的"其他代码" ...
随机推荐
- Nacos 自动更新配置不生效问题
版本 Nacos 1.4.1 SpringCloud 2020.0.3 解决方案 bootstrap.properties 增加应用名配置即可 spring.application.name=serv ...
- Linux下的Vim文本编辑器(入门)
引言 vim filename:打开名为filename的文件,如果不存在就会创建一个filename文件 Vim的三种使用模式 1. 命令模式 启动Vim时,就进入了命令模式 在该模式下: i:切换 ...
- 浏览器中hook对象属性
先获取window对象属性 来源: 夜幕爬虫安全论坛 原文链接: http://bbs.nightteam.cn/thread-485.htm?orderby=desc&user=7
- Android开发没有一技之长就废了吗?
写在前面的话 不知你发现没有,人到中年之后,时间流逝的速度仿佛越来越快? 还记得毕业那会儿,我们怀着新鲜和好奇踏进了职场,那个时候每天都是满满的挑战和需要学习的东西,感觉时间过得真慢啊: 不知道从什么 ...
- spring学习06(AOP)
9.AOP 什么是AOP AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软 ...
- k8s之数据存储-高级存储
PV和PVC 前面已经学习了使用NFS提供存储,此时就会要求用户会搭建NFS系统,并且会在yaml配置nf's,由于k8s支持的存储系统有很多,要求客户全部掌握,显然不现实.为了能够屏蔽底层存储实现的 ...
- 解决uni-file-picker组件在ios点击失效的问题
从组件源码里找到choose-and-upload-file.js文件,查找chooseAndUploadFile方法,在方法里添加下面代码,保存即可解决. opts.sourceType = ['a ...
- Golang在Linux系统中实现微秒级延迟
在程序中延迟或者等待一段时间一般可以使用Sleep函数实现,但是因为操作系统线程调度的消耗,往往只能做到十几或者数十毫秒的精度,很难达到微秒级,Golang的time.Sleep也是如此. Sleep ...
- 备战秋招之十大排序——O(n^2)级排序算法
一.冒泡排序 冒泡排序是入门级的算法,但也有一些有趣的玩法.通常来说,冒泡排序有三种写法: 一边比较一边向后两两交换,将最大值 / 最小值冒泡到最后一位: 经过优化的写法:使用一个变量记录当前轮次的比 ...
- python 日期、时间处理,各种日期时间格式/字符串之间的相互转换究竟是怎样的?
模块函数说明 ''' date 日期对象,常用的属性有year,month,day time 时间对象,常用的属性有hour,minute,second,毫秒 datetime 日期时间对象,常用的属 ...