Recommended Data Modeling Tools?
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."
http://www.thekompany.com/products/dataarchitect/
$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.
Modeling on a whiteboard is all well and good -- we did it at my job (and still do it) for all of our initial design.
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. While OSS and Free, it's really not very good for this kind of thing and can't auto-generate mappings or anything like that.
I don't really have an answer here, but a data modeling tool is pretty essential unless you expect all of your developers, QA, management, and support to be around forever. You can get away without it, but you'll burn $4K in man hours pretty fast doing it by hand. I know we've burned considerably more than that and our diagrams still suck and are rapidly outdated. (We're in the process of buying tools... but I'm not in the loop by my own choice, except for the C++ debugger).
I assume that you are working with relational databases, although you don't mention it.. (data modeling could mean a lot of things)
:)
Some DBMSs have some decent, albeit limited graphical design tools (MSSQL, Access..)
together from borland does entity relationship diagramming, and so much more. (great tool)
I believe IBM's rational rose 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.
How it's done is, roughly, for a few related tables:
- Create tables using dia's UML's classes.
- Join the tables using UML Association to establish foreign keys.
- Set dia to autofit diagram into a number of pages.
- Add comments, draw pictures, whatever dia can draw.
- Save as an uncompressed XML file, chuck it into CVS. CVS likes text, so don't compress it.
- Optional: Print out pretty diagrams to printer. Dia's autofit is nice.
Repeat above if you can't fit your tables into a set of nice looking pages.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.
Been using Visio for quite some time now.
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
First, Visio is *out*. Basically, it just plain sucks. All I've found it useful for is *very* rudimentary diagrams. It's so slow and cumbersome that I would never chance depending on it for a live db schema. I really wouldn't want to use it for even creating parallel docs for an existing app, it's so bad. (BTW, I have .NET for Enterprise Architects, which includes the newest Visio. Sidebar: VS.NET is great for prototyping but I wouldn't trust my reputation on an app created with it -- it's my bootstrapper.)
Second, after years upon years of experience, I've come to the conclusion that the most effective technique to use is to have a script that creates and populates the db. Tie this in with functions that do backup/restore to/from text files and you can recreate the db (schema *and* data) from any save point from pure init forward. The other advantage to this is that I despise the 'alter table' command; I find it much easier to just drop the table and then re-create and re-populate it. One key point here is that most dbs that I've dealt with (Informix, MySQL, SQL Server & Oracle) do not let you specify the default value for a new column automatically. That means you're gonna have to script the modifications to insert/compute the new column anyway. And, forget about modifying a column type, for extremely non-trivial changes it is nearly impossible (the exception being the changing of a char's or varchar's length).
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). 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.
And unless you're doing hardcore statistical analysis, *never* allow nulls. If you allow nulls in *any* field, your query logic (read: the app logic itself) must be an order of mag more complex to deal with results that have nulls in their field values. Blech! Instead, disallow nulls and be careful to initialize your records properly.
Good luck.
Peace & Blessings,
bmac
For true peace & happiness: www.mihr.com
I work for an Oracle partner company, and we tend to use the Oracle stack. I've found Oracle Designer to be quite adecuate for the task. We use it both for logical and physical data model, and for the script generation. In fact, we also use the tool for frontend generation in some cases. It also has some pretty good code repository tools, with versioning, multibranches, dependency and impact analysis and so forth.
A bit quirky, not to cheap (its part of a bundle of dev tools) but quite a nice thing for Oracle DBs.
I used to love Rational Rose... and nowadays my bloat of choice is indeed Visio. I can't say much about either as I'm a lowly developer and rarely stress them, but Visio has proved useful in some more obscure tasks now and then...
Perhaps it might have been better to list what feature's you're looking for in a data modeler, that way we can point you in the right direction. Still, I'll blather on about my fave...
;)).
I use DBDesigner4. 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.
"Times have not become more violent. They have just become more televised."
-Marilyn Manson
If you really really need ERWin, you cannot afford not to have it. But I dont think most people need it, and CA aint exactly the most customer centric company out there.
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.
meh.
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).
The results for Best Modeling Tool (scroll to last chart) are:
- Winner: Visio 2003 - 37%
- 1st Runner up: Rational Rose - 18%
- 2nd Runner up: Oracle9i/10g JDeveloper - 7%
Eight other products are on the chart.I used DeZign at a contract position this summer and have used Visio Professional in the past. I would not recommend DeZign unless your budget is very tight; it was much less featured than Visio Professional (and couldn't compare to Visio for Enterprise Architects).
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 customer isn't knowledgeable in DB design, then using a less expensive tool will get you more short-term revenue. However if you have a large budget then learning a tool such as ERWin will not only give you better short-term results, but also increase your understanding of database theory and make your skills more marketable in the future.
If you are SERIOUS about your data modeling, ERWin is probably the best way to go. Many professional DBAs probably couldn't do their jobs without it. I would also consider Rational Rose to be on a par with ERWin, but it's ownership by IBM has rendered it "partisian" in some DBAs minds, as is Oracle's product. Erwin has the advantage of not being owned by any company that sells a database, generates code for all of them equally, and is mostly transparent across all of them, especially when transitioning between logical and physical designs. This especially makes it a favorite of consulting companies that have to move from client to client...ERWin also has an excellent tutorial on HOW to do data modeling, which can at least serve as an entry point for someone new to it's practice
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...
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 a null value.
I won't even begin to get in to the evil I've seen applications do to work around stupid NOT NULL declarations...
To get back to the original conversation (and here I agree with the troll), I'm a big fan of textual design. I graphical tools (Visio, etc.) useful when I'm coming in to a preexisting project, but when designing, or modifying, I do prefer vi as a modelling tool. I'm not going to play a how-many-tables dick swinging game, but I will say I administer multiple complex databases for multiple clients under postgres, mysql, and oracle.
Dealing with gui tools hides a lot you need to know. ER relationships make nice pictures, but what's that trigger doing?
I forget what 8 was for.
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 diagrams. a fine one, but not for your task. Access is closer to what you are doing, but a toy nevertheless.
The good tools in this space target multiple databases, and should support code generation and reverse engineering.
The big dog here, with at least 60% of the market is ERWin (now owned by Computer Associates, I think). This product was the market leader for several years. However, it was sold two or three times in the span of a few years. This caused it to stagnate. ERWin today is solid but a bit dated.
Embarcadero ERStudio is much newer, and so it has a more intuitive interface, and better support for HTML publishing and the like. It has some support for reading ERWin models. But because the release in the last year/18 months is essentially a new product, you might find bugs, even crashes.
Don't underestimate the value of reading ERWin models. There are a ton of them out there, and you don't want rebuild them all from scratch.
Tools like Popkin are very complex for the highest end market. If you are a consultant, you would not want to adopt a product like this, unless you serve a very specialized market. You would never be able to introduce a product like Popkin into a smaller site. The complexity of the tool would overwhelm the complexity of the project. Despite the power of the tool, it is very dated, and benefits from a locked-in customer base. I doubt they are finding many new customer sites.
All these tools are very expensive for an individual to purchase. And they have significant annual support fees (think 3000 to license a single user copy, and 750-1000 each year thereafter, for ERStudio or ERWin).
You really need to get the support if you are going to use these products. If you find a signficant problem in mid-project, you'll have a lot of money riding on a timely fix or workaround.
Perhaps you could draw a nice sequence diagram outlining your procedure?
I've used Sybase Power Designer (an older version) before. It's not too bad and a lot cheaper then erwin. Works with lots of database servers, and prints purty wall-sized pictures assuming you've got a plotter or don't mind pasting together a bunch of sheets. Also generates SQL for building/altering databases -- typical stuff.
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 $3000 or more depending on what you get and what other products they bundle in.
Good luck!
"But actually trying to use m4 as a general-purpose langage would be deeply perverse" --ESR
ONE VERY IMPORTANT ISSUE: How well does X software import DDL from Y database and generate DDL for Z database. This is important. This shouldn't be an issue but sometimes it can be. If you have to import data from an Excel spreadsheet, existing database (like mSQL, MySQL), or some exotic ODBC datasource, can X software handle it. Frankly, that's something a professional magazine has to test. That's were downloading said software in trial mode (should be fully-functional) becomes really important. Test this out for yourself. Don't believe the brochure. I had a couple of issues with this. You may be able to import via ODBC, but will you have to edit/grep/replace DDL before doing so. Trivial but annoying...
ERWin also allows the user to seperate the physical model from the data model by design. I don't think DeZign allows you to do this. This may not be an issue for you.
To be honest, although I really like ERWin, I can't justify it's expense unless you work for a bank. Take that however you want it. Seriously, it's expensive and definitely overkill for the simple developer/architect. However, if you're a DBA it's very useful.
I used to use ERWin, but just recently (at a new job) I'm using DeZign. It gets the job done and it's cheap.
What do you mean my sig is repetitive? What do you mean my sig is repetitive? What do you mean....
I somtimes mark up a whiteboard, and take a digital picture before erasing it.
Never know when you are whacking a good idea...
"If you think you have things under control, you're not going fast enough." --Mario Andretti
...make a pretty diagram in Xfig.
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.
Contrary to the popular belief, there indeed is no God.
Well, if you're designing a model that needs to be implemented across several databases (rather rare) then I'd go with ERwin. It's the tool of choice for consultants who work with many databases -- say data warehouse folk.
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 (created_by, creation_date, etc) on every table, no problem. You want to create before-insert and before-update triggers on every table to populate the audit columns, no problem. You get the idea. The Oracle database has amazing features that are not (yet?) ANSI standard, so use an Oracle tool to take advantage of them. Rarely does a company invest millions of dollars in a database platform and development effort, only to decide to port it to another database the next year.
I don't know DB2 nearly as well, but it too has phenomenal features (especially for terrabyte databases, though Oracle is catching up nicely) that are not ANSI standard. Again, unless you are one of the reasonably rare folk who need their code to run on any database, don't worry too much about getting "locked" in to the database your company is using and take advantages of the features you're paying for.
And in all honesty, SQL Server is coming along but is still practically a toy in comparison with the two above. You want enterprise features (scalability, availability, clustering, fail-over, etc.) in your database and SQL Server simply does not have them. Postgres is entirely suitable for use as a learning tool, but that's it. Beyond that I haven't seen a database worth installing, in all honesty.
Good luck,
Scott