数据库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. android.app.FragmentManager 与 android.support.v4.app.FragmentManager带来的若干Error

    Fragment是activity的界面中的一部分或一种行为.你能够把多个Fragment们组合到一个activity中来创建一个多面界面而且你能够在多个activity中重用一个Fragment.你 ...

  2. python字符串操作大全

    1.去空格 strip() >>> s = 'a b c d ' >>> s.strip() 'a b c d' 2.lstrip() 方法用于截掉字符串左边的空格 ...

  3. 串口通讯编程一日通3(COMMTIMEOUTS DCB整理)

    上一篇看了Overlapped IO模型后,接下来看剩下两个重要结构:  2.COMMTIMEOUTS结构 超时设置 COMMTIMEOUTS:COMMTIMEOUTS主要用于串口超时参数设置.COM ...

  4. 基于Ant Design UI框架的React项目

    概述 这款基于React开发的UI框架,界面非常简洁美观,在这篇文章中我主要为大家介绍一下如何用Ant开始搭建React项目 详细 代码下载:http://www.demodashi.com/demo ...

  5. 点滴的积累---初学Javascript

    在学习知识的路上,我们须要的不断的去接触新的知识,同一时候我们也不要不停地对自己旧的知识进行总结.近期通过<牛腩Javascript>和姜昊的<Javascript专题视频>对 ...

  6. 多语言 SEO

    https://productforums.google.com/forum/?hl=zh-CN#!topic/webmaster-zh-cn/I0MMsm737pc

  7. 用ASP.NET/C#连接Access和SQL Server数据库

    连接Access 首先看一个例子代码片断:程序代码: ------------------------------------------------------------------------- ...

  8. miniui前端绑定枚举值

    <script type="text/javascript"> var ConvertData = { DeliveryWays: function (e, cycle ...

  9. ORID方法在敏捷中的利用

    Objective: 上个迭代有哪些让你印象深刻的事情发生?你看到了什么? Reflective:哪些场景让你兴奋?哪些地方不那么顺利? Interpretive:为什么会不顺利?这些数据使你意识到了 ...

  10. Java compiler level does not match the version of the installed Java project fac

    Java compiler level does not match the version of the installed Java project fac 问题一: 问:项目图标报错,Probl ...