数据库概念结构设计_数据库设计阶段分为

数据库概念结构设计_数据库设计阶段分为概念结构设计:将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程。一、概念模型在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,然后才能更改、更准确地用某一数据库管理系统实现这些需求。概念模型的主要特点:1.能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求,是现实世界的一个真是模型。2.易于理解,可以用它和不熟悉…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

概念结构设计:将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程。

一、概念模型

在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,然后才能更改、更准确地用某一数据库管理系统实现这些需求。
概念模型的主要特点:
1. 能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求,是现实世界的一个真是模型。
2. 易于理解,可以用它和不熟悉计算机的用户交换意见。用户的积极参与是数据库设计成功的关键。
3. 易于更改,当应用环境和应用要求改变时容易对概念模型修改和扩充。
4. 易于向关系、网状、层次等各种数据模型转换。
概念模型是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。描述概念模型的有力工具是E-R模型。

二、E-R模型

E-R模型是用E-R图来描述现实世界的概念模型。

1. 实体之间的联系

在现实世界中,事物内部以及事物之间是有联系的。实体内部的联系通常是指组成实体的各属性之间的联系,实体之间的联系通常是指不同实体型的实体集之间的联系。
1. 两个实体之间的联系
1)两个实体型之间的联系
两个实体型之间的联系分为:

一对一联系(1:1)

如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1:1。

一对多联系(1:n)

如果对于实体集A中的每一个实体,实体集B中有n个实体(n>1)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n。

多对多联系(m:n)

如果对于实体集A中的每一个实体,实体集B中有n个实体(n>0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m>0)与之联系,则称实体集A与实体集B具有多对多联系,记为m:n。
两个实体型间的关系如图:
实体型间关系
2. 两个以上的实体型之间的联系
一般地,两个以上的实体型也存在着一对一、一对多和多对多联系。
3. 单个实体型内的联系
同一个实体集内的各实体之间也可以存在一对一、一对多和多对多的联系。
一般地,把参与联系的实体型的数目称为联系的度。两个实体型之间的联系度为2,也称为二元联系;三个实体型之间的联系度为3,称为三元联系;N个实体型之间的联系度为N,称为N元联系。

2. E-R图

E-R图提供了表示实体型、属性和联系的方法。
1. 实体型用矩形表示,矩形框内写明实体名。
2. 属性用椭圆形,并用无向边将其与相应的实体型联系起来。
3. 联系用棱形表示,棱形框内写明联系名,并用无向边分别于有关实体型连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)。
如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来。
E-R图实例:
E-R图

三、扩展的E-R模型

E-R方法是抽象和描述现实世界的有力工具。用E-R图表示的概念模型独立于具体数据库管理系统所支持的数据模型,是各种数据模型的共同基础,因而比数据模型更一般、更抽象、更接近现实世界。
1. ISA联系
ISA联系(父类-子类联系)一个重要的性质是子类继承了父类的所有属性,当然子类也可以由自己的属性。ISA联系用三角形来表示。
ISA联系描述了对一个实体型中实体的一种分类方法。
1)分类属性
根据分析属性的值把父实体型中的实体分派到子实体型中。
2)不相交约束与可重叠约束
不相交约束描述父类中的一个实体不能同时属于多个子类中的实体集,即一个父类中的实体最多属于一个子类实体集,用ISA联系三角形符号内加一个‘X’来表示。如果父类中的一个实体能同时属于多个子类中的实体集,则称为可重叠约束,子类符号中没有叉号表示是可重叠的。
3)完备性约束
完备性约束描述父类中的一个实体是否必须是某一个子类中的实体,如果是,则叫作完全特化,否则叫作部分特化。完全特化用父类到子类的双线链接来表示,单线连接则表示部分特化。
2. 基数约束
基数约束是对实体之间一对一、一对多和多对多联系的细化。参与联系的每个实体型用基数约束来说明实体型中的任何一个实体可以在联系中出现的最少次数和最多次数。
约束用一个数对min..max表示,0 小于等于min小于等于max(其中,*代表无穷大)。min=1的约束叫作强制参与约束,即被施加基数约束的实体型中的每个实体都要参与联系;min=0的约束叫作非强制参与约束,被施加基数约束的实体型中的实体可以出现在联系中,也可以不出现在联系中。
3. Part-of联系
Part-of联系即部分联系,它表明某个实体型是另外一个实体型的一部分。它可分为两种情况,一种是整体实体如果被破坏,部分实体仍然可以独立存在,称为非独占的Part-of联系,非独占的Part-of联系可通过技术约束来表达;另一种是独占联系,即整体实体如果被破坏,部分实体不能存在,在E-R图中用弱实体类型和识别联系来表示独占联系。如果一个实体型的存在依赖于其他实体的存在,则这个实体型叫作弱实体型,反之叫强实体型。一般来说,如果不能从一个实体型的属性中找出可以作为码的属性,则这个实体型是弱实体型。

在E-R图中用双矩形来表示弱实体型,用双棱形表示识别联系。

四、UML

UML是对象管理组织(OMG)的一个标准,它不是专门针对数据建模的,而是为软件开发的所有阶段提供模型化和可视化支持的规范语言,从需求规格描述到系统完成后的测试和维护都可以用到UML。它可以用于数据建模、业务建模、对象建模、组件建模等,提供看多种类型的模型描述图。
1. 实体型:用类表示,矩形框中实体名放在上部,下面列出属性名。
2. 实体的码:在类图中在属性后面加“PK”来表示码属性。
3. 联系:用类图之间的“关联”来表示。
4. 基数约束:UML中关联类之间技术约束的概念、表示和E-R图中的技术约束类似。
5. UML中的子类:面向对象技术支持超类-子类概念,子类可以继承超类的属性,也可以有自己的属性。
UML实例图示:
UML实例

五、概念结构设计

概念结构设计的第一步就是对需求分析阶段收集到的数据进行分类、组织,确定实体、实体的属性、实体之间的联系类型,形成E-R图。

1. 实体与属性的划分原则

事实上,在现实世界中具有的应用环境常常对实体和属性已经作了自然的大体划分。
为了简化E-R图的处置,现实世界的事物能作为属性的对待的尽量作为属性对待,不过要满足:
1. 作为属性,不能再具有需要描述的性质,即属性必须是不可分的数据项,不能包含其他属性。
2. 属性不能与其他实体具有联系,即E-R图中所表示的联系是实体之间的联系。

2. E-R图的集成

E-R图的集成步骤图示:
E-R图的集成
1. 合并
解决各分E-R图之间的冲突,将分E-R图合并起来生成初步E-R图。
合理消除各E-R图中的冲突是合并E-R图的主要工作与关键所在。各子系统的E-R图之间的冲突主要有三类:
1)属性冲突:属性域冲突,即属性值的类型、取值范围或取值集合不同;属性取值单位冲突。
2)命名冲突:同名异义,即不同意义的对象在不同的局部应用中具有相同的名字;异义同名(一义多名),即同一意义的对象再不同的局部应用中具有不同的名字。
3)结构冲突:同一对象在不同应用中具有不同的抽象;同一实体在不同子系统的E-R图中所包含的属性个数和属性排列次序不完全相同;实体间的联系在不听的E-R图中为不同的类型。
2. 修改和重构
消除不必要的冗余,生成基本E-R图。所谓冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其他联系导出的联系。冗余数据和冗余联系容易破坏数据库的完整性,给数据库维护增加困难,应当予以消除。
分析方法消除冗余,即以数据字典和数据流图为依据,根据数据字典中关于数据项之间逻辑关系的说明来消冗余。

规范化理论消除冗余,具体方法可以分为
1)确定分E-R图实体之间的数据依赖。实体之间一对一、一对多、多对多的联系可以用实体码之间的函数依赖来表示。
2)求Fl的最小覆盖Gl,差集为D=Fl-Gl。
备注:并不是所有的冗余数据与冗余联系都必须加于消除,有时候为了提高效率不得不以冗余信息作为代价。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182759.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 渗透测试常用工具汇总_渗透测试实战

    渗透测试常用工具汇总_渗透测试实战目录1.Wireshark2.Metasploit3.Nmap4.Nessus5.SQLMap6.W3af1.WiresharkWireshark(前称Ethereal)是一个网络分包分析软件,是世界上使用最多的网络协议分析器。Wireshark兼容所有主要的操作系统,如Windows、Linux、macOS和Solaris。kali系统里面自带有这个软件,我们可以直接使用;或者可以在网上下载windows版本,在windows系统里使用。..

  • Ubuntu14.04安装Android SDK

    Ubuntu14.04安装Android SDK1前言做应用开发过程中,通常需要下载相应版本的的AndroidSDK,但是如果拥有了Android源码,是否还需要下载AndroidSDK呢(也即是说,源码中是否已经包含了AndroidSDK的所有内容)?本文以Android6.0.1为例进行对比分析。2下载AndroidSDK3源码prebuilts目录……

  • Python的缩进规则「建议收藏」

    Python中的缩进(Indentation)决定了代码的作用域范围。这一点和传统的c/c++有很大的不同(传统的c/c++使用花括号花括号{}符决定作用域的范围;python使用缩进空格来表示作用域的范围,相同缩进行的代码是处于同一范围)。每行代码中开头的空格数(whitespace)用于计算该行代码的缩进级别(Indentationlevel),注意一个Tab会被替换为1~8个Space(具体的空格数量,不同的编译器有不同的数量),缩进级别为0表示无缩进空格。在一个源文件不建议同时使用空格和制表缩

  • android之Widget开发详解实例三

    之前已经有过两篇写Widget的了,实例一和实例二,如果乍看这篇有难度,可以先看看前两个比较简单的.本篇完成项目是一个小的心情记录器整体效果图如下:这里我们是通过点击桌面的widget弹出记录心情的activity的,实现方法如下:Intent intentClick = new Intent(context, update.class); Pending

  • 腾讯ssl 免费证书_腾讯云ssl证书安装教程

    腾讯ssl 免费证书_腾讯云ssl证书安装教程项目收尾,闲下来捣腾捣腾微信小程序,配置request域名的时候发现需要https协议,意思就是请求服务端必须是HTTPS,当然,如果你只是自己玩一玩小程序开发,不上线,也可以通过微信开发者工具设置使用普通http请求来让自己过把瘾。大部分ssl证书都需要money,对于个人开发者成本有点高,像我这种穷屌当然是想方设法去找免费的ssl。推荐一篇博文,里面罗列了大部分免费的ssl证书认证点击打开链接…

  • 跟开涛老师学shiro — 授权

    跟开涛老师学shiro — 授权授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等)。在授权中需了解的几个关键对象:主体(Subject)、资源(Resource)、权限(Permission)、角

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号