E-R模型如何转换成关系模型,这里我们分成三种情况进行讲解,分别是一对一,一对多和多对多。

1.一对一的情况:

  有两种方法解决这个问题。第一个方法:可以单独对应一个关系模式,由各实体的主码构成关系模式,而关系模式的主码可以是任一个实体集的主码。而实体中属性照常写就可以了。第二个方法:实体中的属性照常写,然后将一方实体集的主码加到另一方实体集对应的关系模式中。下面举个例子我们来看一下:

在这个例子中,利用方法一,先将两个实体正班长和班级的属性照着写下来,然后将关系模式“属于”的属性写出来——即两边实体的主码,其中关系模型“属于”的主键可以是两端实体集的任一主码。利用方法二,也是先将两端实体的属性照着写下来,然后注意这一点,将一端实体的主码加到另一端实体的主码中,图例中就是将“班级”实体的主码加入到“正班长”关系属性中。

2.一对多的情况:

  这种情况可以跟一对一的情况对比着学习。第一个方法:同一对一的方法一是差不多的,只是对应的关系模式中,其主码不再是任一实体的主码就可以,而是必须指定n端的主码为关系模式的主码。第二个方法:同一对一的方法二也是差不多的,但是值得强调的是,必须将1端的主码加到n端的关系模式中,而且n端的主码仍然为该关系模式中的主码。同样,我们也来举个例子。

如图,在方法一中,关系模式的主键是n端学生实体的主键。在方法二中,将一端对应的实体主键“班级编号”加入到了对应n端“学生”的关系模式中,并且,n端的主码仍然为该关系模式的主码。

3.多对多的情况:

  对于多对多的联系,似乎是这三种类型中最简单的一个了。其转换原则为:每个实体集对应一个关系模式,对于多对多的联系,其单独对应一个实体集,该实体集的主码由各实体集的主码共同构成。我们同样来看一个例子。

在上图这个例子中,每个实体集都对应一个关系模式,其联系“选课”也对应一个关系模式,这个关系模式的主码便是两端实体集的主码。关于E-R模型转化成关系模型我们就学到这里,其实很简单,只要掌握了要领,做几个例子,就会很好的上手,就会达到掌握的目的了。

学生:学号,姓名,性别,年龄

课程:课程编号,课程名,分数,任课教师

选修:学号,课程编号

教师:教师编号,教师名,职称

参加:教师编号,项目编号

项目:项目编号,项目名,项目负责人

职工:职工号,姓名,年龄,职称,领导职工号

仓库:仓库号,面积,电话号码

工作:职工号,仓库号

库存:仓库号,零件号,库存量

零件:零件号,名称,规格,单价,描述

供应商:供应商号,姓名,地址,电话号码,账号

供应:项目号,供应商号,零件号,供应量

项目:项目号,预算,开工日期

E-R图转换为关系模型的更多相关文章

  1. 数据库——数据库设计 E-R图向关系模型的转换

    1.将下列物资管理E-R图转换为关系模式: 转换原则 ⒈  一个实体型转换为一个关系模式.关系的属性:实体型的属性关系的码:实体型的码   ⒉ 一个m:n联系转换为一个关系模式(初步,以后可能调整). ...

  2. ER图/模型转换为关系模型

    ER图中的主要成分是实体类型和联系类型,转换规则就是如何把实体类型.联系类型转换成关系模式. 1. 二元联系转换 规则1.1(实体类型的转换):将每个实体类型转换成一个关系模式,实体的属性即为关系模式 ...

  3. 数据库精华知识点总结(1)—数据库的三层模式和二级映像,E-R(实体联系图)图,关系模型

    Data base: 长期存储在计算机内,有组织的,可共享的大量数据集合.基本特征:永久存储,可共享,有一定的物理和逻辑结构. Data base manage system(DBMS):用户和os之 ...

  4. E-R图向关系模式的转换

    转自: http://hi.baidu.com/qicaiqinxian/blog/item/a8bb0bdf31ae081b63279887.html E-R图向关系模型转换时犯糊涂了,找到下面这篇 ...

  5. 数据库设计和ER模型-------之关系模型的基本概念(第二章)

    关系模型的基本术语 定义:用二维表格来表示实体集,用关键码表示实体之间联系的数据模型称为关系模型 有时也习惯称呼关系为表或表格,元组为行(Row),属性为列.关系中属性个数称为“元数”,元组个数称为“ ...

  6. 使用SQL Developer生成Oracle数据库的关系模型(ER图)

    客户要一张数据库的关系模型图,于是用SQL Developer来做. 一.SQL Developer版本 我在官网下载的最新版本(现在已经到了18.1,Oracle更新的太勤快): 2.如下图所示选择 ...

  7. 数据库系统原理——ER模型与关系模型

    原文链接: http://blog.csdn.net/haovip123/article/details/21614887 犹记得第一次看<数据库系统原理>时看天书的感觉,云里雾里:现在已 ...

  8. 基于R语言的ARIMA模型

    A IMA模型是一种著名的时间序列预测方法,主要是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型.ARIMA模型根据原序列是否平稳以及 ...

  9. 关系、关系模式、关系模型blablabla...

    好久没碰<数据库系统概论>了,最近翻了翻发现好多专业名词都忘记了, 现在有空特地记录下. 名词解释 数据:数据就是数据库中存储的基本数据,比如学生的学号.学生的班级数据库:存放数据的仓库数 ...

随机推荐

  1. LGP3726题解

    确实牛逼......这个转化我反正肯定想不到... 考虑 \(a=b\) 的情况.发现出了平局之外都是一半赢一半输.可以得到此时的答案为: \[\frac{2^{a+b}-\sum_{i=0}^{a} ...

  2. ArcMap操作随记(9)

    1.类似PS中功能的工具 [镜像要素].[比例].[延伸] 2.快速获得栅格统计参数 [获取栅格属性]工具 3.[编辑器][创建要素][构造工具] 可以右键,输入半径等参数 4.计算面的角度 [计算面 ...

  3. Kubernetes:Ingress总结(二)

    Blog:博客园 个人 参考:Ingress | Kubernetes.<Kubernetes进阶实战> Contour是Kubernetes Ingress控制器的另一款开源实现,它以高 ...

  4. java高级用法之:无所不能的java,本地方法调用实况

    目录 简介 JDK的本地方法 自定义native方法 总结 简介 相信每个程序员都有一个成为C++大师的梦想,毕竟C++程序员处于程序员鄙视链的顶端,他可以俯视任何其他语言的程序员. 但事实情况是,无 ...

  5. python Apache和php错误日志邮件报警

    # qianxiao996精心制作 #博客地址:https://blog.csdn.net/qq_36374896 #!/usr/bin/python #-*- coding: utf-8 -* im ...

  6. 重写(Override)与重载(Overload)的区别(面试题)

    概念:重写(Override):是存在子父之间的关系,子类里定义的方法与父类里定义的方法具有相同的方法名以及相同的返回值和参数类型 重写规则: 1.方法名形参列表相同: 2.访问权限,子类大于等于父类 ...

  7. loj3161「NOI2019」I 君的探险(随机化,整体二分)

    loj3161「NOI2019」I 君的探险(随机化,整体二分) loj Luogu 题解时间 对于 $ N \le 500 $ 的点,毫无疑问可以直接 $ O(n^2) $ 暴力询问解决. 考虑看起 ...

  8. 序列化与反序列化、def的介绍与快速使用、cbv源码分析、APIView与request对象分析

    今日内容概要 序列化与反序列化 def介绍和快速使用 cbv源码流程分析 drf之APIView和Request对象分析 内容详细 1.序列化和反序列化 # api接口开发 最核心最常见的一个过程就是 ...

  9. 在 java 中 wait 和 sleep 方法的不同?

    最大的不同是在等待时 wait 会释放锁,而 sleep 一直持有锁.Wait 通常被用于线 程间交互,sleep 通常被用于暂停执行. 直接了解的深入一点吧: 在 Java 中线程的状态一共被分成  ...

  10. Spring Boot 2.X 有什么新特性?与 1.X 有什么区别?

    配置变更JDK 版本升级第三方类库升级响应式 Spring 编程支持HTTP/2 支持配置属性绑定更多改进与加强-