Database Design Demystified: Understanding Generalization and Specification

I was listening to a course on Database Design and Fundamentals, and there were two important terms I heard for the first time: Generalization and Specification.
Let’s get to know them one by one.
#Generalization
If your design contains entities with shared attributes, it’s preferable to create a new entity named General and link it to the entities that share the same attributes. In this case, your design will be clear, and if you want to switch between the entities, it will be easy since they share some attributes and are linked to the General Entity.
For example, if we have a company with two types of employees: developers and designers, we would have Developer Entity and Designer Entity, like this:
Here, we can create a Generalized Entity and name it Employee, and create a One-To-Many relation between the Employee and Developers and Designer Entities, like this:
Generalization is from Bottom to Up, meaning we move from something more detailed to something more generalized.
#Specification
This is the opposite of the first term. You have an entity from which multiple entities can branch out, sharing the same attributes. Therefore, this entity plays the role of the Generalized Entity.
For example, Developers can be Frontend Developers or Backend Developers, and similarly, Designers can be Graphic Designers or UI/UX Designers, and so on.
Here, we will do the same as before but in reverse, resulting in something like this:
Specification is from Top to Bottom.
Keep these two terms in mind when designing your database schema.