PowerDesigner 使用小结

  这里总结一篇关于数据建模工具 PowerDesigner 的使用小技巧,下面列出的两个应用场景要在网上现找解决方案的话还真不一定好找,所以选择将这两个棘手的问题先记下来。

1. PDM 中表间关系出现多引用情况

  这种情况一般是在由 LDM 生成 PDM 时,对于一对一联系,没有指定主从表关系,如图:

  

  导致生成的 PDM 中出现一对一关系出现两个引用:

  

    如果指定了 Dominant role ,则只会产生一个引用:

  

  

2. 去外键问题

  默认情况下,通过 PDM 生成数据库初始化脚本时会带有外键生成脚本,如下:

  如果在 PDM 的关系属性中将 Generate 后面的钩去掉则可解决(话说这个问题还卡了蛮长时间,最后是一个老工程师指点的)

  

3. 在 PDM 中将字段命名格式改成下划线分隔形式

  需要进行操作: Tools -> Excute Commands -> Edit/Run Script , 如下图:

  

  选择执行脚本文件: ToLowerCase.vbs :

  

  

  最后点击 Run 即可,点完不会有任何弹窗予以提示,可直接点击 PDM 中的表查看。这里将 ToLoweCase.vbs 中的代码共享一下:

Option Explicit
ValidationMode = True
InteractiveMode = im_Batch

Dim mdl ' the current model
Dim i

' get the current active model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
   MsgBox "There is no current Model"
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
   MsgBox "The current model is not an Physical Data model."
Else
   ProcessFolder mdl
End If

Private Function ToLowerCase(input)
  Dim result, ch, prevIsUpper
  result = ""
  For i = 1 to Len(input)
    ch = Mid(input, i, 1)
    If Asc(ch) < 91 And Asc(ch) > 64 Then
      If i > 1 And Not prevIsUpper Then
        result = result + "_"        
      End If
      result = result + LCase(ch)
      prevIsUpper = True
    Else
      result = result + ch
      prevIsUpper = False
    End If
  Next
  ToLowerCase = result
End Function

' This routine copies the name into code for each table, column and view
' of the current folder
Private sub ProcessFolder(folder)
   Dim Tab 'running  table
   Dim rc 'return code

   for each Tab in folder.tables
      if not tab.isShortcut then         
         tab.Code = ToLowerCase(tab.Code)
         'output ToLowerCase(tab.Code)
         Dim col ' running column
         for each col in tab.columns            
            col.Code = ToLowerCase(col.Code)
            'output ToLowerCase(col.Code)
         next
      end if
   next
end sub

 

posted @ 2018-04-17 21:17  笑叹词穷  阅读(366)  评论(0编辑  收藏  举报