Recommended Data Modeling Tools? 58
dnxthx asks: "After performing a fairly comprehensive web search (including Slashdot) I came to the (possibly incorrect) conclusion that there were no high-visibility sites that comprehensively reviewed and compared data modeling tools such as ER/Studio, ERWin, DeZign for Databases, System Architect, or Visio for Enterprise Architects. Since some of these tools can be quite expensive (ERWin is about $4K US it seems), I was wondering what the Slashdot community's experiences were with data modeling tools such as these, or some that our group has overlooked."
Re:Some make pretty pictures... (Score:3, Insightful)
The problem is, that whiteboard eventually needs to be erased. And when new people come on board drawing the same damn picture on the board over and over is tedious, not to mention error prone and bloody difficult for anything but high level representations.
We copied the whiteboard drawings to paper and then did some basic modeling in Dia [lysator.liu.se]. While OSS and Free, it's really not very good for t
All night programming sessions (Score:1)
Never know when you are whacking a good idea...
Re:All night programming sessions (Score:2)
Most of our design sessions are done on the 4'x6' whiteboard in my cube (yes, I have an astoundingly large cube; there's one other person in it, but it could house 4 people very comfortably). A digital camera would be a good start. I think it was even
Re:All night programming sessions (Score:1)
Data Architect by The Kompany (Score:4, Informative)
$60 USD for the download version. I used it for my last Database design project (first on MySQL, then moving that model to Postgres), and it was great. Made my life a lot easier. Available on Linux, Windows, and OS X.
Some options.. (Score:4, Interesting)
Some DBMSs have some decent, albeit limited graphical design tools (MSSQL, Access..)
together [borland.com] from borland does entity relationship diagramming, and so much more. (great tool)
I believe IBM's rational rose [rational.com] may also do it.
Since my job includes SQL design as a subset of my duties (i'm a developer/architect, not a DBA) these two tools are significantly more valuable than ERWin.
I just wish I could get my boss to buy them.
dia & tedia2sql (Score:5, Informative)
How it's done is, roughly, for a few related tables:
Congrats! You have have fully printable, documentated, usable SQLs, and have version control on the schemas too. (Missing step is "4. Debug")
P.S. tedia2sql is written in easily hackable perl.
Visio (Score:3, Informative)
Negatives:
-Fairly resource-intensive program
-Takes time to find all the features and figure out all the tricks and shortcuts to operating it
-An abundance of features
Positives:
-Allows for creativity in customizing tools/settings/functions for personal use
-Covers many business modelling themes/motifs
-An abundance of features
Re:random rants (Score:4, Insightful)
Dont really know about the rest, but in Oracle you just do a
create table foo (bar varchar2(10) default 'whatever')
Not quite sure, but this sounds like ANSI92 to me.
Of course, maintaint anything else than a 5 tables model by hand is a big PITA.
And also, as a mini-rant, I have to say that the use of foreign keys has *never* been necessary in any db I've designed (and I have created very complex db apps with 30-70 well-connected tables).
Well, that's just plain wrong. Declarative referential integrity saves a LOAD of work, makes your data model self-documenting, easier to maintain, and believe me, most modern databases know have query optimizers that work wonders on them.
Of course, unless you charge by the hour, want to have to code on each of your 50 tables for such a basic thing as referential integrity, and want to make your database a pain to work with. If that's your objetive, you can also code primary key logic too
My point here is that your accessor logic (so-called middleware) is what manifests the "foreign" relationship and if that's screwed then your app just doesn't work. Slowing the db down to do all that referential integrity is a waste of time. You've either got the middleware right or not.
It really doesn't slow things much, as long as you have the proper indexes, which you should have in any case, as usually foreign keys in a data model represent relationships you are going to use to join different tables...
This is, unless you are working with a very toy-like data model with 100 records on each table.
Re:random rants (Score:1)
And, as you say, most foreign key relationships are for indexed fields or groups of fields, which to my
Re:random rants (Score:1)
Again, in Oracle:
alter table foo (add column bar varchar2(50) default 10)
The rule is, the columns you add must be either nullable or have a default. Check the manual, you might be amused on the things you can do.
I *do* perform the primary key checks before I ever issue an insert. Why?
I don't like to parse db error message strings, so I perform N+2 select queries beforehand to ensure that if the inser
Re:random rants (Score:1)
Hmm, I know what has worked for me and I *know* that my apps *never* have bugs. And that is no hyperbole. And I know that no one has *ever* written a book on how to write a bug-free app of any significant complexity. I'd love to read it, though, if/when it happens.
And, BTW, I'd really rather not come across arrogant or cocky, but text is a bad way to represent in
Re:random rants (Score:5, Insightful)
If you don't have referential integrity enforced via foreign keys, how do you know your "accessor logic" is correct? Or more importantly, how do you know when it's wrong? Trust me, if you do not enforce referential integrity you can have subtle problems that do not manifest until after you have corrupted your data, long before you're at the "just doesn't work" stage. (Eg, child records with no parents). It is far, far more sensible to leave this to the DBMS to manage and optimise the rare cases where this might cause performance problems. I'm sure you're a god who gets this right in every single case without the DBMS' help, but we mortals are better off leaving it to Oracle (or Postgres, or whatever.)
And yeah, if you don't know what nulls are for, don't use them.
Re:random rants (Score:1)
In fact, in Oracle last time I checked "" IS null
Odd, eh?
Re:random rants (Score:1)
If, for example, your varchar(n) field type didn't have the ability to store a null, you would have to specify
Re:random rants (Score:1)
More specifically, do you not design your software such that all your business logic for a particular table is located in the same p
Re:random rants (Score:2)
Reasons why you still need FKs.
1. Programmers make mistakes. If they were perfect you wouldn't need a whole lot of things besides FKs. But people are human. Having a data architect and a programmer work on relations is better. (two heads are better than one?) Getting messed up data is one of the worst things you can do to the reliablity of an application. You c
Re:random rants (Score:1)
Sure, we all make mistakes, but the really good pro
Re:random rants (Score:2)
>we all make mistakes
Then you have these statements that assume that programmers do not make mistakes;
>good programmers find their mistakes and fix them
and
>if my query is doing joins between indexed keys, and I've ordered my
and
>why can't all the middleware be implemented using constraints?
People make mistakes. They happen. Thats why software development is evolving. Thats is why its good to have checks and double checks. Especially at very little cost.
> IMO it is still just
Re:random rants (Score:1)
You can *not* have two different design specs implemented that *modify* the same data. Read-only apps don't count. There would be no c
Re:random rants (Score:1)
I totally agree with you, but I've just went through this situation and when the client is motivated you can't just throw out technical/"because its not clean" reasons. There are lots of things which should not happen but they do.
>how do you set up a FK relationship between a table that has a field that, depending on another integer field, can be a link to any of N other tables? Is there a standard for this?
I th
Re:random rants (Score:1)
Actually, my clients are always *totally* satisfied with the results of my work, and no client I have ever worked for has given two sh*ts how I got the job done, so long as the programs worked. There are *never* any bugs in my finished product. I know it sounds ridiculous, bu
Erm, you're a DBA? (Score:2)
I hope you're trolling, and not actually deploying software.
This statement is analogous to "I have to say, I've never seen the use of backups to be needed on any filesystem I've worked with."
And unless you're doing hardcore statistical analysis, *never* allow nulls.
What the hell are you talking about? Quick - what's your employer's mother's sister's middle name? Hm, maybe that's
Re:Erm, you're a DBA? (Score:1)
Sorry to disappoint, but I do, and it may just happen that you end up using my software on *your* machine, someday, God Willing
This statement is analogous to "I have to say, I've never seen the use of backups to be needed on any filesystem I've worked with."
Though I'm a huge fan of hyperbole, that is an absurd analogy.
What the hell are you talking about? Quick - what's your employer's mother's sister's middle name? Hm, maybe that's a nu
Re:Erm, you're a DBA? (Score:2)
>but I will say I administer multiple complex databases for multiple clients under postgres, mysql, and oracle.
Um... You might want to pick up an db optimizer book to see why nulls in general are evil.
Nulls are funky beasts. They don't represent anything, including other Nulls themselves. This is as far as SQL standards define them and leave the ugly details to the vendors. What this
Re:random rants (Score:2)
Well, there are two ways of looking at the typical system. Take a web application as an example: Either a) a database is where good objects go to rest when you don't need them, or b) your code is basically an engine for transforming HTTP requests into SQL statements, and then transforming SQL result sets into HTML.
I think you and I are in the
Re:random rants (Score:1)
I don't see it in either of the ways you mention. I see software, regardless of architecture, as made up of three interconnected realms:
1. Spacial
This is the layout of your data types. In C/OO, it's your structs, class data members, representation for enums, etc. In a RDBMS env, it's your table schemas.
2. Temporal
This is the collection of routines that modify your data structures. In an C/OO env, it's your library fcts and class member fc
Re:random rants (Score:1)
Interesting perspective.
And Prevaler looks to me to be just a memory RDBMS system, but I disagree with them that the db does *not* have to be stopped to dump the memory image to persistent storage. I feel that in some db apps, you would get bad results occasionally from some race conditions, which would be very difficult to track down.
I'm not sure what part of their literature you're referring to, but they can do wha
Re:random rants (Score:3, Interesting)
I don't overlook that; I actively repudiate that.
One of the fundamental notions of object-oriented programming is that is an object is data plus behavior. If you have several different chunk
From the Oracle camp (Score:1)
A bit quirky, not to cheap (its part of a bundle of dev tools) but quite a nice thing for Oracl
From the MS side of the fence... (Score:1)
List what you need, please. (Score:4, Informative)
I use DBDesigner4 [fabforce.net]. It's free/GPL, so the price is at least a feature you're looking for. It's also available on Windows, & KDE/Gnome (not sure what widget toolkit it uses), so that's a plus (or minus depending on your religion
It's also fully optimized for MySQL if that's your platform, but it can support any ODBC database, Oracle, or MSSQL. It has a very intuitive (and pretty, IMO) graphical interface, with great, easy-to-use tools for visualizing, grouping, and relating your data. It also features a graphical Query Builder that lets you point/click your way through complex queries, returning SQL you can insert into your code. It allows reverse engineering of any database it can connect to, as well as synchronization so you don't have to do the setup work after you model, like you might with, say, Visio.
It's not UML; it's really designed specifically *for* relational databases, so if you're just looking for a UML data diagram builder for internal data representation, this is probably not the tool for you.
But if you are using a relational database, I don't think you can go wrong with it. It's at least worth a download.
Experience speaking (Score:2)
ER/Studio is a close second on functionality, and wins IMO on value delivered and ease of use. It does quite a lot.
Visio...might seem to work ok at first, but will likely end up pissing you off. I came to this conclusion for both it's data modeling capabilities and the rather hamstrung UML additions.
I've used ERWin and DeZign... (Score:3, Funny)
And personally I find them to be about as useful as a pen and paper, and much more expensive. Of course, I felt the same way about our DBA (she was about as useful as a pen and paper, and much more expensive).
Builder.com Readers' Choice (Score:5, Informative)
The results for Best Modeling Tool (scroll to last chart) are:
DeZign Thoughts (Score:1)
The question always boils down to: what is your budget and what is your target market? If you are in the sub $500 market I would recommend Visio Professional as the tool has several other uses besides plain data modelling. Likewise, if your cu
Another vote for ERWin (Score:3, Informative)
On a side note, ERWin is NOT as object model-centric as Rose and some others, as it is old enough to have been developed before object modeling became cool. But that is a minor quibble.
I also find a good set of 3x5 filecards (taped up to a whiteboard or large construction paper) an excellent starting point for my models, particularly when trying to model those main logical entities that end up driving the entire design. They have the advantage over whiteboards of being at least partially on paper should someone erase the board...
Re:Another vote for ERWin (Score:3, Interesting)
Agreed! Index cards are a highly underrated technology. They're durable, easily manipulated, have a great UI, and can be used collaboratively. Plus, they don't cost $4k per user.
They have the advantage over whiteboards of being at least partially on paper should someone
wide range of tools means define your requirements (Score:1)
i assume the later (because i have nothing to say about uml tools). if you do serious design work for medium complexity apps, you can immediately eliminate drawing tools like visio and toys like access.
visio is simply a clip art tool for dia
Sybase PowerDesigner not bad (Score:2)
The only thing to look out for is which 'version' you get -- this is one of those products where you pay extra for specific features, so you'll pay anywhere from $800 or so to over $3
how well does it import/export DDL from X database (Score:2, Interesting)
Draw things on paper, then... (Score:2)
Yes, Xfig. It will let you place all the arrows and boxes with names, but it will never pretend that it understand what you are doing, and you will still have to understand your data structures, as you should.
data modeling tools (Score:1)
On the other hand, if you're working with Oracle you really want to go with Designer. It's not being terribly actively maintained, and will likely be replaced at some later point by JDeveloper, but at this point it is unsurpassed for functionality. You want to generate audit columns (c