最近开始做数据库的大实验,其中有一条实验要求如下:

通过网络查找相关文献并参考所给资料进行需求分析,画出系统的 E-R 图,给出实体或联系的属性,标明联系的种类,并写出关系模式。

画ER图没有什么问题,但是关系模式是什么就不知道了。所以,还是有必要学习一下的。

关系模式的定义

通过google和课本上对关系模式的定义得出如下定义:

关系模式(Relation Schema)是对关系的描述,它可以形式化地表示为:R(U,D,dom,F)。

其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。

通常简记为:R(U)或R(A1,A2,…,An)其中R为关系名,U为属性名集合,A1,A2,…,An为各属性名。

有了定义,对关系模式有一个大概的认识(可以说基本上还是蒙的),那么按照实验的要求,我们要如何从ER图中的到一个关系模式呢?

ER图转关系模式

这里我会以学生管理系统中常见的几个实体关系为例,设计简单你的ER图,并做转换说明。

1对1转换关系

首先我们先从最简单的做起。这里我们将教师和课程的关系看做是1:1的关系(班主任),然后ER图如下:

通过定义,我们可以初步的到一组关系模式:

教师(性别,职工号,手机号,年龄,姓名)

班级(班级名称,班级号)

负责(职工号,班级号)

这就是一组关系模式,有人会说,负责这组关系模式好像多余呀。是的,下面我们就着手将其进行合并。

这里可以将教师和负责两个关系合并到一起,也可以选择将班级和负责合并到一起。

1.合并教师和负责

教师(性别,职工号,手机号,年龄,姓名,班级号)

班级(班级名称,班级号)

合并就是将关系负责的属性添加到教师的属性中去,然后合并重复的属性。

2.合并班级和负责

教师(性别,职工号,手机号,年龄,姓名)

班级(班级名称,班级号,职工号)

通过上面的合并,我们发现,合并后的两个关系才更像是我们最终的数据表结构。

1对n转换关系

班级和学生是1对n的关系,ER图如下:

同样的,我们有可以先得到一组独立地关系模式:

学生(学号,姓名,性别)

班级(班级名称,班级号)

包含(学号,班级号,人数)

然后将联系的关系进行合并。在1对n的关系中,需要将联系的关系添加到n的一方的关系模式中。

学生(学号,姓名,性别,班级号)

班级(班级名称,班级号)

m对n转换关系

最后看一下多对多的关系是如何转换的。首先还是先给出ER图:

学生和课程的关系是m:n的。然后得到初步的关系模型:

学生(学号,姓名,性别)

课程(课程号,课程名)

选修(学号,课程号,成绩)

按照上面的惯例,下面我们应该合并关系模型了。但是在多对多的关系下,三种关系模式是不能进行合并的。而两个实体联系的关系模式正式我们常说的中间表的结构。

理解关系模式的作用

在上面通过ER图得到关系模式和合并关系模式的过程中,我们发现关系模式其实就是对应我们的数据表结构。那么关系模式有什么用呢,以往我们不通过关系模式一样可以得到表结构。

其实是没错的,但是通过范式的学习,发现我们的关系模式更多的时候是得到最终数据表的一个分析工具。就像我们上面一样,一开始会得到一个初始的独立的关系模式,然后对关系模式做合并,得到一个更加合理的关系模式。

使用范式也是一样的,我们会从基本的关系模式出发,然后利用范式的规则,得到最终更加合理的关系模式。这个过程如果只是靠抽象的想象的话,如果实体数量少还好说的,但是随着实体数越来越多,就会显得不大现实,而且准确性也会下降。

总的来说,通过对关系模式的化简合并,才会得到我们最终的实际编程用的数据表结构,比如下面这样:

总结

通过学习,自己理解了一下关系模式。发现自己原来创建数据表的方式有点随意了。我只是做到了给出了一种数据表的解决办法,但是还不能算是数据库设计的范畴。看来自己还是处在一个程序员的位置,想要成为一个工程师,还有很长的路要走。

后面我还会继续更新对范式的相关学习。

mysql关系模式_数据库学习--关系模式相关推荐

  1. mysql数据库的三级模式_数据库的三级模式和两级映射

    数据库的三级模式和两级映射 数据库的三级模式两级映射如下图所示 三级模式 外模式:应用程序用到的部分数据的逻辑结构.一个数据库可以有多个外模式 概念模式(模式.逻辑模式):数据库管理员用到的视图,就是 ...

  2. mysql 浮点数 字节_数据库学习笔记之MySQL(02)

    目录 01. 数据表的组成 02. 数据表创建的前提 03. 数据表的创建语法规范 04. MySQL中的数据类型 05. 数值型包含哪些 06. 字符串类型 07. 日期时间类型 正文 01. 数据 ...

  3. mysql图书管理数据库的三个关系模式_数据库 考虑如下关于图书馆的关系模式,用关系代数写出查询(数据库系统概念第六版6.14)...

    贝尔梅尔娜美 2019.03.15 采纳率:60%    等级:39 已帮助:91565人 数据库系统的基本概念 数据:实际上就是描述事物的符号记录. 数据的特点:有一定的结构,有型与值之分,如整型. ...

  4. MySQL的关系模式集是什么_数据库中“关系模式”的定义是什么?

    展开全部 数据库中"关系模式"的定义是对关系的描述,其必须指出这个元组集合的结构,也就是它32313133353236313431303231363533e4b893e5b19e3 ...

  5. 数据库学习--关系模式

    最近开始做数据库的大实验,其中有一条实验要求如下: 通过网络查找相关文献并参考所给资料进行需求分析,画出系统的 E-R 图,给出实体或联系的属性,标明联系的种类,并写出关系模式. 画ER图没有什么问题 ...

  6. mysql 11关系图_用实体关系图进行数据库建模(PD11+Visio)

    用实体关系图进行数据库建模 (ccidnet阿良@仙人掌工作室 2001年08月14日) 一.概述 很可能你现在正在规划一个数据库驱动的网站:而且几乎可以肯定的是,你一定已经浏览过数据库驱动的网站.过 ...

  7. mysql关系运算_数据库关系运算

    前言 前面已经说了数据系统的概述了,关系模型是目前用得最多的数据模型,其中一个优点就是:有严格的数学理论根据.本文就是来讲解数据库中的各种关系运算的!本文不做数学概念的深入,只要理解相关的概念即可! ...

  8. mysql属于数据库三级模式_数据库系统的三级模式指的是什么

    数据库系统的三级模式指的是什么 发布时间:2020-10-26 10:11:21 来源:亿速云 阅读:52 作者:小新 小编给大家分享一下数据库系统的三级模式指的是什么,希望大家阅读完这篇文章后大所收 ...

  9. 数据库与python的关系_数据库 引用关系

    <深入解析sas:数据处理.分析优化与商业应用>一2.4 访问关系型数据库系统中的数据 本节书摘来自华章出版社<深入解析sas:数据处理.分析优化与商业应用>一书中的第2章,第 ...

最新文章

  1. PCL滤波介绍(1)
  2. 高德渲染网关Go语言重构实践
  3. 一份史上最全的深度学习资料,包括国内外顶尖学校课程以及顶会论文集
  4. 2021年春季学期-信号与系统-第十四次作业参考答案-第四小题参考答案
  5. python 加密解密_python实现AES加密解密
  6. linux who命令实现,linux下 who命令(3)(示例代码)
  7. Lucene:QueryParser
  8. go 二进制程序守护_图解 Go 程序是怎样跑起来的
  9. JAVA中多线程基础知识
  10. weblogic 解决线程阻塞
  11. 基于变长PSO的高维特征选择算法(VLPSO)概述
  12. php计算ip掩码,php进行ip地址掩码运算处理的方法
  13. Flask+SQLAlchemy+graphene+docker示例
  14. 壳聚糖载抗生素水凝胶/接枝Nogo-A抗体的温敏型壳聚糖水凝胶/巯基化壳聚糖水凝胶的制备
  15. 三星s8html查看器,三星S8应用提取|亲测S7可用 - 可直接安装
  16. 复赛后第一次正经写博客
  17. 洛谷 P4100 [HEOI2013]钙铁锌硒维生素 解题报告
  18. matlab 无穷符号,如何用matlab进行级数或数列的符号求和?matlab符号求和指令分享...
  19. 微信图文编辑器如何添加超链接?
  20. 嵌入式系统项目设计——基于LED、按键、蜂鸣器的打地鼠游戏(完整代码)

热门文章

  1. 劝学、分享---翟鸿燊(shen)老师语录
  2. 日报2019.3.25
  3. 计算机网络ipv4到ipv6,论计算机网络协议IPV4到IPV6的过渡策略
  4. goaheadlinux移植_goAhead2.5嵌入式web服务器移植
  5. HTTP RANGE DOS 工具下载
  6. 智慧工地环境监测系统助力带工地扬尘污染治理也玩出“新花样”
  7. 高中结业考试计算机试题及答案,高中计算机会考试题及答案
  8. neutron-metering解读分析
  9. MFC实现播放SWF
  10. 论文投稿指南——中文核心期刊推荐(经济管理 2)