Sybase Powerdesigner - how to automatically format naming of PK and FK?

3.5k views Asked by At

Sybase Powerdesigner - how to automatically format naming of PK and FK?

Run script to format primary key and foreign key like this format

PK_TABLENAME

FK_PARENT_CHILD

Example

PK_Post

FK_Post_Comment
2

There are 2 answers

0
pascal On

At least for a Foreign-Key, you can create an Initialize event handler to define the name from the attached tables. It will work when you create a Reference in a diagram; maybe not when you create it through a list (as the tables won't be attached yet).

enter image description here

I leave as an exercise dealing with the name collisions...

For a Primary Key, you could use a Validate event handler on the Key metaclass, and rename the Key when it becomes Primary (unless its name already starts with "PK").

0
knb On

The following solution is complicated, but also very flexible/ not so intrusive. This will get you started:

In your PD model, create a new "Custom check with Autofix Option" for the Table Or Column (Or Reference) metaclass object. (Doesn't matter which you cheoose. You can iterate thru sub-objects in your vbscript code, using nested foreach loops (for each table ... /for each column ...) see below:

click on Menu Item Model / Extended Model Definitions. Click on the blue-white >=== Icon.

Give your new "Extended model definition" a name, e.g. mysql55-custom-001.

Optional: Click on Export Extended Model definition, export it as mysql55-custom-001.xem.

Click on the arrow next to the name of the new extenden model definition, to save it to the default subdir.

This is the extended model dialog: Extended Model Dialog

Right-Click on "Profile", click on "Add Metaclasses..." Check Column

Right Click , Select "New...", Click/Select "Custom Check".

Now add a custom check to your model. you must define a check script (in vbscript), and an autofix script.

enter image description here

Click on "Help" Button, Click on "Defining the Script of a custom check". You'll find a code sample to get you started. It will look like this. But you'll need to adapt the code of course with vbscripts low-level string processing functions.

enter image description here