数据库知识总结之ER图的设计

转眼就到4月份了,眼看春天的脚步近了,我也得鼓足干劲,这个月少说也得写个6篇文章啦!最近在忙考试和各种实验,题目也好久没有做了,这周要抓紧啊,不然又要且行且珍惜了。废话不多说,回到今天的主题—ER图的设计。

这种东西,还是先从具体题目入手吧!我先罗列几道题目,这几道题目都是精挑细选的好题目,并且难度也是由易到难,最后我再把知识点总结!

一. 为下面场景设计ER图:

创建一个数据库保存美术馆需要维护的信息。美术馆需要保存的信息包括以下几方面:

对于艺术家(artist):姓名(假设是唯一的),出生地(birthplaces),年龄(age),艺术风格(style of art)

对于每一件作品(artwork):创作者(artist),创作时间(the year it was made),名称(title,唯一的),类型(type of art,例如绘画、摄影、雕塑……),报价(its asking price)

每一件艺术品需要被归属到一个或多个组(group)中,例如肖像、静物等等。

最后美术馆也需要保存顾客(customer)的信息,包括客户id,地址,以及在美术馆支出的总金额,以及喜爱的艺术家和喜爱的艺术类型(group of art)。


我手写的答案如图所示:



二.某银行数据库的需求如下,请画出ER图。

1、银行有多个支行。每个支行位于某个城市,由唯一的名字标识。银行监控每个支行的资产。

2、银行的客户通过customer_id值来标识,银行存储每个客户的姓名及其居住的街道和城市。客户可以有账号并且可以贷款。客户可能和某个银行员工发生联系,该员工作为该客户的贷款负责人或私人助理。

3、银行员工通过其employee_id 值来标识。银行的管理机构存储每个员工的姓名,电话号码,亲属姓名及其经理的employee_id 号码。银行还记录员工入职的日期。

4、银行提供两类账户(支票账户和储蓄存款账户)。每个账户可以由两个或两个以上的客户拥有,一个客户也可以拥有两个或两个以上的账户。每个账户被赋予唯一的账户号。银行记录每个账户的的余额以及每个账户的拥有者访问该账户的最近日期。另外,每个储蓄存款账户有其利率,每个支票账户有其透支额。

5、每笔贷款由某个支行发放,能被一个或多个客户所共有。一笔贷款用一个唯一的贷款号标识。银行需要知道每笔贷款的所贷金额和每次还款的情况。每笔还款均有一个还款号,但是该号码并不是全局唯一的,即它只能唯一的标识对于某笔贷款的还款项,而不能唯一的标识银行的所有贷款中的某个特定的还款。对于每次还款需要记载其日期和金额。



上述两道题,都是比较经典的题目,现在我就总结一下数据库的设计——ER模型图、

ER图可以被自动地转换为数据库模式 。四个要点:实体集合(entity set)、属性(attributes) 、联系(relationship) 、约束(constraints)。

1.实体:所有同一个实体集合中的实体应该有相同的属性集合(attributes set).  
每一个实体集合有一个键(key).  
每一个属性有一个值域(domain).    

2.联系本身也可以拥有属性

3.角色 
 在表示联系的边上标注角色(相同实体集合不同出现时所担任的语义) 

4.全部参与联系(total)  局部参与联系(partial) 
 假设R 是A、B 间的联系集合,A全部参与R 当且仅当每个A中的实体必须至少参加R中的一个联系,否则A部分参与.B 类似 

5.连接实体集合同联系集合的线
有箭头:one(one-one, or one-m
无箭头:many 
双线:全部参与 
单线:部分参与 

6.指明每个实体参与联系的次数 
利用“ 最小... 最大” 映射基数的概念描述实体参与联系的次数,用“ l... h” 表示 
 l是最小基数,h 是最大基数 
 最小值1 表示每个实体至少参与一个联系 
 最大值1 表示每个实体最多参与一个联系 
 最大值为* 表示没有限制 

7.一个实体集合中具有特殊属性的一部分
实体集合.如:products中的software products和educational products. 
 标有isa的三角号表示: 
父类连接顶点 
子类连接对面的边 

8.E 是一个弱实体集合,如果E 中没有属性集合成为一个键,要想唯一标识一个E 中实体,需要沿着一个或者多个many-one联系获得更多实体的键值. 





猜你喜欢

转载自blog.csdn.net/u011995233/article/details/22815083