mysql逻辑结构设计_数据库设计:逻辑结构设计

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

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

05112db96c070f602f9eb7f220cb2811.gif

图1.14  逻辑结构设计的过程

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

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

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

079851fd86c8fb9804b6929f703ec78e.gif

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

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

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

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

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

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

e51db5cbc87dde8f8f36bf62330439a5.gif

图1.16  1:1关系的转换

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

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

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

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

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

即可。

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

8f2908a659e4eb5ec4324065a589cd2b.gif

图1.17  1:n 联系的转换

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

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

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

10ded5bb8bf4e8879092473cbf379585.gif

图1.18  m:n关系的转换

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

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

相关文章

.NET6之MiniAPI(二十五):Dapper

注:如果你使用Dapper一段时间了,这篇你可以跳过去了。在第十二篇中,我们聊过官方的ORM——EntityFramework,它可以把SQL细节都隐藏,这对于一些标准化的关系数据库项目非常便捷。今天,介绍另外一个流行的ORM…

LeetCode Implement Queue using Stacks (数据结构)

题意: 用栈来实现队列。 思路: 一个栈是不够的,至少要两个。 (1)插入。永远只插入到stack1中(插到栈顶)。 (2)弹出。如果stack2不为空,直接弹出stack2的栈顶&…

直角三角形知道两边求角度_每日一讲:解直角三角形(3.21)

考点一、直角三角形的性质 1、直角三角形的两个锐角互余:可表示如下:∠C90∠A∠B902、在直角三角形中,30角所对的直角边等于斜边的一半。3、直角三角形斜边上的中线等于斜边的一半4、勾股定理: 如果直角三角形的两直角边长分别为…

Blazor University (4)组件 — 单向绑定

原文链接:https://blazor-university.com/components/one-way-binding/单向绑定源代码[1]此时我们在页面内显示了一个组件,但内容是静态的。我们真正想要的是能够动态输出内容。如果我们更改 /Components/MyFirstComponent.razor 的内容,我们…

Java Web项目开发流程

2019独角兽企业重金招聘Python工程师标准>>> 1.Web项目开发流程图解 2.Web项目开发的细节(转载) 任何一个项目或者系统开发之前都需要定制一个开发约定和规则,这样有利于项目的整体风格统一、代码维护和扩展。由于Web项目开发的分…

OpenGL中shader使用

引自:http://blog.csdn.net/wl_soft50/article/details/7916720 http://blog.sina.com.cn/s/blog_923fdd9b0102vbe0.html 与OpenGL ES1.x渲染管线相比,OpenGL ES 2.0渲染管线中“顶点着色器”取代了OpenGL ES 1.x渲染管线中的“变换和光照”;…

贪心算法之最短路径问题(Dijkstra算法)

1、问题 一个求单源最短路径的问题。给定有向带权图 G =(V, E ), 其中每条边的权是非负实数。此外,给定 V 中的一个顶点, 称为源点。现在要计算从源到所有其他各顶点的最短路径长 度,这里路径长度指路上各边的权之和。 2、分析 3、代码实现 1、普通C++实现 #include &l…

Centos实现svn本地认证apache认证

本文系统:Centos6.5_x64 本地lamp环境 ip:192.168.184.129一、搭建svn,实现svn方式访问、本地用户认证二、实现http方式访问、apache本地文件认证subversion目录说明:*dav目录:是提供apache与mod_dav_svn使用的目录,让…

ASP.NET Core 6.0对热重载的支持

.NET 热重载技术支持将代码更改(包括对样式表的更改)实时应用到正在运行的程序中,不需要重启应用,也不会丢失应用状态。一、整体介绍目前 ASP.NET Core 6.0 项目都支持热重载。在以下情况下支持应用的热重载:1. 仅运行…

vscode搜索文件_VS Code 新图标来临 —— 侧边栏、文件管理器、搜索、调试等区域的图标迎来全新设计...

今天(北京时间 2019 年 7 月 9 日),微软 Visual Studio Code 团队的高级设计师 Miguel Solorio 在 Twitter 上宣布了全新的图标已经来到了 VS Code Insiders 版本!这意味着,全新的图标将会在下个月发布的 VS Code 1.37 正式版中出现。此次图标…

[活动 3.30]MAUI 跨平台应用开发实战

点击上方蓝字关注我们(本文阅读时间:4 分钟)活动介绍▌MAUI 跨平台应用开发实战前端应用开发往往需要面对 iOS、Android、Windows 等多平台开发的问题。如能用一种开发工具进行多平台的开发,可以跨平台共享 UI 布局和设计&#xf…

python爬虫企业级技术点_Python爬虫必备技术点(一)

爬虫必备技术面向具有Python基础的Python爬虫爱好者,urllib和requests两个库在实际的项目中应用也非常广泛,不仅用于爬虫技术也可以应用在API接口调用方面。如果需要相关的案例可以加我QQ(610039018),另外我在B站上已发布了相关的爬虫视频(ht…

Citrix桌面及应用虚拟化系列之二:XenServer补丁

安装好XenServer之后,可以找一台管理机器(目前主流系统都支持)安装XenCenter,通过XenCenter来实现对XenServer的管理。安装XenCenter: 安装.NET Framework3.5 然后可以下载安装中文版的XenCenter,下载地址&#xff1…

OutLook2016修改注册表迁移.ost文件数据

Outlook2016默认只有一次设置存放OST文件路径的机会,是在第一创建帐号的向导上有个其他设置。如果关闭这个向导,在打开就不能修改路径了。按照这样思路,我们先关闭Outlook和Skype(新版共用一个数据库文件),…

委托原来如此简单

什么是委托?委托是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。委托特别用于实现事件和回调方法!使用委托:public delegate void MyDelegateDemo();private void HelloWorld(){Console.WriteLine("Hello World");}public …

http协议--笔记

HTTP协议的缺点:1.通信使用明文(不加密),内容可能会被窃听2.不验证通信方的身份,因此有可能遭遇伪装3.无法证明报文的完整性,所以有可能已遭篡改 防止窃听保护信息的几种对策:加密技术通信的加密…

sublime mysql插件_开发者最常用的8款Sublime text 3插件

Sublime Text作为一个尽为人知的代码编辑器,其优点不用赘述。界面整洁美观、文本功能强大,且运行速度极快,非常适合编写代码,写文章做笔记。Sublime Text还支持Mac、Windows和Linux各大平台,方便用户使用。种类繁多、功…

.NET Nancy 详解(三) Respone 和 ViewEngine

我们在ASP.NET MVC中可以返回各种类型的ActionResult(以下图片来自于园友--待补。。) 在Nancy 中本着简单粗暴的原则,使用方式略有不同。这期我们使用的版本是Nancy的第一个tag version 0.0.2.0。 public MainModule(IRouteCacheProvider routeCacheProvider){Get[&…

javascript中Date对象的初始化方法

为什么80%的码农都做不了架构师?>>> 在前端代码中难免会涉及到时间的操作,如何构造一个Date对象呢?javascript为我们提供如下几种方式: new Date("month dd,yyyy hh:mm:ss");new Date("month dd,yyyy&…