Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

George McGeachie's Favourite PowerDesigner features

127 views

Published on

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.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

George McGeachie's Favourite PowerDesigner features

  1. 1. George McGeachie, Dusseldorf 2018 What makes PowerDesigner different? My favourite features
  2. 2. George McGeachie • Co-author of “Data Modeling Made Simple with PowerDesigner”, PowerDesigner trainer, and data modelling tool junkie.
  3. 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. 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. 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?
  6. 6. Let’s start
  7. 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. 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. 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. 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. 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. 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
  13. 13. Multiple editing windows - individual objects and lists of objects, from multiple models
  14. 14. Copy and paste from a list of Objects straight into Excel, complete with headers
  15. 15. Import anything from Excel without writing any code Mapping information for each sheet
  16. 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. 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. 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. 19. Dependency matrices - show (and edit) links between objects - a great way to link attributes to domains Attributes Domains Edit using spacebar
  20. 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. 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. 22. Add new properties, and new types of object, and links between them - how about Data Quality metadata for database columns?
  23. 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. 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. 25. How about exporting that LDM to CSV? This simple code produces the JSON This simple code produces the CSV
  26. 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. 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. 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. 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
  30. 30. Run theTransformation from theTools menu This transformation adds audit columns to all PDM tables
  31. 31. Add a Method to a menu instead (or as well) This took 7 seconds to add 7 columns to all 205 tables in “SQL Anywhere Demo DB” PDM
  32. 32. Who needsVisio? Use a 'Free Model' to invent your own model
  33. 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
  34. 34. • Telephone: +1 978 451 0165 / +44 208 123 8756 • UK mobile: +44 (0) 794 293 0648 • Skype: gmcgeachie • Twitter: metadatajunkie • George.McGeachie @ MetadataMatters.com • http://metadatajunkie.wordpress.com/ Thanks for watching

×