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!
Chief Technology Officer