数据库E-R图相关

17:39

E-R数据模型所採用的三个主要概念是:实体集、联系集和属性

实体集:具有同样类型及同样性质(或属性)的实体集合

属性:简单属性和符合属性;单值属性和多值属性;null属性;派生属性

联系集:联系是多个实体间的相互关联。联系集是同类联系的集合。

eg:假设E1,E2,…。En为n个实体集,那么联系集R是{(e1,e2,…,en)|e1属于E1,e2属于E2,…en属于En}的一个子集,而(e1,e2,…,en)是一个联系。

屏幕剪辑的捕获时间:2014/6/15 18:14

码:给定实体集中的实体或给定联系集中的联系怎样相互差别

实体集:

超码:一个或多个属性的集合,这些属性的组合能够使我们在一个实体集中唯一地标识一个实体。(可能有冗余属性)

候选码:最小超码(该超码的随意真子集都不能成为超码)就是候选码。

候选码能够有多个。

主码:被数据设计者选中的,用来在同一实体集中区分不同实体的候选码。

实体集中的随意两个实体都不同意同一时候在码属性上具有同样的值。

联系集:(超码,主码与联系集的属性无关)

超码:各个实体的主码的并集就是联系集的超码。

主码:依赖于联系集映射的基数(一对多等)。对于多对多情况,由两张表的主码共同组成。对于一对多的情况,由多的一方的主码组成;对于一对一情况。当中不论什么一张表的主码均能够做联系集的主码。

映射的基数:一对一;一对多。多对一。多对多

A和B是实体集

一对一:A中的一个实体至多同B中的一个实体相联系。B中的一个实体也至多同A中的一个实体

一对多:A中的一个实体能够同B中的随意数目的实体相联系,B中的一个实体至多同A中的一个实体相联系

多对多:A中的一个实体能够同B中随意数目的实体相联系。B中的一个实体也能够同A中随意数目的实体相联系。

联系也可能具有描写叙述性属性,差别于联系包括的实体的属性

用实体集还是用属性:主要差别依赖于被建模的现实世界事实的结构。以及所讨论的属性的相关语义

用实体集还是用联系集:当描写叙述发生在实体间的行为时採用联系集。这一方法在决定将某些属性表述为联系时是否会更确切时也非常实用

联系的基数比例可能影响联系属性所处的位置。

一对一或一对多联系集的属性能够放到參与的实体集之中,而不是放到联系集中。一对多联系的属性能够放到联系中“多”的一方的实体集中。而对一对一的联系集而言,联系的属性能够放到參与联系的不论什么一个实体集中。

详细设计时将描写叙述性属性作为联系的属性还是实体的属性这一决定应该反映所模拟的事实的特点。设计者能够选择保留access-date作为depositor的属性,用以显示地表明訪问发生在实体集customer和account的交互点上。

多对多的情况下。当一个属性是由參与的实体集联合确定而不是由单独的某个实体集确定时,该属性就必须放到多对多联系集中。

依赖、所有參与、部分參与

存在依赖:贷款与还款,一条贷款数据可能相应多条还款数据。还款依赖于贷款。

所有參与:实体所有參与到某个联系集中。

还款数据实体所有參与到“贷款还款”关系中,所有还款都与某个贷款有联系。

部分參与:实体部分參与到某个联系集中。客户数据实体部分參与到“客户贷款”关系中,不是全部客户都有贷款。

E-R图:能够表示数据库的全局逻辑结构,简单、清晰

矩形:实体集。

椭圆:属性。

菱形:联系集。

线段:将属性连接到实体集或将实体连接到联系集。

双椭圆:表示多值属性。

虚椭圆:表示派生属性。

双线:表示一个实体所有參与到联系集中。

没箭头的直线:多对多

有箭头的直线:箭头指向1的一边

派生属性:在数据库中,一个实体包括多个属性。那么能够从其它属性中得来的属性就叫做派生属性。比如:“学生”实体中有“生日”和“年龄”等属性。从“生日”能够计算出“年龄”属性的值,“年龄”属性就是派生属性。

多值属性:比如员工的亲戚,能够有多个。设计数据库表的时候要单独起一张表。

屏幕剪辑的捕获时间:2014/6/18 19:30

主码包括的属性下面划线表明。

弱实体集:实体集的属性都不足以形成主码。这种实体集称作弱实体集。

弱实体集用双边框的矩形表示,相应的标志性联系以双边框的菱形表示。

弱实体没有主码,可是有分辨符,用虚下划线标明

弱实体集的主码:由该弱实体集所依赖的强实体集的主码和该弱实体集的分辨符共同组成。

假设弱实体集仅仅參与标志性联系,而其属性不多,那么在建模时将其表述为一个属性更恰当。

相反地,假设弱实体集參与到标识性联系以为的联系中,或者其属性较多,则建模时将其表述为弱实体集更恰当。

特殊化和概括我们都能够用上面三角形构建来表示。属性继承也是针对特殊化和概括而言的。

聚集:联系被当做实体对待

屏幕剪辑的捕获时间:2014/6/18 17:42

设计数据库的E-R模式

屏幕剪辑的捕获时间:2014/6/18 20:15

将E-R模式转换为表

用表来表示强实体集:

用表来表示弱实体集:

弱实体集属性加所依赖的强实体集的主码

用表表示联系集:

弱实体集和强实体集关联的联系集的表是冗余的

多对一的合并:实体A和实体B以及多对一联系集AB,假设A对B有依赖,则仅仅建立两个表,A中多一个和B主键属性。(多对一,两张表,多的一方包括外键。多对多,三张表,关系表+两个实体表)

用表来表示多值属性:

对于一个多值属性M,必须创建新表T,当中有一列C与M相应,T中其余列相应于以M为多值属性的实体集或联系集的主码。比如员工的亲属。多行。

用表来表示概括:

1.为高层实体集创建一个表,同一时候为每一个底层实体集创建一个表。

底层实体集中包含相应于底层实体集的各属性的列,另外,也包含高层实体集主码的全部属性列。(图2-15能够建立相应6个表)

2.假设概括是不相交且所有的——即假设两个低层实体集直接隶属于同一高层实体集,那么就不会有实体同一时候属于这两个低层实体集。同一时候。高层实体集的不论什么实体也必定会是某个低层实体集的成员。

此时。可採用还有一种表示方法:不为高层实体集创建不论什么表。仅仅为每一个低层实体集创建一个表,表中包含相应于低层实体集各属性的列和相应于高层实体集各属性的列。(图2-15能够建立相应4个表)

用来表示聚集:

屏幕剪辑的捕获时间: 2014/6/18 20:03

E-R图到数据库表的更多相关文章

  1. 功能模块图、业务流程图、处理流程图、ER图,数据库表图(概念模型和物理模型)画法

    如果你能使用计算机规范画出以下几种图,那么恭喜你,你在我这里被封为学霸了,我膜拜ing-- 我作为前端开发与产品经理打交道已有5-6年时间,产品经理画的业务流程图我看过很多.于是百度搜+凭以往经验脑补 ...

  2. 使用PowerDesigner创建mysql数据库表图

    使用PowerDesigner 建数据库表. 一直很忙,没有时间写东西.这次搞点会声会色的,嘿嘿 此技能为项目经理必备技能. 本次主角: 1.在workspace下建立一项目: physical da ...

  3. SQL分类之DDL:操作数据库表

    DDL:操作数据库表 1.操作数据库:CRUD 1.C(Create):创建 创建数据库: create database 数据库名称 创建数据库,判断不存在,再创建: create database ...

  4. 对于多个数据库表对应一个Model问题的思考

    最近做项目遇到一个场景,就是客户要求为其下属的每一个分支机构建一个表存储相关数据,而这些表的结构都是一样的,只是分属于不同的机构.这个问题抽象一下就是多个数据库表对应一个Model(或者叫实体类).有 ...

  5. C# .Net :Excel NPOI导入导出操作教程之将Excel文件读取并写到数据库表,示例分享

    using (FileStream fileReader = File.OpenRead(@"C:\Users\Administrator\Desktop\112.xls"))   ...

  6. 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

      先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面 ...

  7. 为什么要用hibernate 与基于数据库表结构的项目开发

    最近开始学习hibernate,其实并不知道要学习什么,有什么用.后来问了一下同事,他就说快捷方便简单,很多事情不用自己做他会帮你做好,但是我觉得不应该是这样的,于是我就去搜了一下,就搜到了一篇帖子, ...

  8. 千万级SQL Server数据库表分区的实现

    千万级SQL Server数据库表分区的实现 2010-09-10 13:37 佚名 数据库 字号:T | T 一般在千万级的数据压力下,分区是一种比较好的提升性能方法.本文将介绍SQL Server ...

  9. 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

    摘自:http://blog.csdn.net/mazhaojuan/article/details/8592015 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来 ...

随机推荐

  1. GO!自制一款【不丑】的名片

    大概每一个人都有自己的名片.也见过不少名片. 我敢打赌,你常常认为很多名片"不咋地".尽管不是全部人都具备一定的审美眼光,但实际上每一个人都具备较高的"审丑"眼 ...

  2. vb 获取打印机名称

    Const HKLM = &H80000002 '定义根键常数 '其他常用根键 Const HKCR = &H80000000 , Const HKCU = &H8000000 ...

  3. Set 和 WeakSet 数据结构

    Set 和 WeakSet 数据结构是ES6新增. 它与数组非常相似,但是Set数据结构的成员都是唯一的. 特别说明:Set 中只能添加一个NaN 一.Set 数据结构: var set = new ...

  4. [Elasticsearch] 向已存在的索引中加入自己定义filter/analyzer

    问题描写叙述 随着应用的不断升级,索引中的类型也会越来越多,新添加的类型中势必会使用到一些自己定义的Analyzer.可是通过_settings端点的更新API不能直接在已经存在的索引上使用. 在se ...

  5. 如何连接oracle,mysql, SQL Server数据库(Java版)

    先添加上连接oracle,MySQL的驱动路径和数据库连接URL: MySQL: final String DBDRIVER = "org.gjt.mm.mysql.Driver" ...

  6. QueryRunner 结果处理器

    package cn.itcast.dbutil; import java.sql.SQLException; import java.util.List; import java.util.Map; ...

  7. JS和JSP的差别

    近期非常多同学在纠结于名词缩写之间的相似性.因此本人也来写一篇,讲讲JS和JSP的差别. SUN首先发展出SERVLET,其功能比較强劲,体系设计也非常先进,仅仅是,它输出HTML语句还是採用了老的C ...

  8. Python 列表 list() 方法

    描述 Python 列表 list() 方法用于将可迭代对象(字符串.列表.元祖.字典)转换为列表. 注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中. ...

  9. SQL server中的parsename详解

    1.SQL server中如何拆分ip地址 比如有一个ip地址是 192.168.0.8 2.再或者,如何拆分一个包装比例,比如1:5:3 用parsename方法即可以实现: select pars ...

  10. js--在页面元素上(移动到或获取焦点)、鼠标离开(或失去焦点)

    1.onfocus() 和 onblur() 是一对相反的事件 但是他们只支持一部分标签 W3C关于onblur的描述:http://www.w3school.com.cn/jsref/event_o ...