Thursday, November 22, 2007

Closed source

I'm working on a project in which I have to connect to a database used by a small ERP software.
The database runs over a SQL Server 2005. "No problem!" I thought at all times, because I've been working with SQL Server since its 7.0 release (and I use SQL Server 2005 practically since it was available).
How disappointed I was when I found that the table names were TRAxxx, SUAxxx, STAxxx, etc (where xxx is a number). There are several prefixes, and hundreds of tables for each prefix. I've done reverse engineering in the past, and it doesn't scare me at all (as a matter of fact, I quickly found the tables I need).
I even found that in the tables I examined there are NO enforced relationships. A note to the developers: please read something on referential integrity.

I think there are two main reasons that causes someone to name tables incorrectly:
- Bad database design.
- An attempt to hide database contents.

Without going to the extreme of proposing these people to release the source code, I believe that there are intermediate points. The companies that buy software licenses should own the information, and this includes the possibility of using the data as they see fit.

Is regrettable what I found, in terms of database design, and regarding their cryptic way of naming tables.

I think that when we develop software, our work structure should be clear and transparent. We must give our customers the freedom of choice. We already charged for our work, we do not need to enslave our customers. Let them choose us for our solution's quality rather for lack of choice.

Versión en español: