In many interviews for IT analyst or even software architect positions, you may often encounter the following assignment. So read it carefully!
Imagine a perspective and progressive software company, which decided to deliver a sophisticated E-shop. The E-shop should gather various clothing items such as shoes, T-shirts, shirts, etc. from multiple producers. The E-shop is aimed at being a global portal that maximizes the variety of products offered online.
You, as both a software architect and IT analyst have to design a database structure that would be able to effectively record different types of clothes. What do I mean by this?
Not only you do not know, what types of clothes will be provided in the E-shop in the future, you even do not know what types of clothes should be available in the online store at the very beginning of the E-shop. That means that you are neither aware of the products nor of the attributes intrinsic to those products. Yes, you have almost no information about the nature and the form of data you must record in the E-shop!
This is a common starting point of many architects. So how to overcome this obstacle? Your task is to design a data model that is flexible enough to handle above mentioned problems. The data model should reflect a database structure which is able to store any product with unknown list of attributes. Not only you are unfamiliar with attribute names, but also with data types of these attributes. Neither their form, nature of these attributes nor the count of these attributes is known to you.
Solution to this problem lies in employing Attribute typing technique. We can see a certain analogy with Relationship typing technique.
You can find the solution to the challenge as well as detailed description of the techniques in the following course: