有A、B两张表(实体),各自有id作为主键,两表是一一对应关系。但略有不同:

A表一条记录可以对应0或1条B表记录,B表一条记录必须对应唯一条A表记录。

这样的关系如何在CDM或PDM中定义?

在最后的表结构中,B表中需要自动生成A表id列作为外键。

在PDM中,这种关系叫“引用”,实现比较简单

1、如果B表中没有外键列,则直接使用工具reference,B表中自动生成外键列,如下图:

2、如果B表中已经有列和A中主键列相同,则直接使用工具reference,使用B表已有列作为外键列,如下图: 
 
3、如果B表中已经有列和A中主键列不相同,则直接使用工具reference,B表自动生成外键列
(1)一种方法是删除已有列,修改外键列名,如下图:    
(2)第二种方法是,双击reference连接线(属性),选择外键列,选择确定即可
 
在CDM中,通过关系(Relationship)中的DomainRole来实现
1、选择面板上的关系图标,先后连接两个实体(顺序无所谓),生成关系,如下图:
2、双击连线,编辑关系,先在Gneral中更改关系名称,表明两表关系
3、选择“Cardinalities”,定义两表主从关系
A、选择“One-One”关系,此时Domain Role选项自动激活。
B、Domain Role概念非常重要,它定义谁是主表,谁是从表,主表ID将进入从表形成外键字段。
如果不选择,两张表的主键将互相进入对方形成外键,所以必须设置Domain从主表到从表,如下图:
C、Dependent(依赖)关系
其次,判断Dependent(依赖)关系,如果B表dependent于A表,则A的主键进入B表做为外键后,此外键再与B表原主键形成新主键。
也就是说,B表原主键并不能形成完整主键,只有加上A表主键(外键)后才能共同形成主键。
如果上面设置主从表关系,则主表dependent选择自动禁用。
如果在从表上勾选dependent,则主表主键在从表中将会显示为(fk,pk),且从表数量关系自动变为(1,1)如下图:
所以不能轻易勾选dependent选择
 
cdm图:
 
生成的pdm图:
D、Mandatroy(强制属性)
A表到B表如果是Mandatroy,说明A表中任何一条记录都要对应B表一条记录,也就是说,如果A表中有B表的外键列,则该外键列不能为空。(1,1)关系
如果不为Mandatroy,就可以是(0,1)对应关系。
E、Cardinality(数量关系)
定义从A到B表或从B到A表是一对一、一对多、多对多关系中的那种。

最新文章

  1. Android 从零开始打造异步处理框架
  2. c# Winform 开发分屏显示应用程序
  3. 【POJ 1094】拓扑排序
  4. UVa 11090 Going in Cycle!!【Bellman_Ford】
  5. Socket和SignalR
  6. Groovy中那些神奇注解之InheritConstructors
  7. struts jsp传值到action,乱码的解决方案
  8. MySQL生产库开发规范
  9. HDU-1017
  10. LeetCode算法题-Self Dividing Numbers(Java实现)
  11. mpvue 初体验之改写车标速查小程序
  12. ActiveMQ使用的设计模式
  13. 网页分帧操作<frameset>,<iframe>标签
  14. sessionStorage记录返回前端的数据,用于解决登录拦截器刷新页面的问题
  15. MySQL内连接(INNER JOIN)
  16. My thoughts after NOIP 2018(2)
  17. js子节点children和childnodes的用法(非原创)
  18. JDK1.7 新特性
  19. MVC相关资料收集
  20. 【笔试题】Java 继承知识点检测

热门文章

  1. HDFS的设计
  2. 字符在内存中最终的表示形式是什么?是某种字符编码还是码位(Code Point)?
  3. HRBUST 2072 树上求最大异或路径值
  4. js对象数组 根据某个共同字段 分组
  5. Linux_服务器_09_新虚拟机下linux网络配置
  6. windows下安装 redis并开机自启动
  7. uva11489 - Integer Game(考思维,找规律)
  8. 烂泥Linux学习笔记
  9. C++之结构体struct
  10. enumerate 枚举