I recently joined a new position as SW developer and during the interview process everyone stressed the importance and the pride of the quality standards of the firm in each and every process they have. (This was one of the aspects that made me decide to accept the offer)
When I started inspecting the database I realised that it was far from being perfect, far from being good and far from being not bad. Also I realised that all my team mates do think that the database is complex because the business is complex.
What is wrong with this database then?
- inconsistent naming
- de normalised table (with conflicting data)
- plenty of stored procedures and tvf with if/switch/case based on values in the tables themselves
- tvf that depend on tvf that depend on tvf making the code unreadeable and unmaintainable
- no FK constraints and in some cases PKs
- no distinction between data abstraction and business logic (too many encapsulated TVFs)
I decided to bring the matter up during my next review because I believe my manager (non technical) does not have a clue of what is going on.
I need help to come with a list of aspects to consider to asses the quality of a database design and then assess the score of our database against this list. This will help at least my manager to take steps in the right direction (I hope).
Which points should I consider to asses whether a database is well designed?
Well designed means:
- does it job
- it does not break (or do so in a sensible manner)
- it follows a structure that make it easy to maintain and expand