概念结构设计所得的E-R模型是对用户需求的一种抽象的表达形式,它独立于任何一种具体的数据模型,因而也不能为任何一个具体的DBMS所支持。为了能够建立起最终的物理系统,还需要将概念结构进一步转化为某一DBMS所支持的数据模型,然后根据逻辑设计的准则、数据的语义约束、规范化理论等对数据模型进行适当的调整和优化,形成合理的全局逻辑结构,并设计出用户子模式。这就是数据库逻辑设计所要完成的任务。

数据库逻辑结构的设计分为两个步骤:首先将概念设计所得的E-R图转换为关系模型;然后对关系模型进行优化,如图1.14所示。

图1.14  逻辑结构设计的过程

关系模型是由一组关系(二维表)的结合,而E-R模型则是由实体、实体的属性、实体间的关系三个要素组成。所以要将E-R模型转换为关系模型,就是将实体、属性和联系都要转换为相应的关系模型。下面具体介绍转换的规则。

1. 一个实体类型转换为一个关系模型

将每种实体类型转换为一个关系,实体的属性就是关系的属性,实体的关键字就是关系的关键字。例如,可将“学生”实体转换为一个关系模型,如图1.15所示。其中,带下划线的属性为主属性,该主属性为关系模型外键。

图1.15  一个实体类型转换为一个关系模型

2. 一对一关系(1:1)的转换

一对一关系有以下两种转换方式:

转换为一个独立的关系模型。联系名为关系模型名,与该联系相连的两个实体的关键字及联系本身的属性为关系模型的属性,其中每个实体的关键字均是该关系模型的候选键。

与任意一端的关系模型合并。可将相关的两个实体分别转换为两个关系,并在任意一个关系的属性中加入另一个关系的主关键字。

例如,若某工厂的每个仓库只配备了一名管理员,那么仓库实体与管理员实体间便为1:1关系。根据以上介绍的原则,可以进行如图1.16所示的变换。

图1.16  1:1关系的转换

在实际设计中究竟采用哪种方案可视具体的应用而定。如果经常要在查询仓库关系的同时查询此仓库管理员的信息,就可选用前一种关系模型,以减少查询时的连接操作。反之,如果在查询管理员时要频繁查询仓库信息,则选用后一种关系模型。总之,在模型转换出现较多方案时,效率是重要的取舍因素。

3. 一对多关系(1:n)的转换

一对多关系也有两种转换方式:

将1:n关系转换为一个独立的关系模型。联系名为关系模型名,与该联系相连的各实体的关键字及联系本身的属性为关系模型的属性,关系模型的关键字为n端实体的关键字。

将1:n联系与n端关系合并。1端的关键字及联系的属性并入n端的关系模型

即可。

在图1.17中,实体“专业”和“学生”之间的联系为1:n,则两者可使用以上的原则进行关系模型的转换。

图1.17  1:n 联系的转换

4. 多对多关系(m:n)的转换

关系模型名为关系名,与该关系相连的各实体的关键字及关系本身的属性为关系模型的属性,关系模型的关键字为关系中各实体关键字的并集。

例如,在学校中,一名学生可以选修多门课程,一门课程也可为多名学生选修,则实体“学生”与“课程”之间满足多对多的关系,其转换方法如图1.18所示。

图1.18  m:n关系的转换

mysql逻辑结构设计_数据库设计:逻辑结构设计相关推荐

  1. mysql的设计模式_数据库设计中使用设计模式

    一.引言 现代的企业开发中,越来越多地引入了多层架构设计模式,即使是小型的企业信息系统也逐渐向多层架构发展,以满足系统的可伸缩性以及可维护性.目前企业开发的平台占主导地位的是 J2EE 和 .NET ...

  2. mysql 备用字段_数据库设计之备用字段

    备用字段,也称 预留字段 . 相关描述: 在数据表中,不仅设计了当前所需要的字段,而且还在其中留出几个字段作为备用. 举例说明,我设计了一个人员表(Person),其中已经添加了各种必要的字段,包括姓 ...

  3. 微博相互关注互粉mysql表实现_数据库设计实现用户关注、被关注、互粉

    关系型数据库虽然存储用户的关系很简单,但是要求出用户关注被关注和互粉这种这块特别的麻烦,特别是用户A的粉丝与用户B的粉丝之间的关系,或者用户A的关注者与用户A自己的粉丝直接的关系等. 下面是一个要求: ...

  4. 数据库设计_数据库设计(一)分析及逻辑设计

    ​作为一个后端开发者,数据库设计是我们避不开的课题,不管是面试的时候,还是在真实工作的情境下,我们的工作不仅仅是将代码开发出来,根据开发的项目,设计出支撑项目的数据库,也是一个合格的开发者所应该具备的 ...

  5. 数据库设计-逻辑设计

    数据库设计 逻辑设计: 什么是逻辑设计? 独立于具体的物理数据库之外,抽象出的数据库通用的设计模型. 逻辑设计是做什么的? 将需求分析转化为数据库的逻辑模型. 通过常用的数据库设计方法,如ER图对逻辑 ...

  6. 数据库设计-逻辑设计 1

    数据库设计 逻辑设计: 什么是逻辑设计? 独立于具体的物理数据库之外,抽象出的数据库通用的设计模型. 逻辑设计是做什么的? 将需求分析转化为数据库的逻辑模型. 通过常用的数据库设计方法,如ER图对逻辑 ...

  7. mysql 逻辑备份 物理备份_数据库的逻辑备份和物理备份--非RMAN

    数据库的逻辑备份和物理备份--非RMAN,不用借助其他工具,只要归档日志和物理备份就可以实现的备份 数据库的备份和恢复 常规而且重要,恢复得到理想状态 逻辑备份 利用EXP备份,从数据库提取写入操作系 ...

  8. mysql表结构设计_数据库表结构设计

    1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对 应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证 ...

  9. mysql的数据结构设计原则,数据库设计的重要性与原则

    随着工作经验的积累,我日益感觉到,对一名程序员来说,拥有良好的数据库设计能力是很重要的,甚至是最重要的. 程序员界有一句著名的话 Talk is cheap, show me the code 把这句 ...

最新文章

  1. 比特币布道者Roger Ver是如何被污蔑成骗子的
  2. linux lz4 lzo,Linux六大压缩算法横评:Ubuntu 19.10最终选择LZ4
  3. Spark:获取dataframe某列最大值
  4. 概率论-2.2 随机变量的数学期望(重点:随机变量X的期望)
  5. Hive的基本操作-数据库的创建和删除
  6. linux多行变一列,多行转为一列
  7. C++对象产生和销毁的顺序
  8. Git常见问题及报错
  9. 每个叶子节点(nil)是黑色。_填充每个节点的下一个右侧节点指针
  10. 2013年C++A:神奇的算式
  11. Android RatingBar使用Kotlin
  12. Asp.Net MVC控制器、控制器动作和动作结果
  13. Java实现的各种排序算法
  14. DSP28335加密问题
  15. 星起航跨境:美国市场8月份在线价格同比上涨0.4%
  16. 哪个选项是python语言_关于Python语言的描述,错误的选项是______。???????????????????????????????????????...
  17. android动态壁纸的制作教程,android – 动态壁纸教程
  18. MeterSphere案例分享丨88完美邮箱全面提升产品质量的落地指南
  19. 干货,分享kali安装arpspoof,以及常见错误问题,结尾附上局域网arp断网攻击
  20. ARP渗透与攻防(五)之Ettercap劫持用户流量

热门文章

  1. 一个案例两种分析方法告诉你数据涨跌异动该如何处理?附送涨跌问题常见五种假设
  2. 厦理OJ——1003:第三届程序设计大赛 让气球飞起来
  3. Nmap Network Scanning扫描版
  4. 一程序员被网恋女友诈骗1.8万,警方调查“女友”后发现竟是...
  5. 访问认证(三):Bearer
  6. 计算机微格教学心得体会,微格教学心得体会6篇_微格教学体会报告
  7. mysql中id是什么_数据库中的id是什么
  8. 数字化办公,就选流畅、清晰的华为云桌面
  9. 力扣977 双指针解决
  10. python 如何计算平方、次方?平方根、方根?(math.pow()、math.sqrt())