有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表是一对一、一对多、多对多关系中的那种。

PowerDesigner中CDM和PDM如何定义外键关系的更多相关文章

  1. cdm 生成pdm时, 外键的命名规则

    在CDM 生成PDM时,生成的外键默认的规则是:父表名称的前三个字母+"_"+主键 为子类的外键,可是在一些情况,很不习惯用 父表的前三个字母命名,需要用自己的规则来生成外键,此时 ...

  2. SQL Server数据库中导入导出数据及结构时主外键关系的处理

    2015-01-26 软件开发中,经常涉及到不同数据库(包括不同产品的不同版本)之间的数据结构与数据的导入导出.处理过程中会遇到很多问题,尤为突出重要的一个问题就是主从表之间,从表有外检约束,从而导致 ...

  3. MySQL定义外键的方法

    MySQL定义外键的方法是每个学习MySQL的人都需要掌握的知识,下文就对MySQL定义外键的语句写法进行了详细的阐述,供您参考. 外键为MySQL带来了诸多的好处,下面就为您介绍MySQL定义外键的 ...

  4. 在PowerDesigner中设计物理模型1——表和主外键

    原文:在PowerDesigner中设计物理模型1--表和主外键 在PD中建立物理模型由以下几种办法: 直接新建物理模型. 设计好概念模型,然后由概念模型生成物理模型. 设计好逻辑模型,然后由逻辑模型 ...

  5. 多重外键关系在java中的处理方案

    // 0){ var ul = li.getElementsByTagName("ul")[0]; ul.style.display = "none"; var ...

  6. netcore2.0 ORM框架中如何配置自定义的主外键加载

    环境:netcore2.0 DB :mysql ORM:Ant https://github.com/yuzd/AntData.ORM/tree/netcore2 [给我一个star吧] NUGET: ...

  7. mysql中主外键关系

    一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, ...

  8. 【转】PowerDesigner删除外键关系,而不删除外键列

    原文:https://blog.csdn.net/tomsyc/article/details/6075530 PowerDesigner中配置外键关系时,如果要删除配置的外键关系,默认设置会一同删除 ...

  9. mysql|中主外键关系(转)

    http://my.oschina.net/liting/blog/356150 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标 ...

随机推荐

  1. c# 判断字符串中是否含有汉字,数字

    正则表达式使用时需要引用 using System.Text.RegularExpressions; private void buttonX1_Click(object sender, EventA ...

  2. QT 实现拖放功能

    1. 文档拖放 获取文件名 mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #i ...

  3. Myeclipse快捷键(二)

    Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+D: 删除当前行Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当前行到上一行(复制增加) Alt+↓ ...

  4. HTML5 拖放---drag和drop

    拖放四步走:第一步:设置元素可拖放,即把 draggable属性设置为 true:  例:<div id="div" draggable="true"&g ...

  5. Redis源码分析:serverCron - redis源码笔记

    [redis源码分析]http://blog.csdn.net/column/details/redis-source.html   Redis源代码重要目录 dict.c:也是很重要的两个文件,主要 ...

  6. js写出斐波那契数列

    斐波那契数列:1.1.2.3.5.8.13.21.34.…… 函数: 使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1. for循环: 从底层向上运 ...

  7. jsp:forEach标签

    该标签使用来对一个 Collection 集合中的一系列对象进行迭代输出,并且可以指定迭代次数.一般使用格式如下: <c:forEach items=”collection” var=”varN ...

  8. Asp.net 异步调用WebService

    //服务代码 [WebMethod] public string Test(int sleepTimes, int val) { Thread.Sleep(sleepTimes); var log = ...

  9. The CHECK_POLICY and CHECK_EXPIRATION options cannot be turned OFF when MUST_CHANGE is ON. (Microsoft SQL Server,错误: 15128)

    记录下 The CHECK_POLICY and CHECK_EXPIRATION options cannot be turned OFF when MUST_CHANGE is ON. (Micr ...

  10. Redis中redis.conf配置总结

    redis.conf 配置项说明如下:1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程  daemonize no2. 当Redis以守护进程方式运行时,Re ...