数据库SQL---实体-联系模型(E-R模型)
1、E-R模型的基本概念与表示
1)实体与实体集
(1)实体:可以是有形的、实在的事物(如每个员工),可以是抽象的、概念上存在的事物(如一个部门)。
(2)实体的特征:独立存在、可区别于其他实体。
(3)实体集:具有相同类型及相同性质的实体集合。实体集可以相交(例如销售部门员工既属于销售员工实体集也属于员工实体集)。
2)属性
(1)属性:实体集中每个实体都具有的特征描述。
(2)属性的域:一个属性所允许的取值范围或集合。
(3)属性的分类:
简单属性和复杂属性:
简单属性:不能再分的属性。复杂属性:可以进一步划分的属性(如住址的成分街道可以划分为街道编号、街道名称)。
多值属性的处理:将多值属性转化为多个单只属性进行表示、将多值属性单独看做一个弱实体集,依赖于原实体集存在。
弱实体集:一类实体集其属性不足以形成主码,必须依赖于其他实体集而存在。
强实体集:一类实体集其属性可以形成主码的实体集
标识实体集:弱实体集所依赖的强实体集。
标识联系集:弱实体集与标识实体集相互关联形成的联系集。
标识实体集与弱实体集之间为“一对多”联系集,弱实体在标识联系集中全部参与。
单值属性和多值属性
某属性对一个特定实体任何时候都只有单独的一个值,称为单值属性(如员工编号),否则为多值属性(如员工联系方式)。
派生属性
某属性的值可以从其他相关属性或实体派生出来(如年龄可以由当前日期和出生日期推算出来)。
3)联系与联系集
(1)联系:指多个实体间的相互关联。
(2)联系集:同类联系的集合。
(3)多联系:多个实体集可以定义在一些相同的实体集上(如教师与学生之间有授课联系集和指导联系集)。
(4)实体的角色:实体在联系中的作用,即用角色名来定义一个实体参与联系的方式。
(5)联系集的度:参与联系集的实体集的数目(如选课联系集涉及两个实体集,为二元联系集,度为2)。
4)图形化表示
实体集---矩形、属性---椭圆、多值属性---双椭圆、派生属性---虚线椭圆、属性和实体之间---连线、联系集---菱形、弱实体集---双矩形、标识联系集---双菱形、弱实体的部分码---虚下划线。
2、约束
1)映射约束
(1)映射基数(二元联系为例):实体集A中的一个实体通过联系集R能同时与另一个实体集B中相联系的实体数目。
一对一:A中的一个实体至多与B中的一个实体相联系,B中的一个实体也至多与A中的一个实体相联系。(如开发票联系集是销货单实体集和发票是实体集之间的一对一联系集)
一对多:A中的一个实体可以同B中的任意数目的实体相联系,B中的一个实体至多与A中的一个实体相联系。(如部门与员工)
多对一:A中的一个实体至多与B中的一个实体相联系,B中的一个实体可以同A中的任意数目的实体相联系。(如课程和学院)
多对多:A中的一个实体可以同B中的任意数目的实体相联系,B中的一个实体可以同A中的任意数目的实体相联系。(如学生和课程)
(2)图形化表示
→表示指向参与联系集中的一方实体集,—表示参与联系集中的多方实体集。
2)码约束
(1)实体集的码
超码:实体集中能够唯一标识一个实体的一个或多个属性的集合。
候选码:超码的任意真子集都不能称为超码,这种超码称为候选码。
(2)联系集的码和属性安置
二元联系集的主码选择依赖于联系集的映射基数:
一对一联系集:主码可以选择参与联系的任何一方实体集的主码,属性可安置在任意一方。
一对多(多对一)联系集:主码选择多的一方实体集的主码,属性可安置在联系集上,也可以安置在多的一方实体集上。
多对多联系集:主码由参与联系的所有实体集的主码组成,属性只能安置在联系集上。
3)依赖约束:指联系中一种实体的存在依赖于该联系集中联系或其他实体集中实体的存在。
(1)实体集与联系集之间的依赖约束:联系中一种实体的存在依赖于该联系集中联系的存在,并将依赖于联系集而存在的实体集称为依赖实体集。(如销货单实体集与商品销售联系集,销货单为依赖实体集)
(2)实体集之间的依赖约束:联系中一种实体的存在依赖于其他实体集中实体的存在,并将依赖于其他实体集而存在的实体集称为弱实体集。(如开课班实体集依赖于课程实体集)
4)参与约束
5)多值联系:指在同一个给定的联系集中,相关联的相同实体之间可能存在多个联系。
3、简化的大学选课系统的E-R图
其中:ISA关系可从两个方向进行设计:
从自上而下方向,先设计学生实体集,再根据属性的不同,将学生具体化为本科生和研究生,研究生进一步具体化为硕士研究生和博士研究生;
自下而上方向,先设计出研究生和本科生,在提取公共属性,泛化为学生。
4、将上图中部分转化为关系模式
1)表示方法:加下划线的属性表示它为主码成员;斜体表示外码成员
1)由实体集转化而来的关系模式
(1)学院实体集:institute(instituteno,institutename,instituteaddress)
(2)课程实体集:course(courseno,couresname,credithour,coursehour,priorcourseno,instituteno)
(3)时间安排弱实体集:timeschedule(courseno,cclassno,time,classroomno)
(4)开课班弱实体集:ourseclass(courseno,cclassno,year,semester,capacity,enrollnumber)
2)由联系集转化而来的关系模式
(1)选课联系集:enroll(studentno,courseno,cclassno,score,teacherno,recorddate)
3)由多值属性转化而来的关系模式
(1)电话号码多值属性:phonenumber(studentno,pnumber)
4)由类层次转化而来的关系模式
(1)研究生的实体集:graduate(studentno,direction,teacherno)
数据库SQL---实体-联系模型(E-R模型)的更多相关文章
- 数据库系统概论学习2-《关系数据库与 E/R 模型》
-----------------------------一直更新学习内容------------------------------------ 建立一个关系数据库需要几步? 2.关系数据库与 E/ ...
- 【数据库上】 第四讲 E-R模型基础知识
第四讲 E-R模型基础知识 一.数据库设计过程 数据库设计的关键阶段? 各个阶段设计的主要任务? 基础条件:清楚一个应用系统的功能需求与数据需求(直接与用户交互.数据流程图示例/UML类图等) 核心阶 ...
- ThinkPHP 学习笔记 ( 三 ) 数据库操作之数据表模型和基础模型 ( Model )
//TP 恶补ing... 一.定义数据表模型 1.模型映射 要测试数据库是否正常连接,最直接的办法就是在当前控制器中实例化数据表,然后使用 dump 函数输出,查看数据库的链接状态.代码: publ ...
- RFM模型及R语言实现
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 一.基本概念 根据美国数据库营销研究所Arth ...
- 数据库设计和ER模型-------之关系模型的基本概念(第二章)
关系模型的基本术语 定义:用二维表格来表示实体集,用关键码表示实体之间联系的数据模型称为关系模型 有时也习惯称呼关系为表或表格,元组为行(Row),属性为列.关系中属性个数称为“元数”,元组个数称为“ ...
- ThinkPHP 数据库操作之数据表模型和基础模型 ( Model )
一.定义数据表模型 1.模型映射 要测试数据库是否正常连接,最直接的办法就是在当前控制器中实例化数据表,然后使用 dump 函数输出,查看数据库的链接状态.代码: public function te ...
- Spark MLlib编程API入门系列之特征选择之R模型公式(RFormula)
不多说,直接上干货! 特征选择里,常见的有:VectorSlicer(向量选择) RFormula(R模型公式) ChiSqSelector(卡方特征选择). RFormula用于将数据中的字段通过R ...
- "ApplicationDbContext"(泛指之类的数据库上下文模型)上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库。
一,在我使用自动生成数据库的时候,当你改变了数据库就会出现下面问题 "ApplicationDbContext"(泛指之类的数据库上下文模型)上下文的模型已在数据库创建后发生更改. ...
- StarSpace是用于高效学习实体向量的通用神经模型
StarSpace是用于高效学习实体向量的通用神经模型,用于解决各种各样的问题: 学习单词,句子或文档级嵌入. 文本分类或任何其他标签任务. 信息检索:实体/文件或对象集合的排序,例如 排名网络文件. ...
随机推荐
- 06-jmeter参数化(函数对话框使用)
概念: 1.变量命名的规则:字母.下划线开头,可包含数字,严格区分大小写 2.配置元件:用户定义的变量-------值是不变化的 用户命名的参数--------可以动态获取的并传参的 jmeter函数 ...
- iOS 头条一面 面试题
1.如何高效的切圆角? 切圆角共有以下三种方案: cornerRadius + masksToBounds:适用于单个视图或视图不在列表上且量级较小的情况,会导致离屏渲染. CAShapeLayer+ ...
- 013-结构体-C语言笔记
013-结构体-C语言笔记 学习目录 1.[掌握]返回指针的函数 2.[掌握]指向函数的指针 3.[掌握]结构体的声明 4.[掌握]结构体与数组 5.[掌握]结构体与指针 6.[掌握]结构体的嵌套 7 ...
- AJ学IOS(45)之常用的小功能比如打电话、打开网址、发邮件、发短信打开其他应用。
AJ分享,必须精品 简介 iOS中的很多小功能都是非常简单的,几行代码就搞定了,比如打电话.打开网址.发邮件.发短信.打开其他应用等. 打电话 方法1 最简单最直接的方式:直接跳到拨号界面 NSURL ...
- 【Java】FlowControl 流程控制
FlowControl 流程控制 什么是流程控制? 控制流程(也称为流程控制)是计算机运算领域的用语,意指在程序运行时,个别的指令(或是陈述.子程序)运行或求值的顺序. 不论是在声明式编程语言或是函数 ...
- 前端学习笔记 --ES6新特性
前言 这篇博客是我在b站进行学习es6课程时的笔记总结与补充. 此处贴出up主的教程视频地址:深入解读ES6系列(全18讲) 1.ES6学习之路 1.1 ES6新特性 1. 变量 2. 函数 3. 数 ...
- 跨平台开源密码管理器 KeePassXC
简介 KeePassXC 是一个开源的跨平台密码管理器.基于 KeePass 二次开发. KeePassXC 可以安全地在本地存储您的密码,配合浏览器插件KeePassXC-Browser可辅助登录. ...
- SpeedButton
SpeedButton是一个图形控件,本身没有句柄.因此它不能具有焦点.你可以使用TBitBtn,调整一些属性,可以使他们的外形很接近. 只有从TWinControl派生的控件,才具有Handle.你 ...
- cheat sheet 简介
cheat sheet 速查表 /小抄 如果期末考试老师只让你让带一张A4纸,合法"作弊",纸上能写多少全凭自己本事,你会写什么?大部分人应该把整个课程的知识重点梳理一遍,方便记忆 ...
- D - Free Candies UVA - 10118
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...