picture by Chamblin1 via Flickr
I’m going to do something different this month and reflect on some observations of the IT industry. My comments will focus on database-related topics. This is a smattering of ideas that is not intended to be comprehensive. I’m hoping that this article will stimulate dialogue. I welcome comments on my opinions as well as your own insights.
Continue reading IT Reflections
picture by Sir.I via Flickr
We often perform database reverse engineering as part of our consulting work. We have found that it’s common for databases to contain derived data. Derived data is data that can be computed from other base data. Often, the storing of derived data is a mistake and it would have been better if developers instead computed on the fly.
Continue reading Be Careful with Derived Data
A diffuse relationship is one of a group of similar relationships, which broadly apply to entities in a model. We can show them explicitly, but such an approach can become verbose and obscure the deeper content of a model. We coined the term “diffuse relationship” as we haven’t seen this phenomenon named by others.
Continue reading Diffuse Relationships
A symmetric relationship is a self-relationship with the same multiplicity and role name on each end. Symmetric relationships are acceptable for conceptual models. But they are problematic for logical and physical models – you should rework the model to eliminate them.
Continue reading Beware of Symmetric Relationships
In a blog last year we discussed database archaeology, which is another name for database reverse engineering. Reverse engineering is the inverse to normal development. We start with an application and work backwards to understand the software and infer its content.
This month we’ll take a further look at database reverse engineering, from the perspective of a simple case study. We’ll reverse engineer the database beneath WordPress and populated with a snapshot of the data for this website. The case study illustrates mechanics and the kinds of insights that reverse engineering can provide.
Continue reading A Database Reverse Engineering Case Study
picture by Greg via Flickr
This article is the second in a series of two blogs that present our grading scale for database quality. We assign separate grades for the quality of a database design (previous blog) and the underlying model (this blog). The design grade measures the quality of the database syntax. The model grade measures the quality of the semantic concepts underlying the database. Applications can have different design and model grades.
Continue reading Database Grading, Part 2: Database Models
picture by Greg via Flickr
While working on database projects, we often find ourselves doing reverse engineering. Reverse engineering is the inverse to normal development. Developers start with an application and work backwards to understand the software and infer its intent. Reverse engineering can apply to a variety of artifacts, such as hardware, programming code, and databases. Our focus here is on relational databases.
There are many reasons for database reverse engineering. One reason is to assess software quality. For example, you may want to assess the quality of a vendor product or an internal legacy application. Information systems revolve about a database, so you can use database quality as an indicator of software quality.
This article is the first in a series of two blogs that present our grading scale for database quality. We assign separate grades for the quality of a database design (this blog) and the underlying model (next blog). The design grade measures the quality of the database syntax. The model grade measures the quality of the semantic concepts underlying the database. Applications can have different design and model grades.
Continue reading Database Grading, Part 1: Database Designs
A data warehouse is a database that is dedicated to data analysis and reporting. It combines data from multiple operational applications and provides one location for decision-support data. A warehouse should include staging tables — one staging table for each source table or file.
Continue reading Data Warehouses Should Have Staging Tables
Do you use SQL as part of your work? If so, would you like to use it with greater proficiency?
Check out my new free video course on Udemy — Advanced SQL Queries – Subtleties of Joins. In this course we study different ways of phrasing database joins and their trade-offs.
Continue reading Free Video Course: Advanced SQL Queries – Subtleties of Joins
picture by mab7752722 via Flickr
Once you’ve created a data model, how do you document it? You need to deliver the model’s content to others – to business sponsors, other developers, and posterity for purposes that you may not envision. This article looks at options for documenting data models and their trade-offs.
Continue reading Documenting a Data Model