概念模型向逻辑模型的转换规则

概念模型向逻辑模型的转换规则总结
内容中的“一方”、“多方”都是指实体意义上的一和多,而不是数字的一和多
这些规则都可以从业务实际意义出发推导,这里不赘述

一、一对多二元关系

(一)强实体——强实体

1、联系无属性

一方的主关键字进入多方做为外部关键字

2、联系有属性

一方的主关键字进入多方做为外部关键字;
联系的属性进入多方

(二)强实体——弱实体

1、强实体做一方,弱实体做多方

(1)联系无属性

一方的主关键字进入多方做主关键字和外部关键字

(2)联系有属性

不存在这种情况,原因待会说

2、强实体做多方,弱实体做一方

不存在这种情况,原因如下:
①业务规定:弱实体依赖强实体,多方依赖一方,而不能反过来。
②假设存在这种情况,根据“八、主要规律总结”第①条,应该一方——弱实体的主关键字进入多方——强实体,但是弱实体没有主关键字,不能进入;同时,弱实体仍然会保持无主关键字的状态,违背了“八、主要规律总结”的第⑤条。

二、一对一二元关系

(一)无属性的一对一二元关系

1、强实体——强实体

(1)双方强制参与

报警:双向关系
解决:根据实际业务需求,设置为一方强制参与

(2)一方强制参与,一方可选参与

强制参与的一方设为被支配方,支配方的主关键字进入被支配方做外部关键字(可选参与方的主关键字进入强制参与方)

(3)双方可选参与

受强制多的一方设为被支配方,支配方的主关键字进入被支配方做外部关键字

2、强实体——弱实体

(1)双方强制参与

报警:双向关系限制
解决:合并两个实体为一个实体,其中原强实体的主关键字为新实体的主关键字

(2)一方强制参与,一方可选参与
A、强实体——可选参与、弱实体——强制参与

同强实体——强实体的一方强制参与、一方可选参与。
强制参与的一方设为被支配方,支配方的主关键字进入被支配方做外部关键字和主关键字(可选参与方的主关键字进入强制参与方)

B、强实体——强制参与、弱实体——可选参与

不存在这样的情况,弱实体就不可能是可选参与
因为强制参与的做为被支配方,而支配方弱实体没有主关键字

(3)双方可选参与

不存在这样的情况,弱实体就不可能是可选参与

(二)有属性的一对一二元关系

1、强实体——强实体

(1)双方强制参与

报警:双向关系限制+无主标识符
解决:
方法1:和无属性的一对一二元关系,强——强双方强制参与处理相同;根据业务需要,改为一方强制参与,一方可选参与,这个是可行的。
方法2:和无属性的一对一二元关系,强——弱双方强制参与处理相同;这个是不可行的,因为强强不能合体。

(2)一方强制参与,一方可选参与

报警:双向关系限制+无主标识符
解决:
合并强制参与方和关系的属性做为新实体
可选参与方的主关键字进入强制参与方做外部关键字

(3)双方可选参与

报警:双向关系限制+无主标识符
解决:
受强制多的一方设为被支配方,支配方的主关键字进入被支配方做外部关键字

2、强实体——弱实体

不存在这样的情况

三、多对多二元关系

只有强实体——强实体能设置多对多二元关系
生成一个新实体表示关系,关系如果有属性,则属性做新实体的属性;
两边实体的主关键字做新实体的主关键字和外部关键字;
一个多对多联系变为两个一对多联系。
可以理解成多对多,关系变成弱实体,然后成为两个一对多强弱二元关系

四、递归二元关系

(一)强实体——强实体

1、一对多

主关键字的副本进入该实体做为外部关键字

2、一对一

(1)双方强制参与

报警:强制自反联系
无法修改

(2)一方强制参与,一方可选参与

报警:强制自反联系
无法修改

(3)双方可选参与

需要设置支配方
主关键字的副本进入该实体做为外部关键字

3、多对多

生成一个新实体代表联系
实体的主关键字做为新实体的主关键字和外部关键字
实体的主关键字的副本也做为新实体的主关键字和外部关键字
一个多对多联系变为两个一对多联系

(二)强实体——弱实体

不存在这样的情况
报错:自反依赖(自己不能依赖自己、自己不能既是弱实体又是强实体)

五、多元关系

(一)基数都大于1

生成一个新实体代表关系;
生成几个一对多关系;
一方的主关键字进入多方做主关键字和外部关键字

(二)基数不都大于1

不存在这样的情况(这个是规定)

六、超子类关系

(一)强制非不相交

合并两个子类和超类作为一个实体,新实体的属性等于子类和超类属性之和

(二)强制不相交

超类实体消失,超类的属性进入子类(伴随着这个“进入,”超类的主关键字做子类的主关键字)

(三)可选非不相交

合并两个子类为一个实体,超类实体的属性进入子类实体(伴随着这个“进入,”超类的主关键字做子类的主关键字)

(四)可选不相交

超类实体不消失,不合并子类,超类实体的属性进入子类实体(伴随着这个“进入,”超类的主关键字做子类的主关键字)

七、复杂属性

powerdesigner不能处理复杂属性,需要人工做一些操作

(一)组合属性

1、主关键字为组合属性

一般只会出现在多对多关系(等其他关系)转换后生成的新实体中。
无需多管,按照之前的方式转换关系,自动就生成了。

1、非主关键字为组合属性

如果出现这样的情况,那么应该在概念模型阶段就将组合属性拆分为若干简单属性

(二)多值属性

如果出现这样的情况,那么应该在概念模型阶段,设置一个新实体,实体的属性即原多值属性(可以做主关键字也可以不做主关键字),并删除原实体的多值属性,生成一个新的双方强制一对多关系,原实体的主关键字进入新实体做外部关键字(可能还会做主关键字)

(三)导出属性

导出属性在物理模型中设置计算规则即可

八、主要规律总结

①一方的主关键字进入多方做外部关键字
②强实体的主关键字进入弱实体做外部关键字和主关键字
③有属性退化成无属性;多对多、递归退化为二元;强弱退化为强强
④转换后的逻辑模型中每个实体都有主关键字,都与其他实体有联系
⑤弱实体依赖强实体,多方依赖一方
⑥一对多关系中,默认一方支配多方;一对一关系中,需要设置谁支配谁;多对多关系中没有支配关系
⑦受限制多的一方做为被支配方,支配方的主关键字进入被支配方做外部关键字。
⑧实体的合并:强实体和弱实体才能合并,强实体和强实体不能合并
实体和关系的属性合并:没有限制
⑨只有一对一的关系考虑参与性
可选方进入强制方

总结

上面的东西都是基于powerdesigner得出的结论规律
这样的优势很明显,很详细全面,面向实际应用;
这样的劣势也很明显,很杂乱无章,没有内在逻辑。

下面从另一个角度来看这个问题,并且脱离powerdesigner去考虑。

补充一个预备知识,可选参与和强制参与。
A和B的一个关系,A与0到n个B对应,B与1到n个A对应。
对于A来说,B是可选出现,所以A是可选参与;对于B来说,A是强制出现,所以B是强制参与。此时A是可选参与方,B是强制参与方。

即,对于甲来说,乙是什么出现,甲就是什么参与。

实体的联系通过外部关键字表示,
外部关键字是由一个实体(称为父实体)进入另一个实体(称为子实体)得到的,
如果子实体是一个弱实体,那么进入的主关键字不仅作为子实体的外部关键字还要作为其主关键字,
所以我们的目标就是确定父实体和子实体,
除此方式之外,还可以合并两个实体

一对多:
直接根据基数确定父实体和子实体;
一方做父实体,多方做子实体;

一对一:
因为基数都是1,所以要依靠参与性确定父实体和子实体;
当双方强制参与时:
如果一强实体一弱实体,则两个实体合并,如果关系有属性,则放入新实体。
如果两个强实体,则应根据业务需要改为一方强制参与。
当一方强制参与时:
可选参与方为父实体,强制参与方为子实体,如果关系有属性,属性放入子实体。
当双方可选参与时:
不存在一个强实体一个弱实体的情况。
如果两个强实体,则应根据业务需要设置受限制少的实体为父实体,受限制多的实体为子实体

多对多:
只有强实体——强实体能设置多对多二元关系
生成一个新实体表示关系,关系如果有属性,则属性做新实体的属性;
两边实体的主关键字做新实体的主关键字和外部关键字;
一个多对多联系变为两个一对多联系。

多元关系:
只有基数都大于1才能设置多元关系
生成一个新实体代表关系,关系的属性称为新实体的属性,若干实体的主关键字进入新实体做主关键字和外部关键字

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值