[Database Design]
The entities under a relational model or relational DBMSs are data-type and relationship dependent. The data-type dependency limits the amount of structures that could be logically represented by database. The relationship dependency, with its hierarchical characteristics that translates in a series of logical relationships and constraints created to interconnect entities, can become very costly as the number of entities in the database grows, resulting in a tightly coupled set of objects, with redundant data (entity identifiers such as primary and secondary keys), and a very complex and hard to maintain iteration path among entities. Even though the relational model is a mathematical model proven to work well, it does not mean that it is an easy model to design, maintain and process entities.
Let’s say for example, that one would want to use this model to describe in realistic details a complex object such as the human body. It is easy to see right away that it would be impossible to have an entity of this type. There is no way to represent such a complex object as a unique type. It is then necessary to break it in parts and sub-parts (entities or tables) and describe for each one of them its characteristics (attribute). What about the actions performed by each entity? The relational model pretty much just allows for entity description, based on a limited set of data-types, and there is no way to add attributes (events) for each one of these entities.
So, continuing with the human body… As we know, it is composed by too many structures (entities) that are very rich in details (attributes) and actions (events) that are totally interconnected to each other. For every one of the body’s entities (i.e. cell, tissue, and organ) should exist a relationship and a counterpart constraint that enforces and guarantees the correct behavior among then. Now, can you imagine maintaining all of these relationships and cascading changes among entities as needed? How much data redundancy would have to be created in the database just to establish the relationships? How about things that cannot be accounted for beforehand, such as a disease that would affect the body structures and generate the need for changes in the attributes and events? The disease may even affect an entity in such a way that a new data-type would be necessary to describe is consequences. Even a very powerful DBMS have a lot of trouble and would need a lot of power to iterate through all of these entities to search, index, modify and return an appropriate result for a query. Of course this is an exaggerated example, but it gives you a good idea why the relational model is not suited for advanced database applications, especially applications that needs to model and handle very realistic and complex objects.
Works Cited
Elmasri, R. & Navathe, S. (2011). Fundamentals of Database Systems [6th Edition]. Boston, Massachusetts: Pearson Education Inc., Addison-Wesley.
Ling, Wang T., & Dobie, Gillian. (2010). Semistructured Database Design (Web Information Systems Engineering and Internet Technologies Book Series). Springer.