【数据库】期末复习--模式分解和E-R图大题

一.模式分解

模式分解的前提是先求出极小函数依赖集和模式的候选码,这部分讲解在之前发布的博客里有提到,不太清楚的可以移步上一篇

【CSDN】求关系候选码和函数依赖集

一般我们只需要将模式分解到3NF即可,有两种情形:保持函数依赖保持无损连接

那具体怎么分解呢?

我们知道,3NF是建立在2NF基础上的,它要求模式同时具备不含有非主属性的部分依赖和传递依赖,这就需要我们对原模式分解为若干小模式,让它们都是3NF。那是不是意味着我们要找出所有的部分和传递依赖然后单提出去呢?其实并不是。试想一下如果一个函数依赖集里面的函数依赖很多,甚至可能很复杂,那么一个个去找显然很费时费力。

其实做法很简单,只需要把每个函数依赖都单独拿出去,形成一个新的模式,左部属性相同的函数依赖合在一起。这样做的目的就是让每个模式左部都是唯一的,不会产生上述那两种函数依赖的干扰,这样就可以保证每个模式都是3NF的。

因为我们把每个函数依赖都考虑到了,不存在哪个依赖是被忽略或者丢到的,因此这种方式的结果就是保持函数依赖的3NF分解

如何得到保持无损连接的3NF分解呢?其实也很简单,保持函数依赖时可能没有将候选码考虑进去,即便函数依赖没有丢失,但还原回原模式时可能会不匹配。因此无损连接就解决了这一问题,也就是在上述做法后,看看候选码有没有存在于任意一个模式中,如果没有,就把候选码也加进去形成一个模式,就得到无损连接了。

 

二.E-R图转化为关系模式

画E-R图没什么难的,只需要记住方框表示实体、椭圆表示属性、菱形表示联系,把实体之间的关系(1:1 or 1:n or m:n)标注清楚就可以了

主要来看E-R图转化为关系模式

这也是在概念设计模式(绘制E-R图)结束后我们要进行的操作,也就是进行逻辑结构设计,转化为数据库管理系统支持的模型,一般来说就是转化为关系模型,我们也着重探讨关系模式的转化

有同学可能有疑惑,转化为关系模式难道不就是把实体以及它的属性列出来吗,为什么还要拎出来讲解呢?实际上,不少同学开始学可能都存在着误区,E-R图不是简单的一张实体图,他还有关系,是关系在约束着实体之间的联系,比如主外键等,因此转化为关系模式时单纯把实体与各自属性列出来是不够的,还要考虑关系的影响

首先我们要先理解并记住这三个规则:
1.对于1:1的实体联系,在任意一端的实体中加入另一端实体的主码(作为外码)以及联系属性

理解:不论正向还是反向都是唯一对应的,可以理解为这两个实体是互相依赖的,任意选择一个实体加入另一个实体的主码,作为该实体的外码,以建立这种联系

2.对于1:n的实体联系,在n端实体里加入1端的主码(作为外码)以及联系属性

理解:正向是一对多反向是一对一,可以理解为n端是依赖于1端实体的,所以要在n端实体中加入1端的主码作为自己的外码,

3.对于m:n的实体联系,把联系也拿出来作为关系模式,将两端的主码加进去合并成一个主码,并把联系属性也加进去

理解:这种多对多的关系,属性奖两方面都考虑到了,所以有必要讲属性单独拎出来作为关系模式处理

 

★做题思路

1.先把所有实体列出来,可以先打个左括号,把实体自身属性先写进去

2.根据上述的规则,把应该加的东西再加进去,都加完再把右括号括上,这个关系就写完了

3.在关系模式中用下划线把主码标出来(可以不做,看具体要求)

4.根据关系模式把主外码写出来(外码是新加进去的别的关系里的主码)

来道题实战一下:
e2d9cec7ac043a91f37e2fc444e18a91.png

答案:

职工(职工号,姓名,技术等级,工厂编号,聘期,工资)   主码:职工号   外码:工厂编号

工厂(工厂编号,厂名,地址)       主码:工厂编号   外码:无

产品(产品号,产品名,规格)        主码:产品号     外码:无

生产(工厂编号,产品号,数量)     主码:(工厂编号,产品号)   外码:工厂编号,产品号

 

你学会了吗?关注更多......

3e670a225ea7491d9558fbd48ab58f38.jpeg

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值