Redesign the UI

Thoughts on TOAD Data Modeler:

I like TOAD. It is reasonably intuitive, easy to use, and stable. It has many nice features that enhance the DB experience. So, I figured a product that shared the same name, and the same DB product category, would also have those same positive qualities.

I was wrong.

TOAD DM is not at all intuitive, is user-hating hostile in its difficulty to use, apparently shares no paradigms with TOAD (despite sharing a great many functions), and greatly detracts from the DB experience.

Understand that I WANT to like TOAD DM. I like TOAD. A lot. But, TOAD DM’s UI is hateful, and was apparently designed by Satan himself in the 9th circle of Hell.

Let’s start comparing the two. Both TOAD and TOAD DM have Connections. They have similar requirements: connect to a database. I currently use TOAD for SQL Server, although in the past, I did use the original TOAD for Oracle. TOAD has a very nice, easy to use and understand, paradigm for connecting to a DB. You set up a connection to a server. You give it a username and password (or integrated security). You select the default DB you want to see. You (optionally) give it a name, or it will default in one that makes sense. You save it. It shows up in a nice, color-coded list. The list can be hidden, pinned, or always visible. However you want. When you connect, you connect to your default DB, but can select any other DB you want (and have rights to).

TOAD DM shares the name (TOAD) and the item name (Connections). There, the similarity ends. And the pain begins. You set up an Alias (why?). This alias has no color coding. It requires you to jump through many unintuitive hoops. It allows you to connect to one DB on one server. It’s very difficult to tell if 1) it’s set up correctly, 2) You connected correctly, and 3) Determine whether or not you successfully used integrated security (more on this later). Allow me to stress: TOAD DM Connections only allow me to connect to ONE DB on a server. TOAD allows me to connect to a server, and then select ANY of the DB’s to which I have access.
Fix: Make TOAD DM Connections more like TOAD Connections. They don’t need to be identical. TOAD DM does have to accommodate a few things that TOAD for SQL Server does not. But they can, and should, be very similar. And one thing is glaringly clear: the current set up in TOAD DM has to go. Aliases have to go. Aliases suck.

TOAD has this wonderful utility called Schema Compare. What does Schema Compare do? Why, exactly what it sounds like! It compares the schema of DB1 to the schema of DB2. It then generates an Alter Script to fix the selected differences between the two. Hmmm – this sounds like something in TOAD DM – Generate Alter Script. Why is it called Schema Compare in TOAD, and Generate Alter Script in TOAD DM? I dunno. The products have the same name. They should be called the same thing.

Schema Compare in TOAD works wonderfully. It’s slick, easy to use, intuitive, and understandable. I am quite fond of TOAD Schema Compare. TOAD DM, by contrast, is the exact opposite of all of that. And I loathe, hate and despise it. Let’s start with those horrible Aliases. If you don’t have one setup to the EXACT DB you want to schema compare (oops, I mean “Generate Alter Script”) to, you can, theoretically, create a new one on the fly. Good luck with that. Especially if you want to use integrated security. You know what? I installed SQL Server and set up the DB. I am the only one in the company that might know the SA password. And I don’t remember it. Not that it matters. SA is disabled. So why can’t TOAD DM figure this out?! I want to connect using integrated security, not SA! So, I saved the new alias, and tried to continue, but couldn’t. Compare that to TOAD, which handles this very smoothly, cleanly and intuitively. I then went and tried to update the Alias. This was very difficult. I am not sure I did it right. And the end result? An alias that MIGHT be connecting to the correct DB, using integrated security, with a VERY long connection string that scrolls off the right edge of the box, preventing me from reading it! BAD DESIGN! Do it the way TOAD does! Eliminate Aliases!

After I finally got my Alias set up (I think), I then tried the Schema Compare (or was that Model -> DB?) again. It asked for my username and password, but seemed happy when I left it blank. Did it connect? I dunno. I guess so. It didn’t give me any errors. I then selected ONLY those objects I wanted to compare. Let’s digress for a moment here, and take another look at TOAD’s Schema Compare. It is very easy to see exactly what is selected, to select all (and I do mean ALL), or deselect all (and I do mean ALL). There is a filter, to allow for viewing only those items you want to see. There are several panes showing the similarities and differences of the select object. You can group in multiple different ways. Or not. It’s up to what you need and want during that compare! All the information is presented right there, at your fingertips, in a very easy to use manner!

As I was saying, I selected only those objects I wanted. In order to do this, I had to click through several tabs, each one representing one type of object. I then had to click on the correct little picture button to deselect all of that object type (Tables, Stored Procs, Views, Functions). I lost count of the massive multitudes of redundant mouse clicks I had to do. In TOAD, this is, quite literally, one mouse click. I click on the button that says “Deselect All” and I am done. EVERYTHING gets deselected. What is done in TOAD DM is insanely bad UI!

I selected the 2 tables I was interested in, the two that I had changed. I continued on. It then compared EVERY object in the DB, despite my only having selected two! Why? I don’t know. Maybe the selection of objects is on the wrong screen, and should come after the DB check. Again, I don’t know. The two objects I selected have pretty clearly defined foreign keys. It’s not too difficult to figure out what needs to be compared. TOAD can do it. Why can’t TOAD DM?

I was then presented with some horrible mess that is quite opaque. Everything in the DB showed up. I couldn’t just select the items I wanted. It was an incredibly frustrating nightmare of an experience! TOAD? Slick as a whistle, and easy to use. We’ll ignore that TOAD DM then crashed while trying to generate the “alter script.”

Fix: Scrap the fiendish, horrendous mess called “Generate Alter Script,” and replace with TOAD’s blessedly simple and easy to use Schema Compare.

Now, let’s move on to the core of the program – create models. I had done an RE on the DB, which of course automatically created an “All Objects” Workspace. That’s fine. I then wanted to break it down into some detail views, grouping logical sets of tables together, to allow for easier viewing and troubleshooting. Ahh, how mightily TOAD DM struggles to prevent any work from being accomplished by the user!

I created a new workspace. I am a programmer. I am very comfortable with the idea of “Objects.” I then dragged the existing entities onto the workspace. I expected something to happen like TOAD. Namely, I expected the entity relationships to come with the entities! Is that so unreasonable? To expect the relationships among entities to propagate over with the entities? Apparently! I searched the forums. I watched videos. I read the help files. All to no avail! I tried copying the objects, but that created two of everything. Not what I wanted! I tried to drag the relationships out, like I did the entities. No go! So much for consistent, predictable user interface actions! So much for user friendliness and intuitiveness! The relationships are objects. They store, well, relationships among the different entities. Why can’t they behave like the entities, and allow for dragging and dropping? I can’t even right-click and add to the workspace!

When an entity is dragged on to a new workspace, the user should at least be presented with a dialog box, asking if the relationships should also be added to the workspace. The whole reason for creating the detail view is to be able to see the relationships of the subset of items!

Eventually, I did fight my way through to a work-around. I have no idea what it was. It was WAY too complicated! Sure enough, I found an error in the model – two tables that should have been linked by a foreign key, were not. So, I created the relationship, and added it to the model. Then, I had the silly, brain-dead idea that I could quickly and easily drive the model changes out to the physical DB. Hah! Stupid, optimistic me! That put me into the never-never land of schema compare, I mean Generate Alter Script, I mean Model -> DB. Which sent me spiraling down into Connection and Alias Hell.

This all happened on Friday. It’s now Monday. I am needing to update the model, but, quite frankly, am scared to. Why? Because I don’t know how much time I will waste on asinine UI design and horrific, unintuitive application behaviors.

As it stands right now, I will be the first and only person to use TOAD Data Modeler in my company. As I am the CTO, I have some say in the selection process of our software. I will repeat what I stated at the start of this diatribe: I WANT to like TOAD DM. I am BIASED towards Quest (now Dell) software, because I really like TOAD. And yet, I find myself absolutely HATING TOAD DM.

Because of my desire to like TOAD DM, I spent 1+ hours writing all this out. That is why I am trying to put in lots of detail. I think that, if these incredibly awful design flaws can be fixed, TOAD DM could be a good program.

But these design flaws really MUST be fixed!

Jonathan Fischer
Chief Technology Officer
CodeLynx, LLC

Hi Jonathan,

I have some really good news for you. UI redesign is in progress. In past we added various complex features to TDM, from Naming Conventions, Support for SVN to Templates… and some time ago realized that it is necessary to stop that activity and focus on basic tasks. That’s why one of our key item for next release(s) is BIG UI REVIEW. Our aim is to minimize actions that are necessary to make basic tasks and make the product more user-friendly and less technical.

We already started that process and added new Quick Search dialog (CTRL+F) to the latest version, improved Model Verification to allow users to fix problems and edit problematic objects etc. Some UI items were modified already (Alignment pane), some will be changed in future.

I think your post somehow proofs that our focus is correct and that our plan is good. Now let me add some comments and explanations. Please consider some of the items to be recommendations, workarounds and tips. Thanks.

Aliases - Please use the Reverse Engineering Wizard to connect to database and reverse engineer your database structure. The Connections dialog will be improved as well as other forms where aliases are used.

Additional info about Aliases: With Aliases additional information and settings are stored. That include object types, e.g. Entities, Procedures… as well as detailed settings.


  • Load Tables Referenced by Selected Tables

  • Load Data Compression for Tables

  • Load Check Constraints…

None of this can be defined in Toad. In TDM when you want to do reverse engineering, you can either use existing alias and use already saved settings or ignore aliases and always define all settings on each step in reverse engineering Wizard. Yes, there is space for improvements, especially on Connections form, but Aliases will not be thrown away completely.

Schema Compare: In Toad you can compare schemas. In TDM you compare models. There is a big difference between the two and there are many factors that affect synchronization features in Toad Data Modeler. For example:

  • Data types can be defined through logical types that do not exist in physically existing databases, Domains, Dictionary Types etc.

  • Toad Data Modeler must correctly resolve the data types when comparing attributes (table columns) properties.

  • Objects must be paired by specific rules, for example in your Database model, schema assignment is not required, but in your database, schema is always present.

  • There can be application variables defined in your models, for example <%ParentTableName%> and the application variables must be resolved during the comparison as well.

In result, the synchronization of your model and your database is more complicated than comparison of two physically existing databases. From technical point of view, the comparison is based on more complicated algorithm that requires more resources. UI can be better and will be better. BTW: There are discussions about simple synchronization, additional feature for really simple situations that might occur frequently. But the full functionality where application variables, domains etc. must be kept in the product.

Recommendation: if you do changes in TDM, compare two models instead of model with live database. If you need to modify something, reverse engineer database to create new model. Save it somewhere. Then do modification to your model and save it under different name. Then compare the two models and generate alter script. Why should you do that? In case you existing database is larger or contains more objects than you need to work with, you will be able to work just with the subset of tables/procs… etc. that you originally reverse engineered.

Workspaces: Again, UI redesign is in progress. Some of the ideas and drafts can be found in attached file (No commitment or guarantee that the feature will be modified this way).

Missing relationships:

In the arcitle you can find link to custom package that adds that functionality to TDM.

I believe it has no sense to explain why something works the way it works when radical change is planned and I hope we will be able to offer you much more intuitive version of TDM.

Jonathan, we will be grateful for additional suggestions and will do our best to change and improve TDM to be the tool for angels interested in modeling database structures in Heaven. And now seriously: thank you for your time and willingness to put this together. It is more than valuable for us.

Thanks again,

Workspaces-Mockup.pdf (280 KB)

Thank you for your reply. I downloaded your macro plug-in, and it worked like a charm! Wonderful!

I am glad to hear that you are putting some effort into improving the UI. I look forward to seeing the results.

I understand that TDM in Generate Alter Scripts has to do more than TOAD does in Schema Compare. I would still recommend looking at the TOAD UI paradigm. It may need to be extended, but it is very easy and intuitive to use. Or, worst case, that paradigm is presented as the “Basic” option, while a more powerful version is presented as an “Advanced” option.

In any case, I greatly appreciate your macro, and look forward to seeing the UI enhancements.

Thanks for your reply!

Jonathan Fischer


thank you. I am glad the macro works fine. I believe the next version of TDM will represent more user-friendly application. It will not be perfect because some changes require time and not all our ideas and designs can be converted to fully functional items in relatively short period of time.

Re Schema Compare: Thanks for your suggestions. Improvements of the Sync & Convert Wizard and all the related features are in our ToDo list (incl mapping of renamed objects etc.) Unfortunately, this is one of the most complicated parts of TDM, that’s why all the changes cannot be done quickly.

Have a great day,