E-R图到数据库表

数据库E-R图相关

2014年6月15日

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

时间: 2024-08-27 22:51:33

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

使用PowerDesigner创建mysql数据库表图

使用PowerDesigner 建数据库表. 一直很忙,没有时间写东西.这次搞点会声会色的,嘿嘿 此技能为项目经理必备技能. 本次主角: 1.在workspace下建立一项目: physical data model类型的 在DBMS处选择mysql5.0 2.建立表UML图: 在工具条上选择表格工具,创建出一个表来. 然后双击他,可以对其进行修改. 改名字为User_Power 用户表,建立三个字段,ID为主键: 再建立一个表:Address_Power 地址表 3.现假设业务逻辑中用户和地址

数据库表设计五大范式所解决的问题

上学时学得<数据库系统概念>,一致似懂非懂,停留在定义和证明层面.最近在做项目,认真的了解了下数据库的范式问题,只有潜意识懂得了其原理和应用场合才能较快设计出合理的表. 首先,明确概念如下: 主码 也就是主键 候选码 若关系中的某一属性组的值能唯一的标识一个元组,而其任何真子集都不能再标识,则称该属性组为候选码.候选码不唯一,主码是其中一个而已. 主属性 包含在任一候选关键字中的属性称主属性 其次,也是本文重头戏,结合例子,讲一下各大范式对前者的改进和应用场景. 范式在现实中解决的问题 1.数

20170105数据库表设计知识点

20170105数据库表设计知识点 ------指导老师    星哥 1.PHP(MYSQL)擅长单表操作,不要做过多无谓的连接查询 2.表字段名不要使用大驼峰命名方式,最好采用下划线,命名要和团队习惯一致,通俗易懂. 3.表级.字段都要有注释 4.MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好.甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成.另外,MyISAM 对于 SELECT COUNT(*) 这类的计算

如何用Ajax实现地址栏省市级联动(数据库表数据源)

HTML: 1 <tr> 2 <th> 3 <label for="textfield"><span class="red">*</span>收货地址:</label> 4 </th> 5 <td> 6 <select name="data[province]" id="province2" onchange="ge

PowerDesigner生成数据库表和逆向生成表结构(MySQL数据库)

一.Download Connector/ODBC下载ODBC驱动,地址:https://dev.mysql.com/downloads/connector/odbc/, 需要注意:PowerDesigner安装的多少位就下载多少位的,一般是32位,建议下载.msi文件直接安装. 二.安装完成后点击powerdesigner的Database--->Configure Connections...--->添加数据源配置,如下图: 三.PDM模型生成数据库sql文件,点击powerdesigne

R语言链接数据库

转载自:http://blog.csdn.net/hongweigg/article/details/49779943 R语言连接数据库常用的方法有2种: 1.使用R数据库接口 连接MySQL,使用RMySQL包,使用前RMySQL包要先安装. library(RMySQL) 连接方式有2种: (1)使用dbConnectconn <- dbConnect(MySQL(), dbname = "rmysql", username="rmysql", passw

mysql 数据库表错误 修复 总结

mysql 数据库坏表修复 萝卜白菜,各有所爱,能干活.能修复表才是王道!!! 修复之前谨记:先备份数据库 (备份完成后再进行以下修复操作) 可以mysqldump -A  > all.sql   进行全库备份  (mysqldump导出错误的时候可以省略错误的表进行导出其他的数据添加选项   --ignore-table=table_name  )  也可以进入到/usr/local/shell/ 执行  mysql_backup.sh进行备份数据库  以上两种方式都不可以备份 可以进入到/d

ORM 实现数据库表的增删改查

这次通过反射技术来实现一下数据库表的增删改查对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping) 注:引用时约束了以下几点: 数据库表的表名与类的类名一致 数据库字段名和类字段名一致 自增字段的访问权限为private其余字段都为public 注:如果用的是MySql数据库,有提供好的MySqlhelper非MySql数据库可以参考我写好的SqlHelper SqlHelper参考位置:http://www.cnblogs.c

数据库表的创建、管理和数据操作(实验一),数据库创建

数据库表的创建.管理和数据操作(实验一),数据库创建 今天我们就以实验的形式对表的创建.管理和数据操作进行学习,上课吧. [实验目的]:了解SQL语言的使用,进一步理解关系运算,巩固数据库的基础知识.[实验要求]:利用SQL语言进行数据库表的各种操作:1.数据库表的创建.修改和删除操作.2.向表中进行数据的插入.删除和修改操作.[实验内容]1. 利用数据定义语句在实验一创建的stu_DB库中建立学生管理系统的三个表:Student.Course.SC.2.利用INSERT.UPDATE和DELE