Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 428|回复: 0

PD 15.1 安装 破解 , 简单使用 (一对多,多对多关系生成sql脚本) , CDM 和 PDM 的区别;PD15.1 生成sql2008 无FK外键约束的解决方法

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-4-22 02:53:15 | 显示全部楼层 |阅读模式

    CDM是概念模型,在概念模型上没有具体数据库产品的概念,反映的是实体和联系。PDM是物理模型,是依赖具体数据库产品的模型,比如可以指定具体的数据类型和约束等等。在PowerDesigner中两个模型之间可以相互转化。

    步骤一般当然是先cdm后pdm,建好cdm后,根据实际情况,选择不同的数据库,然后把cdm转成相应的pdm,有了cdm会更加灵活,不必在需求分析一开始就定死用什么数据库,便于更改,转pdm很容易。

     物理数据模型(PDM): 你可以把这个看中是实际数据库中的表结构,例如 你的CDM中有 多对多的关系的话,那么就会在 PDM中,实际生成中间表

    image

     

    1:运行  PowerDesigner15_Evaluation.exe

    默认

    image

    image

     

    2: 安装完毕后,不要执行,下面我们进行 破解

    把 PowerDesigner15汉化+注册补丁  下的所有文件,覆盖 PD的安装目录下的文件

    然后我们打开 PD,点击 帮助 –> About  看到下面窗口中红色方框,就表示已经破解 + 汉化成功

    image

    image

     

    ================     PDM  挖坑开始   这里有个坑,建议直接跳过,从下面的  CDM 设计开始看=========

    下面我们来简单的创建几个表,涉及  1对多,多对多(自己写中间表),多对多(PD帮我们生成中间表)

    image

    image

    image

    我们创建几个表

    Userinfo  用户表 

    Order 订单表

    Department 部门表

    Play 活动表

     

    image

    设置主键,自动增长  (双击列,打开列设置窗口,勾选右下角的 Identity 自动增长)

    image

    分析用户表 和 订单表的 关系   是一对多

    image

     

    image

    image

     

    下面,我们来看  用户表 和  部门表  他们是一个多对多的关系,我们通过手动创建的中间表来 设计这个 中间表

    (一个员工,可以在多个部门,一个部门,也可以有 多个员工)

    注意,下面的这个中间表,是我们自己手动创建的

    image

    image

    上面一个用户和一个部门之间,是多对多的关系,但是上面是我们自己创建一个中间表,下面我们自己来创建一个 真正的 多对多的 表(实际还是会自动创建一个中间表)

    到这里,我突然发现我用错了, 应该是先设计 CDM ,在 CDM 里面才可以设计  多对多表,而 如果是在 PDM 里面,是不能生成 多对多表的

    因为PDM是物理模型,那么PDM中反应的表,就应该是 CDM

    ======================   PDM  挖坑结束  ======================

     

    =========================  重新用  CDM   开始  =============================

    image

    在 CDM  模型里面,拉一对多关系,是从 一  拉 到 多,就形成了下面的这个图.  并且这里有点和 PDM不同的是,在CDM里面拉的关系线,是看不到外键的,外键要等一会 转成了 PDM  模型之后,才会看到外键

    image

     

    下面我们把  用户表,部门表,以及手动创建的中间表(用户部门关系表)  这3个表,来拉一下关系

    首先  用户表  和  用户部门   是 一对多的关系,一个用户,可以属于多个部门

    部门表  和  用户部门关系表   也是一对多的关系,一个部门里面,可以用多个用户

    实际上,2个一对多,就是一个多对多,我们原本可以省掉 用户部门关系表而直接在 用户表 和 部门表 直接拉一个 多对多的关系,但是假如想在中间表里面加入其他额外的字段,例如 这里是  JoinTime 加入部门时间,就是我们自己想额外创建的字段,那么这个时候,就应该自己手动来创建中间表了

    image

    image

    下面我们来创建,活动表和部门表是多对多的关系 (一个活动,可以属于多个部门,一个部门也有多个活动)

    image

    在CDM里面画 多对多的线的时候,要注意,PD里面,默认是没有  多对多 的线的,得先把2张表之间 拉出 一对多, 然后双击 两个表中间的关系线, 再修改成 多对多

    好了,我们的CDM 模型,就画好了

    image

    我们双击 部门表 和 活动表 中间的 关系的名称,我们把这个名称  Relationshop_4 给修改成   R_Department_Play ,这个名称,就是等会我们生成的 数据库里面的中间表的名称 ,如果你不修改,那么等会数据库就会生成一个 Relationshop_4 ,这个名称 太傻了

    image

    image

     

    (如果2张表,是多对多的关系,那么什么时候,用我们自己创建的中间表,什么时候,用系统的多对多表呢?   其实很简单,如果 你需要在中间表里面放一些额外的数据,例如上面的  加入时间(JoinTime) 这个就是个额外的字段,那么我们就用自己创建的中间表.   如果什么额外的字段都没有,就可以直接用 系统的多对多 (但是实际到了PDM物理模型,和到数据库的时候,还是会生成一个中间表的)

    现在我们要生成数据库的话,还要先 转成 PDM 模型  ,我们可以点击 工具=> Generate PDM  生成PDM模型,也可以使用快捷键  Ctrl + G

    image

    imageimage

     

    点击确定后,我们会跳转到 PDM 界面,这个  物理模型界面,就是实际上,我们通过  CDM  最后会生成的哪些表

    image

    这个时候,我们 选择 数据库 => Generate Database 来生成数据库, 快捷键依然是 Ctrl + G

    image

    image

    然后我们把生成的sql文件,拖到sql2008的管理器里面,我们自己先创建一个数据库  例如 WebPd

    我们发现,表结构,定义,都可以了

    image

    但是我们发现还是有个小问题,我们观察在PDM中的时候,  R_Deparment_Play 这张中间表的  DepId 和 PlayId 不仅仅是有PK主键,同时他们还是外键,但是到了sql2008里面之后,外键信息丢失了,如下图,解决方法是我们要回到 PD 里面,对PD这个软件进行设置

    image

     

    解决方法,

    步骤1: 在刚才的PDM 界面下(注意,是PDM),点击 菜单栏的 数据库=> Change Current DBMS 设置为 sql2000

    image

    image

    步骤2: 在菜单栏里面 找到 模型=>References

    image

    在打开的窗口中,我们找到 Implementation 这列,  默认这里的数据是 Trigger  ,我们修改成   Declarative

    image

     

    步骤3 : 将当前PDM的 DBMS  重新设置为 sql2008

    image

    image

     

    步骤4:  在PDM 界面下,  按  Ctrl + G 快捷键,生成sql脚本 ,然后放到 sql2008 数据库管理器中运行后,如下

    image

     

     

    CDM和PDM的区别?(转)http://hi.baidu.com/t_sky/item/adaded4f5a6b11ea1e19bcd6

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-8 16:32 , Processed in 0.083988 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表