ERWin Template Overview By: Dave Wentzel Agenda Overview of Templates/Macros Template editor Available templates Independent column browser Forward engineering process Trouble shooting What is a template ? ERWin contains a macro language Used for the creation of: – Stored Procedure Templates – Trigger Templates – Table script template (pre & post) Based on type of template, will automatically generate SP, trigger, or script based on table/relationship information when the model is forward engineered Why are we using templates? Provide turn-key approach to data model creation Reduce the number of triggers and stored procedures which need to be written Can more easily make model changes without having to ‘re-write’ triggers and SPs A little on the Macro Language... ERWin contains a Template Toolbox which is used to create the templates Types of Macros Entity – Applied to tables in the diagram – Can be used to act as a loop - ‘For Each Entity’ – Can be used to reference qualities of an entity ‘For Each (Attribute/Index/Key…)’ Relationship – Applied to relationship information between entities – Can reference PK, FK, Parent/Child entities Types of Macros Continued Attribute – References ‘attributes’ of attributes such as length, field type, FK/PK, etc. Constraint – References database constraint information Miscellaneous – Arithmetic operators – Comparison operators – System Information Stored Procedure Templates Generates a stored procedure for WRITING / UPDATING a record in a table Based on primary key attributes If the key values are equal to an existing record, the record will be updated If no matching record is found, a new record will be inserted To be used as low level write routine called from higher level SPs. Accessing the SP Templates Right mouse click on a table Select Table Editor / Stored Procedure option Attach the appropriate template to the table One must be attached for each table Available Templates Write Template Stand Alone Table Triggers Write Dimension Template Write Fact Template Write Template Creates spWriteTableName Assumes PK is an IDENTITY column Assumes PK is FieldNameInst Assumes columns: – Create Date / Create User – Modify Date / Modify User – If PK provided, updates record otherwise inserts new record Standalone Table Triggers Generates the insert/update triggers for standalone tables Standalone tables may occur if created as a reference table Generated through the SP template instead of the Trigger template because the trigger template assumed relationships Write Dimension Template Found in Datamart diagrams Assumes a PK of identity Assumes PK is FieldNameInst Assumes no updates If PK does not exist, will write new record Write Fact Template Found in Datamart diagrams Inserts new records into fact tables Trigger Templates Generates Update/Delete/Insert triggers for a table and it associated tables Helps maintain RI and date validations between related tables Triggers and Relationships Triggers are generated based on relationships between two entities Double click on a relationship line – Child Delete / Insert / Update – Parent Delete / Insert / Update Options: – Restrict - prevent – Cascade - propagate change – None - no trigger relationship Accessing the Trigger Templates Left mouse click on a table Select SQL Server Trigger Select SQL Server Trigger Template to attach Triggers Available Trigger Templates Approach Child Delete Restrict Approach Child Delete Cascade Approach Child Insert Restrict Approach Child Update Restrict Approach Parent Delete Cascade Approach Parent Delete Restrict Approach Parent Insert Restrict Approach Parent Update Restrict Available Trigger Templates Approach Delete Footer Approach Delete Header Approach Insert Footer Approach Insert Header Approach Update Footer Approach Update Header Parent / Child Templates On restrict, provides Raise Error message when a parent / child relationship exists On cascade, will delete all associated tables with the same primary key Verifies records do not overlap based on from and thru dates Requires fields either FromDate / ThruDate or BeginDate / EndDate Assumes domain type of ID in some models Header / Footer Templates Header creates the ‘Create Trigger’ code, parameters, and initial date checks against the table Footer templates update the ModifyDate/User in the update triggers Assume ModifyDate/ ModifyUser fields Standard selections for RI Actions Table Templates Pre / post scripts generated during table creation Used to generate print statement before table creation so implementation script is easier to read Used for the OLAP fact tables to generate update triggers Accessing Table Templates Left click on table Select Table Editor / Pre & Post Script Independent Column Browser Provides method of creating standard fields for use in current data model Example: Used for standard fields applied to all tables Domain type of ID exists which is referenced by some templates and must be assigned PK identity columns Accessing the Independent Column Browser Under Window select Independent Column Browser Option Forward Engineering the Model Triggers, stored procedures, and table scripts will be generated when you forward engineer the data model - based on the options you select To forward engineer the model, select: Tasks \ Forward Engineer/Schema Generation Schema Generation Schema Options to Select Table – – – – – – Create Table Drop Table Pre-Script Post-Script Create Procedure Drop Procedure Options continued Column – Validation – Default Index – Create Index » Alternate Key » Foreign Key » Inversion Entry » CLUSTERED » Physical Storage Options Continued Referential Integrity – Primary Key » Alter (PK) – Foreign Key » Alter (FK) Trigger – User Defined » RI Type Override » Relationship Override Forward Engineer Select PREVIEW Cut / paste into SQL query window to run Do not directly forward engineer into the database – Could delete items you did not anticipate – May be connected to a production server Troubleshooting Execute script Review error statements Review script code with error Access the template to see what it is expecting Verify correct relationships, triggers, SPs, etc. are associated with the table Verify required fields are assigned to the table