In 1970, Edgar F. Codd published a paper entitled "Relational Model of Data for Large Shared Data Banks
" which led to the development of the relational database as we it know today. Subsequent developments included SQL (Structured Query Language) which was initially used as a user interface for querying stored data. It is interesting to note that the fundamental elements of Codd's model have not changed. The SQL language is now used primarily by programmers for data manipulation.
The most important aspect of a well designed database is called "normalization". This refers to a structural design process in which redundancy is eliminated and overall integrity is achieved. When creating a data model, we like to recall the comments of C.J. Date, another pioneer in the field, who referred to good data design as "formalized common sense". In other words, though we are quite well versed on the principles, we also have the ability to put together a model that works in the real world.
Database Normalization and Integrity
Whether you access your data on the web or use it only on your local network, the foundation of a data oriented application is a well designed and normalized model. Lack of normalization can and will cause a number of problems. If you think that what you are reading is typical marketing fluff, consider the following examples which are issues we have actually encountered in existing production systems.
- A fulfillment scenario where the database contained orders with no identifiable customer.
- Data from a college with students who ostensibly registered before Columbus discovered America.
- Mailing lists with people with no known first name, last name, or address.
Being asked to fix broken systems designed by others has given us a unique perspective on how to build an indestructible database with virtually every conceivable contingency anticipated in advance.
Entity Relationship Modeling
In database design, we maintain the principles of normalization while using a technique generally referred to as Entity Relationship Modeling
. This is a logical process in which the actual nature of the data at hand is considered in the design of the model. The result is a practical, scalable, and flexible model that works.
We primarily use SQL Server
(usually for protoyping). The experience of designing hundreds of mission critical databases enables us to develop a highly structured data repository for your company while maintaining sufficient flexibility to adapt to the ever changing nature of business.