实体 联系 模型mysql_数据库系统概念读书笔记――实体-联系模型_MySQL

bitsCN.com

数据库系统概念读书笔记——实体-联系模型

前言

为了重新回顾我写的消息系统架构,我需要重新读一下数据库系统概念的前三章,这里简单的做一个笔记,方便自己回顾

基本概念

实体-联系(E-R)数据模型基于对现实世界的这样一种认识:世界由一组称为实体的基本对象及这些对象间的联系组成。E-R数据模型所采用的三个主要概念是:实体集、联系集和属性

实体集

实体是现实世界中可区别于其他对象的“事件”或“物体”

实体集是具有相同类型及共享相同性质(或属性)的实体集合

实体通过一组属性来表示。属性是实体集中每个成员具有的描述性质。将一个属性赋予某实体集表明数据库为实体集中每个实体存储相似的信息,但每个实体在自己的每个属性上都有各自的值。属性类型划分:

简单属性和符合属性

单值属性和多值属性

派生属性

联系集

联系是多个实体间的相互关联

联系集是同类型联系的集合。规范的说,联系集是n(n >= 2)个实体集上的数学关系,这些实体集不必互异。如果E1, E2, ..., En为n个实体集,那么联系集R是{(e1,e2,e3,..,en)|e1 (- E1, e2 (-E2, ..., en (- En}的一个子集,其中(e1, e2, e3,...,en)是一个联系

约束

有了实体集合,有了联系集合,自然而然的就产生出来约束,约束描述的是实体集和实体集之间的关系,而这种关系具现为一个联系集。我们要讨论的是映射基数和参与约束

映射基数

映射基数,或基数比例,指明通过一个联系集能同时与另一个实体相联系的实体数目

对于实体集A和B之间的二元联系集R来说,映射基数必然是以下情况之一:

一对一

一对多

多对一

多对多

参与约束

如果实体集E中的每一个实体都参与到联系集R的至少一个联系中,我们称实体集E全部参与联系集R

如果实体集E中只有部分实体参与到联系集R的联系中,我们称实体集E部分参与联系集R

我们必须有一个能区分一个实体集中的所有实体的方法。概念上来说,各个实体是互异的;但从数据库的观点来看,它们的区别必须用其属性来表明

码概念使得我们可以区别实体,码同样可以唯一地标识联系,并将联系互相区分开来

超码:一个或多个属性的集合,这些属性的组合可以使我们在一个实体集中唯一地标识一个实体

候选码:任意真子集都不能称为超码的超码,也就是最小的超码

主码:数据库设计者选定的候选码

设计问题

实体集和联系集的概念并不精确,而且定义一组实体及它们的相互联系可以有多种不同的方式

用实体集还是属性

书里的电话号码和姓名的例子很清楚,哪个为属性哪个为实体集,注意两点常见的错误:

一个常见的错误是用实体集的主码作为另一个实体集的属性,而不是用联系

另一个常见的错误是将有关系的实体集的主码属性作为联系集的属性

用实体集还是联系集

用联系集可能产生的两个问题:

数据多次存储,浪费存储空间

更新可能使数据处于不一致的状态,即两个联系中应该具有相同值的属性具有了不同的值

二元联系集与n元联系集

n元关系可以分解成为二元关系,但是会出现关系描述不准确的情况

实体-联系图

E-R图包括如下几个主要组件:

矩形:实体集

椭圆:属性

菱形:联系集

线段:将属性连接到实体集或将实体集连接到属性集

双椭圆:多值属性

虚椭圆:派生属性

双矩形:弱实体集

举个书上的例子:

1405LF14U940-1B25.jpg

后记

纯粹为了回顾E-R模型和E-R图的画法,比较水,高手可以直接跳过了!bitsCN.com

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

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

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

相关文章

使用Twitter Bootstrap,WebSocket,Akka和OpenLayers玩(2.0)

原始帖子可以在ekito网站上找到。 对于我们的一位客户,我们需要显示一张具有实时更新的车辆位置的地图。 因此,我开始使用Play制作原型! 框架及其最新发布的版本2.0,使用Java API。 我从Play的网络聊天室开始! 2.0个样…

同步时间

同步时间 [rootlocalhost 03]# ntpdate 0.centos.pool.ntp.org 转载于:https://www.cnblogs.com/cglWorkBook/p/5556920.html

mysql 5.6.23免安装_mysql5.6.23免安装配置

1.官网下载,并解压2.环境变量,path下,追加mysql的bin路径D:\Program Files\mysql\bin;3.mysql目录下的my-default.ini重命名为my.ini,并添加下面的代码basedirD:/Program Files/mysql #mysql路径datadirD:/Program Files/mysql/d…

在Intellij IDEA中运行Vaadin应用

在本文中,我将向您展示如何使用Intellij IDEA运行vaadin应用程序。 Vaadin提供了一些用于Eclipse和Netbeans的插件。 但是对于Intellij IDEA来说,还没有插件。 但是部署vaadin应用程序比其他两个IDE容易。 这是您要遵循的步骤。 1.首先创建一个新项目&am…

mysql主从数据库

Mysql主从配置,实现读写分离 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连…

安装openstack时遇到的错误

学习opensatck的第一步是安装DevStack来进行本机操作 1. 下面命令没有权限,解决办法:切换到root用户下执行sudo -s echo "stack ALL(ALL) NOPASSWD: ALL" >> /etc/sudoers2. 执行下面命令提示没有git,解决办法:su…

Java EE 6示例– Galleria –第3部分

关于Galleria示例的先前文章( 第1 部分 | 第2部分 | 第3部分 | 第4部分 )指导您完成基础知识以及对GlassFish和WebLogic的初始部署。 从今天开始,我尝试在其中添加一些企业级功能,因为我发现他们在自己的项目中提出了很多要求。 我…

在 Windows 上测试 Redis Cluster的集群填坑笔记

redis 集群实现的原理请参考http://www.tuicool.com/articles/VvIZje集群环境至少需要3个节点。推荐使用6个节点配置,即3个主节点,3个从节点。新建6个文件夹 分别是 7000/7001/7002/7003/7004/7005将redis.windows.conf 复制一份然后修改配置文件中的下面…

不成为编程天才的5种贡献方式

安迪莱斯特(Andy Lester)早在三月发布了原始指南,其中介绍了14种不成为编程天才或摇滚明星的贡献开源的方法 ,我真的很喜欢这个想法。 这就是为什么我决定稍微采纳一下这篇文章,并告诉您如何以及可以做什么来支持自己喜…

mysql数据库设计与应用答案智慧树_智慧树_MySQL数据库设计与应用_完整免费答案...

单位工程施工组织设计的技术经济指标体系包括有()。A.工期指标B.劳动指标C.台班利用率D.成本降低大跨径桥梁采用()将会取得良好的技术经济效益。A.横移法施工B.顶推法施工C.转体法施工D&#xf…

拓扑排序最长链-P3119 [USACO15JAN]草鉴定Grass Cownoisseur

https://www.luogu.org/problem/show?pid3119 本来我是来练习tarjan的,结果tarjan部分直接copy了,反而拓扑排序部分想了好久; 这道题SZB大神两次就AC; 但我等到AC,写好题解就只能洗洗睡了; 唉~ 差距怎…

谈谈父类和子类的隔离性

以前写代码知道要给类外设置访问接口, 例如下例: 1 class Money2 {3 public:4 Money(int money) : m_curValue(money){}5 6 void store(int money) { m_curValue money;}7 void spent(int money){ m_curValue - money;}8 private:9 int m_curValue…

用于数据库测试的DBUnit,Spring和注释

如果您曾经尝试用Java编写数据库测试&#xff0c;则可能会碰到DBUnit 。 DBUnit允许您设置和拆除数据库&#xff0c;以便它包含可针对其编写测试的一致行。 通常&#xff0c;您可以通过编写一个简单的XML文档来指定要DBUnit插入的行&#xff0c;例如&#xff1a; <?xml ve…

阿里云centos 7.6安装mysql_阿里云Centos7上安装MySQL教程

1 基本安装过程1.查看系统是否安装了mysql软件# rpm -qa|grep -i mysql2.将已经安装过的软件卸载掉。注意&#xff1a;这样的卸载是不彻底&#xff0c;不过这里够用了# yum remove 软件名3.CentOS 7的yum源中默认是没有mysql的。所以&#xff0c;为了解决这个问题我们首先下载安…

Struts2中数据封装方式

一、通过ActionContext类获取 public class ActionContextDemo extends ActionSupport { Override public String execute() throws Exception { //获取ActionContext对象 ActionContext context ActionContext.getContext(); //调用getParameters…

第五章、搭建S3C6410开发板的测试环境

通过对本章的学习&#xff0c;我对s3c6410开发板的测试环境有了一定的认识&#xff0c;并掌握了如下的知识点&#xff1a;一、对于s3c6410这款开发板&#xff0c;它是一款低功耗、高性价比的处理器&#xff0c;它是基于ARM11的内核。二、不同开发板的区别主要在烧录嵌入式系统的…

IBM JVM调整– gencon GC策略

本文将向您详细介绍从Java虚拟机&#xff08;例如HotSpot或JRockit&#xff09;迁移到IBM JVM时重要的Java堆空间调整注意事项。 该调整建议基于我为我的一个IT客户端执行的最新故障排除和调整任务。 IBM JVM概述 正如您可能从其他文章中看到的那样&#xff0c;IBM JVM在某些方…

mysql主从配置错误_mysql主从配置失败,主从通讯失败

配置mysql主从的时候&#xff0c;检查slave状态&#xff0c;发现报错信息&#xff0c;Error The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement on query.mysql> show slave status\G*************************** 1. r…

echarts如何显示在页面上

echarts如何显示在页面上 1.引入echarts的相关.js文件 <script src"js/echarts.min.js"></script> 2.新建一个div&#xff0c;style自己定&#xff0c;但必须要有width和height <div id"history_state" style"width: 400px;height: 20…