代码改变世界

E-R图到数据库表

2017-08-05 11:57  tlnshuju  阅读(2752)  评论(0编辑  收藏  举报

数据库E-R图相关

2014615

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