The third post in our “What’s New in SQL Developer Data Modeler v3.3” series, SQL Developer Data Modeler now allows you to link objects across models. If you need to catch up on the earlier posts, here are the first two:

  1. New and Improved Search
  2. Collaborative Design via Excel

Today’s post is a very simple and straightforward discussion on how to share objects across models and designs. In previous releases you could easily copy and paste objects between models and designs. Simply select your object, right-click and select ‘Copy’

Once copied, paste it into your other designs and then make changes as required.

Once you paste the object, it is no longer associated with the source it was copied from. You are free to make any changes you want in the new location without affecting the source material. And it works the other way as well – make any changes to the source material and the new object is also unaffected.

However.

What if you want to LINK a model object instead of COPYING it?

In version 3.3, you can now do this. Simply drag and drop the object instead of copy and pasting it.

Select the object, in this case a relational model table, and drag it to your other model.

It’s as simple as it sounds, here’s a little animated GIF to show you what I’m talking about.

Drag and drop between models/designs to LINK an object

Notes

  • The ‘linked’ object cannot be modified from the destination space
  • Updating the source object will propagate the changes forward to wherever it’s been linked
  • You can drag a linked object to another design, so dragging from A -> B and then from B -> C will work
  • Linked objects are annotated in the model with a ‘Chain’ bitmap, see below
This object has been linked from another design/model and cannot be modified.

A very simple feature, but I like the flexibility here. Copy and paste = new independent object. Drag and drop = linked object.

Updating the Linked Objects

When you update the base object, the linked copies will be updated when they are opened. You can also invoke a manual sync or update from the base model when you right click and select ‘Synchronize Remote Objects.’

There’s no need to have the original model or design open when you open the linked copies for them to be updated.

Author

I'm a Distinguished Product Manager at Oracle. My mission is to help you and your company be more efficient with our database tools.

6 Comments

  1. Yoou actually make it serm so easy together with your preaentation howevfer I
    in finding this matter to bbe really one thing which I think I might never understand.
    It seems too complex and very extensive forr me.

    I’m having a loiok ahead on your subsequent submit, I’ll try to get the cling of
    it!

  2. David Laprise Reply

    Hi, great feature!

    Now using SQL Developer 4.0.2.

    Does it also work with Entities?

    • Not today, but the developer is hoping to add it to our next version – so keep your fingers crossed!

  3. I can add a FK from a local table TO a linked table, as that would not require changes to the linked table.

    If you attempt to add the FK to the linked table, you’ll get an error message ‘Target Table must be Local Table.’

    No need to have the original model open for the update to happen – which occurs when 1)the linked version model is opened or 2) you manually update/sync using the ‘Synchronize Remote Objects’ in the source model/design. Developer says option to NOT update when model is opened is coming as this can be very expensive when the models are quite large.

  4. Great feature but a few detailed questions:
    1. Can you add a FK within Design B to a Linked Table from Design A? (or does that violate the “can’t change it” rule?)
    2. If you change the linked object in it’s source design but none of the other designs are open, will the linked version automatically update the next time you open a design that contains the linked object? Does the source design have to be open as the same time?
    3. How does this impact designs in SVN?

Reply To thatjeffsmith Cancel Reply