搜索
首页数据库mysql教程E-R图到数据库表

数据库E-R图相关 2014年6月15日 17:39 E-R数据模型所采用的三个主要概念是:实体集、联系集和属性 实体集:具有相同类型及相同性质(或属性)的实体集合 属性:简单属性和符合属性;单值属性和多值属性;null属性;派生属性 联系集:联系是多个实体间的相互关联

数据库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

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
MySQL和其他SQL方言之间的语法有什么区别?MySQL和其他SQL方言之间的语法有什么区别?Apr 27, 2025 am 12:26 AM

mysqldiffersfromothersqldialectsinsyntaxforlimit,自动启动,弦乐范围,子征服和表面上分析。1)MySqluessLipslimit,whilesqlserverusestopopandoraclesrontersrontsrontsrontsronnum.2)

什么是mysql分区?什么是mysql分区?Apr 27, 2025 am 12:23 AM

MySQL分区能提升性能和简化维护。1)通过按特定标准(如日期范围)将大表分成小块,2)物理上将数据分成独立文件,3)查询时MySQL可专注于相关分区,4)查询优化器可跳过不相关分区,5)选择合适的分区策略并定期维护是关键。

您如何在MySQL中授予和撤销特权?您如何在MySQL中授予和撤销特权?Apr 27, 2025 am 12:21 AM

在MySQL中,如何授予和撤销权限?1.使用GRANT语句授予权限,如GRANTALLPRIVILEGESONdatabase_name.TO'username'@'host';2.使用REVOKE语句撤销权限,如REVOKEALLPRIVILEGESONdatabase_name.FROM'username'@'host',确保及时沟通权限变更。

说明InnoDB和Myisam存储引擎之间的差异。说明InnoDB和Myisam存储引擎之间的差异。Apr 27, 2025 am 12:20 AM

InnoDB适合需要事务支持和高并发性的应用,MyISAM适合读多写少的应用。1.InnoDB支持事务和行级锁,适用于电商和银行系统。2.MyISAM提供快速读取和索引,适合博客和内容管理系统。

MySQL中有哪些不同类型的连接?MySQL中有哪些不同类型的连接?Apr 27, 2025 am 12:13 AM

MySQL中有四种主要的JOIN类型:INNERJOIN、LEFTJOIN、RIGHTJOIN和FULLOUTERJOIN。1.INNERJOIN返回两个表中符合JOIN条件的所有行。2.LEFTJOIN返回左表中的所有行,即使右表中没有匹配的行。3.RIGHTJOIN与LEFTJOIN相反,返回右表中的所有行。4.FULLOUTERJOIN返回两个表中所有符合或不符合JOIN条件的行。

MySQL中有哪些不同的存储引擎?MySQL中有哪些不同的存储引擎?Apr 26, 2025 am 12:27 AM

mysqloffersvariousStorageengines,每个suitedfordferentusecases:1)InnodBisidealForapplicationsNeedingingAcidComplianCeanDhighConcurncurnency,supportingtransactionsancions and foreignkeys.2)myisamisbestforread-Heavy-Heavywyworks,lackingtransactionsactionsacupport.3)记忆

MySQL中有哪些常见的安全漏洞?MySQL中有哪些常见的安全漏洞?Apr 26, 2025 am 12:27 AM

MySQL中常见的安全漏洞包括SQL注入、弱密码、权限配置不当和未更新的软件。1.SQL注入可以通过使用预处理语句防止。2.弱密码可以通过强制使用强密码策略避免。3.权限配置不当可以通过定期审查和调整用户权限解决。4.未更新的软件可以通过定期检查和更新MySQL版本来修补。

您如何确定MySQL中的慢速查询?您如何确定MySQL中的慢速查询?Apr 26, 2025 am 12:15 AM

在MySQL中识别慢查询可以通过启用慢查询日志并设置阈值来实现。1.启用慢查询日志并设置阈值。2.查看和分析慢查询日志文件,使用工具如mysqldumpslow或pt-query-digest进行深入分析。3.优化慢查询可以通过索引优化、查询重写和避免使用SELECT*来实现。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中