数据库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. 算法笔记_044:表达式计算求值(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输出格式 输出这个表达式的 ...

  2. 31、Arrays数组排序(续)——自定义排序

    自定义的类要按照一定的方式进行排序,比如一个Person类要按照年龄进行从小到大排序,比如一个Student类要按照成绩进行由高到低排序. 这里我们采用两种方式,一种是使用Comparable接口:让 ...

  3. Android软件开发之EditText 详解

    EditText在API中的结构 java.lang.Objectandroid.view.Viewandroid.widget.TextView        android.widget.Edit ...

  4. 用户 'NT AUTHORITY\IUSR' 登录失败

    今天在用VS20012发布XAF ASP.NET的程序时,在iis 调用SQLSERVER Express2008数据库时,总是出现错误“用户 'NT AUTHORITY\IUSR' 登录失败”,后来 ...

  5. RFID编码

    信号编码系统包括信源编码和信道编码两大类,器作用是把要传输的信息尽可能的与传输信道相匹配,并提供对信息的某种保护以防止信息受到干扰.信源编码与信源译码的目的是提高信息传输的有效性以及完成模数转换等:信 ...

  6. Altium PCB布局时快速摆放元件的技巧

    http://www.openedv.com/posts/list/45238.htm pcb窗口:工具--->交叉选择模式

  7. Java 枚举(enum) 的常见用法和开发规范

    JDK1.5引入了新的类型——枚举.在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便. 用法一:常量 在JDK1.5 之前,我们定义常量都是: public static final ...

  8. C while循环的自增和自减

    自增和自减 --i 是先执行i=i-1,然后再使用i的值, 这时的i 值就是表达式--i的值.i-- 是先使用i的值作为表达式i--的值,然后,执行i=i-1操作. 实例一: #include &qu ...

  9. eclipse中maven插件,改变默认仓库位置

    一.eclipse中maven默认仓库是当前用户下.m2/repository,需改变默认路径按照下面步骤. 步骤一:安装maven 下载:http://maven.apache.org/ 配置mav ...

  10. Java运行Python脚本的几种方式

    由于在项目需要执行Python,找寻相关资料,总结出以下几种方式: 直接执行Python脚本代码 引用 org.python包 PythonInterpreter interpreter = new ...