many of you might have a misconception that Generalization is like De-normalization but it’s not. Well I have some keynotes about this:
- When generalizing it’s critical that the entities satisfied with all the rules of normalization, i.e. it must go through each and every normal form (1NF, 2NF, 3NF, BCNF, 4NF and 5NF).
- Generalization can be defined as combining similar entities into single entities.
- It also creates a more flexible and elegant database design that is easier to query and extend. So there are three conditions for the generalization:
- Look for entities with the similar kind of attributes, or entities that share some attributes.
- Look for types of entities that might have an additional similar entity added in the future.
- Look for the entities that might be summarized together in reports.
- The techniques that are essential when designing a generalized entity is that:
- Use a lookup entity to organize the types of entities.
- Employing the Supertype or Subtype patterns to the different entity types.
- Generalized databases tend to be data-driven, have fewer tables, and are easier to extend.
- Don’t merge unlike entities just to save programming because the result will be more complex programming.
- So knowing when to generalize and when to segment can be an art form and requires quite a bit database experience.
- It can be thought of as a buffer against over-complexity and consciously working at understanding generalization is the key to becoming an excellent data modeler.
As you know that it’s very vast topic but these are some thoughts of mine which I have learned from several sources. I am trying to explore more on this…