These are the slides from my presentation at Data Modelling Zone in Dusseldorf, in September 2018. These are all features that differentiate the tool from the other players in the market.
2. George McGeachie
• Co-author of “Data Modeling Made Simple with
PowerDesigner”, PowerDesigner trainer, and data
modelling tool junkie.
3. If you’re expect a training class, sorry
This session was originally booked for a
full day, and I was going to teach you
how to create a chain of models
(Conceptual-Logical-Physical) in SAP
PowerDesigner, demonstrate how to
use the editing tools effectively, how to
prettify and organise diagrams, and how
to generate and manage models.
I was also going to show you some of
my customisations, such as the model
transformation that makes sure your
PDM tables all have the correct audit
columns.
After the schedule was revised, my time
allowance is 90 minutes, so I’m going to
demonstrate the PowerDesigner
features that differentiate the tool from
the other players in the market. In other
words, my favourite features, live.
(including model transformations)
Challenge me with a feature of your
favourite data modelling tool that you
just can't live without, and I will show
you how to handle it in PowerDesigner.
4. Are you
• evaluating data modelling tools?
• using SAP PowerDesigner, but never had any training?
• an experienced data architect or modeller, new to SAP PowerDesigner?
• working for a tool vendor, and came here to check the opposition?
Are you going to challenge me?
Does your favourite data modelling tool have a feature that you just can't live without, and you want to know
how PowerDesigner handles it?
5. Are you ready with
that challenge?
• Does your favourite data modelling tool have a
feature that you just can't live without, and you
want to know how PowerDesigner handles it?
7. What if you draw that relationship in
the wrong direction, or between the
wrong entities?You don't need to
delete it, just edit it Relationship_1
Loyalty Account Role Type
Loyalty Account Role Type Code
Name
Description
<pi>
Loyalty Account Role
Loyalty Account Role Type Code <pi,fi>
Relationship_1
Loyalty Account Role Type
Loyalty Account Role Type Code
Name
Description
<pi>
Loyalty Account Role
What I should
have drawn
I actually drew
this
Drag the
symbol handles
Fix it using relationship
properties
8. What if you draw that relationship in the wrong direction, or
between the wrong entities?You don't need to delete it, just edit it
Change from “One –
Many” to “Many – One”
Beware – original
optionality is maintained
Beware – “Entity 1” and
“Entity 2” don’t fit the
usual pattern
9. Tidy up that diagram - have
more than one symbol on the
diagram for that busy entity
Generalization_1
CustomerAccountContact
CustomerAccountRelationship
Customer
CustomerAccountTaxExemption
CustomerAccount
PaymentPlan
(<SID CDM>)
InvolvementRole
(<SID CDM>)
FinancialCharge
(<SID CDM>)
DunningScenario
(<SID CDM>)
DunningCase
(<SID CDM>)
ContactMedium
(<SID CDM>)
CustomerPayment
(<SID CDM>)
PartyRole
(<SID CDM>)
CustomerQuote
(<SID CDM>)
CustCreditProfileReference
CustomerCreditProfile
Generalization_1
CustomerAccountContact
CustomerAccountRelationship
Customer
CustomerAccountTaxExemption
CustomerAccount : 1
PaymentPlan
(<SID CDM>)
InvolvementRole
(<SID CDM>)
FinancialCharge
(<SID CDM>)
DunningScenario
(<SID CDM>)
DunningCase
(<SID CDM>)
ContactMedium
(<SID CDM>)
CustomerPayment
(<SID CDM>)
PartyRole
(<SID CDM>)
CustomerQuote
(<SID CDM>)
CustCreditProfileReference
CustomerCreditProfile
CustomerAccount : 2
From this
To this
10. When you connect two objects together, the link is visible from both
ends (even if they're from two different models, or different types of
model)
LDM Entity
PDM Table
11. When you connect two objects together, the link is visible from both
ends (even if they're from two different models, or different types of
model)
Requirement
LDM Entity
Attribute
12. When you connect two objects together, the link is visible from both
ends (even if they're from two different models, or different types of
model)
Table Key
Column
14. Copy and paste from a list of Objects straight into Excel, complete
with headers
15. Import anything from Excel without writing any code
Mapping
information for
each sheet
16. Link anything to anything if you have a need to - usingTraceability
Links
<<Possible Relationship>>
Loyalty Account
Loyalty Account Identifier
Account Holder Full Name
<pi> Characters (16)
Characters (60)
<M>
<M>
Party
Party Identifier
Name
Address, Phone Number, etc.
Characters (16)
Characters (60)
<Undefined>
<M>
<M>
Visible from both
ends
Visible from both
ends
17. Link anything to anything if you have a need to - usingTraceability
Links
Can define useful
link types in a
model extension
<<Possible Relationship>>
18. Link anything to anything if you have a need to - usingTraceability
Links
Useful for Views
and Stored
procedures
<<DBCreateAfter>>
PARTY_IDENTIFIER = PARTY_
IDENTIFIER
LOYALTY_ACCOUNT_ROLE_TYPE_CODE =
LOYALTY_ACCOUNT_ROLE_TYPE_CODE
LOYALTY_ACCOUNT_ROLE_TYPE
LOYALTY_ACCOUNT_ROLE_TYPE_CODE
NAME
DESCRIPTION
numeric(2)
char(20)
char(60)
<pk> not null
not null
not null
LOYALTY_SCHEME_MEMBER
MEMBERSHIP_NUMBER
LOYALTY_ACCOUNT_ROLE_TYPE_CODE
PARTY_IDENTIFIER
NICKNAME
char(16)
numeric(2)
char(16)
char(20)
<pk>
<fk2>
<fk1>
not null
null
null
not null
MEMBER_ROLE
MEMBERSHIP_NUMBER
LOYALTY_ACCOUNT_ROLE_TYPE_CODE
NAME
DESCRIPTION
NICKNAME
LOYALTY_SCHEME_MEMBER
LOYALTY_ACCOUNT_ROLE_TYPE
PARTY
PARTY_IDENTIFIER
NAME
ADDRESS__PHONE_NUMBER___ETC_
char(16)
char(60)
<Undefined>
<pk> not null
not null
null
PARTY_MEMBER
MEMBERSHIP_NUMBER
LOYALTY_ACCOUNT_ROLE_TYPE_CODE
NICKNAME
LOYALTY_SCHEME_MEMBER
19. Dependency matrices - show (and edit) links between objects - a
great way to link attributes to domains
Attributes
Domains
Edit using
spacebar
20. Create a model within a model - useful for Subject Area models
<<Subject Area>>
Customer
<<Subject Area>>
Cost Centre
<<Subject Area>>
Product
<<Subject Area>>
Supplier
<<Subject Area>>
Account
21. Create a
model within
a model – 4
models in
one file
Logical Data Model
Model: 4 models in one
Package:
Diagram: 4 models in one
Author: George McGeachie Date: 19/09/2018
Version:
"Type" entities might not be part of your
modelling standards - you could just have
the "Type" attributes, w ith a managed list
of allow ed values.
Thing Status Type
Thing Status Type
Description
<pi>
Thing
Thing ID
Thing Status Type
<pi>
<fi>
1. Simple Status
Some "States" are likely to
have their own attributes and/or
relationships. In some cases
an attribute may be optional in
one state, but mandatory in
another.
Thing State
Thing State
Thing ID
Thing State Effective Date Time
Thing Status Type
<pi,fi1>
<pi>
<fi2>
Thing Status Type
Thing Status Type
Description
<pi>
Thing
Thing ID <pi>
Active ThingNew Thing Obsolete Thing
Suspended
Thing
2. State Entity
You could link the Event
Types to the Status Types
they can set - thus storing
some of your business rules
as data.
set
be set by
Thing Event
Thing State
Thing ID
Thing State Effective Date Time
Thing Status Type
<pi,fi1>
<pi>
<fi2>
Thing
Thing ID <pi>
Thing Status Type
Thing Status Type
Description
<pi>
Thing Event
Thing ID
Thing Event Effective Date Time
Thing Event Type
<pi,fi1>
<pi>
<fi2>
Thing Event Type
Thing Event Type
Description
<pi>
Thing
Introductio
n
Thing
Acceptance
Thing
Suspension
Thing
Cancellation
3. State-Changing Events
You could link the Event
Types to the appropriate
Reason Types - thus
storing some of your
business rules as data.
set
be set by
Thing Event Reason Type
Thing Event Reason Type
Description
<pi>
Thing State
Thing ID
Thing State Effective Date Time
Thing Status Type
<pi,fi1>
<pi>
<fi2>
Thing
Thing ID <pi>
Thing Status Type
Thing Status Type
Description
<pi>
Thing Event
Thing ID
Thing Event Effective Date Time
Thing Event Type
Thing Event Reason Type
<pi,fi1>
<pi>
<fi2>
<fi3>
Thing Event Type
Thing Event Type
Description
<pi>
4. State-Changing Events with
Reasons
22. Add new properties, and new types of object, and links between them
- how about Data Quality metadata for database columns?
23. Add new properties, and new types of object, and links
between them - how about adding Data Stewards, and linking
them to the entities they're responsible for?
New object type –
Working Note
New object type –
Steward - has a list
of entities they’re
responsible for
24. How about generating that LDM as JSON structures for your fancy
governance tool to ingest?
This simple code
produces the JSON
This simple code
produces the JSON
Tools | Extended Generation →
25. How about exporting that LDM to CSV?
This simple code
produces the JSON
This simple code
produces the CSV
26. You usually don’t need to upgrade PowerDesigner to improve the
DBMS support
You usually don’t need to upgrade
PowerDesigner to improve the DBMS
support, you usually just need a new DBMS
definition file. For example, when Karen
Lopez (@datachick) questioned the
support for Sequences in SQL Server 2012,
SAP were able to fix the issue really quickly,
and Karen was able to use the upgraded
support immediately.
Caveat – sometimes (such as adding
features for SAP HANA) the underlying
PDM ‘engine’ is changed, so not all new
PDM features can be applied to old
versions of PowerDesigner
27. Tailor how PowerDesigner generates DDL, and even invent your own
DBMS and funky new DDL syntax
In the Database Definition file,
you have control over how the
DDL is constructed. Here’s the
code to create a Table in SAP SQL
Anywhere 16
28. When you generate one model from another (e.g. generating a LDM
from a LDM) you can change what happens using model transformations
Amend the
current
model
BEFORE you
generate the
new one
Amend the
newly-
generated or
updated model
BEFORE you
see it
e.g. remove
“logical-only” or
unapproved
objects
e.g. add audit
columns or surrogate
keys, change column
sequence
29. When you generate one model from another (e.g. generating a LDM
from a LDM) you can change what happens using model transformations
Relationship_2
Loyalty Account Role Type
Loyalty Account Role Type Code
Name
Description
NO
Yet again NO
<pi>
Loyalty Account Role
Parent Entity
Child Entity
In this LDM, one entity and two
attributes are “logical only”
I generated a new LDM from that
model, without those objects
Loyalty Account Role Type
Loyalty Account Role Type Code
Name
Description
<pi>
Loyalty Account Role
Parent Entity
Model
extension
Choose
while
generating
model
33. Some more I could have mentioned
• Dedicated PDM Facts & Dimensions
• Data Movement Models
• Requirements Models
• XML Models
• Projects
• Frameworks (Zachmann,TOGAF etc.)
• Enterprise Architecture Models
• Impact Analysis Models
• Atomic Data Items in the Conceptual
Data Model
• Save selected symbols as image files
• Can access objects from search results
• List Reports
• Business Rules in every model
• Barker Notation
• Shortcuts andTarget Models
• Object Replication
• Custom object generation
• User profiles
• User Interface customisation
• Metamodel Objects Help
• Model Backup Files
• SAP Integration
• Customisable XML Import
• Find in Diagram / Browser