EER: Specialisation, Generalisation and Aggregation

The ER Model · 25 min

Core CS · DBMS

Every engineer is an employee, and some employees are engineers

Specialisation and generalisation are one diagram read in opposite directions. You will place five real employees into an EMPLOYEE hierarchy under two different constraint pairs, and watch the strict pair refuse two of them.

Place five employees, watch two get refused
Specialisation and generalisation produce the identical picture, so the finished diagram never records which end you started from. The only part of that picture that promises a reader anything is the letter inside the circle and the kind of line above it.

01 The idea

Two directions, one diagram

Plain ER gives you flat entity types. EMPLOYEE has ssn, name and salary, and every employee has all three. Then the requirements arrive: secretaries have a typing speed, engineers have an engineering type, and only a manager may head a department. Keep all of that in one entity type and the diagram now claims every employee has a typing speed, which is false for most of them, and it has no way to say that heading a department is a manager thing.

The Enhanced ER model, EER, adds three constructs on top of plain ER. The first, and the one that answers the problem above, is the superclass and subclass pair, and it comes with a name for each direction you arrive from. Specialisation is top-down: EMPLOYEE exists, you notice subgroups inside it, you define SECRETARY, ENGINEER and MANAGER below it. Generalisation is bottom-up: CAR and TRUCK exist in two teams’ diagrams, you notice they share registration_no, model and price, and you factor those out into VEHICLE above them.

The finished picture is the same either way. A superclass, a circle below it, a line down to each subclass with a subset symbol on it. Nothing in the drawing records which end you started from, which is why a question asking you to compare the two resulting diagrams has no honest answer beyond that. What the two words name is the design activity, and interviewers use them to check you know how a schema actually gets built. The other two constructs, aggregation and the union type, come later in this lesson and are not about subclasses at all.

A subclass is not a smaller copy of its superclass. It is the same entity, seen a second time under a narrower name: the subclass entity set is a subset of the superclass entity set, so every SECRETARY entity already carries every EMPLOYEE attribute, and the SECRETARY box declares only the ones the rest of the employees do not have.
Superclass and subclassAn entity type and a subgroup of its entities. The subclass entity set is a subset of the superclass entity set, so the link is called IS-A: a SECRETARY entity is an EMPLOYEE entity, not a second one beside it.
Attribute inheritanceA subclass entity carries every attribute of its superclass plus its own, and takes part in every relationship its superclass takes part in. You never redraw an inherited attribute on the subclass box.
SpecialisationThe whole set of subclasses defined on one superclass, such as {SECRETARY, ENGINEER, MANAGER} on EMPLOYEE. One superclass can carry more than one specialisation, each cutting its entities a different way.

02 Worked example

One company, three subclasses, five employees

A small consultancy. EMPLOYEE holds ssn, name and salary, and all five people below have all three. The right-hand column is the extra fact the company also needs about each of them, and it is the reason this lesson exists.

ssnnamesalaryThe extra fact the company needs
111Asha60,000types at 78 words per minute
222Ravi75,000is a mechanical engineer
333Meera90,000heads the Research department
444Nair95,000is a civil engineer, and heads the Design department
555Bose40,000drives the company van

Count how far each extra fact reaches. typing_speed applies to 1 of 5, eng_type to 2 of 5, dept_managed to 2 of 5. Put all three on EMPLOYEE and the entity type asserts that every employee has a typing speed and heads a department. Five of those fifteen cells hold a value and the other ten are empty, and no constraint you can declare would explain why.

EMPLOYEE(ssn, name, salary)         -- superclass · all 5 people have all 3      |    (   )                            -- the specialisation circle · the letter goes in here, section 03    /   |   \                        -- each line carries a subset symbol pointing up   /    |    \SECRETARY(typing_speed)             -- 1 of 5 · AshaENGINEER(eng_type)                  -- 2 of 5 · Ravi, NairMANAGER(dept_managed)               -- 2 of 5 · Meera, Nair -- SECRETARY does not list ssn, name or salary. It inherits all three.-- Asha in full: 111 · Asha · 60,000 · typing_speed 78   = 4 attributes,-- of which SECRETARY declares exactly one.

Lines 6 to 8 are the whole construct. Each subclass box holds one attribute, and each of those attributes is one the other employees genuinely do not have. Everything else about a secretary arrives from line 1 without being written down anywhere else, which is what inheritance means and why the boxes stay this small.

1 · One flat typeEMPLOYEE(ssn, name, salary) holds all five, and nothing tells a secretary apart from a driver
2 · Facts that fit sometyping_speed fits 1 of 5, eng_type 2 of 5, dept_managed 2 of 5; flat, they are empty on most rows
3 · Read downwardspecialisation: EMPLOYEE was already there, and you cut three subclasses out of it
4 · Inherit, not copyENGINEER declares eng_type and nothing else; ssn, name, salary and WORKS_ON all arrive from above
5 · Read upwardgeneralisation: hand somebody the three boxes and they factor the shared three out into EMPLOYEE

Nodes 3 and 5 draw the same arrow. Node 3 got there because EMPLOYEE existed first and the requirements kept adding facts that fitted only some of its rows. Node 5 got there because three separate entity types turned out to share three attributes, which is what happens when two teams’ diagrams are merged. Neither leaves a mark on the finished picture. That is the single most asked thing about this topic, and the answer is direction of discovery, not structure.

Node 4 is the one to hold on to for the rest of the lesson. Asha has four attributes and SECRETARY declares one of them. Nair, once the diagram lets him sit in two subclasses, will have five and declare two. Bose will have three and declare none. In every case the entity is stored once and read through however many boxes it sits in.

03 Mechanics

Four combinations, and the two things they cannot say

The circle carries two independent decisions and every constraint question on this topic is one of them. Disjointness is a statement about the subclasses: may one entity sit in two of them at once? Totality is a statement about the superclass: may one entity sit in none of them? Two yes-or-no answers give four pairs. Here is what each pair does to the same five employees.

The pairNotationThe rule it enforcesWhich of our five it refusesA real case that needs it
Disjoint and total d in the circle, double line up to the superclass Exactly one subclass. Not two, and not none. Nair, who needs two · Bose, who needs none ACCOUNT into SAVINGS and CURRENT at a bank that offers only those two. Every account is exactly one of them, and the diagram is what lets a reader assume it.
Disjoint and partial d in the circle, single line At most one subclass. Possibly none. Nair, who needs two VEHICLE into CAR and TRUCK at a registration office that also registers trailers. Nothing is both; plenty is neither.
Overlapping and total o in the circle, double line At least one subclass. Possibly several. Bose, who needs none PART into MANUFACTURED_PART and PURCHASED_PART. Every part is one or the other, and a part made in-house that is also bought in when demand spikes is both.
Overlapping and partial o in the circle, single line Any number of subclasses, including two, including none. none of the five Our consultancy. Nair is an engineer who manages; Bose is neither. It refuses nothing, so it also promises nothing.

Read the letter and the line separately and the four stop being a list to memorise. The letter is about how many subclasses one entity may be in. The line is about how many it must be in. Disjoint plus partial is the pair people forget exists, because “at most one, possibly none” sounds like one fact said twice until you notice that the two halves are talking about different ends of the diagram.

One note on notation, because sources genuinely differ here. This lesson uses the Chen and Elmasri convention that Indian university syllabuses and placement interviews use: a circle below the superclass, d or o inside it, a double line for total and a single line for partial. Some textbooks leave the circle empty to mean overlapping rather than writing o. UML draws a hollow triangle instead and writes the same two facts as {disjoint} and {complete} beside it. Say which convention you are drawing in and any interviewer will follow you; what is never optional is stating both halves of the pair.

Membership in a subclass has to be decided by something, and EER gives that decision three shapes.

-- attribute-defined: ONE attribute of the superclass decides the whole specialisationEMPLOYEE(ssn, name, salary, job_type)      -- job_type written once, beside the circle  SECRETARY   job_type = 'Secretary'       -- the defining predicate for this subclass  ENGINEER    job_type = 'Engineer'  MANAGER     job_type = 'Manager' -- predicate-defined: one subclass, one condition, no attribute shared with the others  HOURLY_EMPLOYEE   pay_type = 'hourly' -- user-defined: no condition anywhere. Whoever inserts the entity names its subclasses.  Nair -> ENGINEER, MANAGER                -- decided one entity at a time

Line 2 hides a constraint you did not draw. job_type holds one value per employee, so it can name one subclass per employee and no more: an attribute-defined specialisation whose defining attribute is single-valued is disjoint whether or not anybody wrote the d. Run that backwards and it tells you something more useful. An overlapping specialisation cannot be built on a single-valued defining attribute at all. It needs a multivalued one, or it has to be user-defined, which is why line 11 is the only line in that block that can put Nair in two boxes.

Two extensions of the same idea, both fair game in an interview. A subclass may itself be specialised, so ENGINEER can carry a circle of its own with SOFTWARE_ENGINEER and CIVIL_ENGINEER below it; attributes are inherited down every level, and the depth is not limited. And a subclass may have more than one superclass, in which case it is a shared subclass and inherits from all of them at once. That is multiple inheritance, and it turns the hierarchy into a lattice rather than a tree.

Draw the letter and the line as two separate decisions. The letter answers how many subclasses one entity may sit in; the line answers how many it must sit in. Everything else about the subclass, every inherited attribute and every inherited relationship, comes for free and is never redrawn.

Now the construct that is not about subclasses at all. Every employee in the consultancy WORKS_ON projects, and each assignment is reviewed once by a manager with a review_date and a rating. Write that as a sentence and look at what is being reviewed. Not an employee, and not a project: the assignment, the fact that Ravi works on the metro project. The ER model has no way to draw a line from a relationship to another relationship, so REVIEWS has nothing to attach to.

-- what you need to say, and cannot drawEMPLOYEE ---< WORKS_ON >--- PROJECT                 |             REVIEWS                    -- a line from a diamond to a diamond: not allowed                 |              MANAGER -- aggregation: box the relationship together with the entity types it joins,-- and treat the whole box as if it were one entity type[ EMPLOYEE ---< WORKS_ON >--- PROJECT ] ---< REVIEWS >--- MANAGER                                                    |                                          review_date, rating -- (Ravi, metro) is now a thing REVIEWS can point at.-- Meera reviews (Ravi, metro) on 12 March with rating 4.

The design people reach for instead is a ternary relationship, REVIEWS(EMPLOYEE, PROJECT, MANAGER), and it is not the same diagram. A ternary relationship is a set of triples, and nothing in it requires the employee-and-project part of a triple to be an existing WORKS_ON assignment. You can record Meera reviewing Asha on the metro project when Asha has never worked on it, and you now hold the employee-to-project link in two places that are free to disagree. Aggregation makes the assignment itself the thing being reviewed, so a review of an assignment that does not exist cannot be written down.

Aggregation is the one construct in the ER model that lets a relationship be an endpoint. Reach for it when the thing you need to relate to is an association rather than an entity, and check the ternary alternative by asking whether it can record a combination that never happened. If it can, that is the constraint aggregation is buying you.

One last construct, and it is the one aggregation gets confused with, because both are the parts of EER that are not plain specialisation. A category, also called a union type, is a subclass whose members are drawn from the union of several different superclasses. The registered OWNER of a vehicle may be a PERSON, a BANK or a COMPANY, so OWNER is a category over all three, drawn with a u for union in the circle and arcs to each superclass. The part that is tested: a category member inherits from the one superclass it actually came from and from no other, which is called selective inheritance. That is what separates it from a shared subclass, which has several superclasses and inherits from all of them at once. Aggregation turns a relationship into something an entity can relate to; a category turns several entity types into one subclass. They solve different problems, and the only thing they have in common is that neither one is a specialisation.

05 Cheat sheet

The whole of EER on one card

Notation is the Chen and Elmasri convention. The right-hand column is what the question is actually testing each time, and it is where marks are lost.

ConstructWhat it assertsNotationThe trap
SpecialisationTop-down: define subclasses of an entity type that already existscircle below the superclass, subset symbol on each linethe subclass is a subset, not a copy and not a second entity
GeneralisationBottom-up: factor the shared attributes of several entity types into a new superclassthe same finished diagramasked as "the difference"; the answer is direction of discovery, not structure
DisjointAn entity may sit in at most one subclassd in the circled says at most one, never exactly one; the line says the rest
OverlappingAn entity may sit in several subclasses at onceo in the circlesome texts leave the circle empty for this instead of writing o
TotalEvery superclass entity sits in at least one subclassdouble line from superclass to circletotality constrains the superclass; disjointness constrains the subclasses
PartialA superclass entity may sit in no subclass at allsingle linethe default in most diagrams, so an unmarked line is a claim too
Attribute-definedOne attribute of the superclass decides membership for the whole specialisationthe attribute name written beside the circlea single-valued defining attribute makes it disjoint whether you drew d or not
AggregationA whole relationship, with the entity types it joins, treated as one entity typea box drawn around the relationship and its participantsa ternary relationship is not a substitute; it cannot require the pair to exist
Category (union type)A subclass whose members come from the union of several superclassesu in the circle, arcs to each superclassselective inheritance: a member inherits from the one superclass it came from
Four pairs, two independent choicesDisjoint-or-overlapping and total-or-partial answer different questions, so all four combinations exist and all four are drawable. The standard question is to name the four and give one real example of each; giving three and calling the fourth impossible is the standard way to lose it. Disjoint and partial is the one that gets forgotten.
Inheritance is attributes and relationshipsA subclass entity carries every superclass attribute and takes part in every relationship the superclass takes part in. Candidates remember the first half. The second half is what makes “a MANAGER still WORKS_ON projects” true without WORKS_ON being drawn on the MANAGER box, and it is the difference between reciting the definition and having used it.
The pair is the only part that promises anythingOverlapping and partial refuses nothing the superclass would have accepted, so drawing it tells a reader of the diagram nothing they did not already know. Every constraint you can honestly tighten is a fact somebody downstream no longer has to check. Draw the weak pair when it is true, and know that you have drawn a diagram that asserts almost nothing.

06 Where & why

Where the hierarchy goes when it meets a real engine

No mainstream relational engine stores an EER hierarchy the way you drew it. What happens instead is that the hierarchy becomes a table layout and the constraint pair becomes a declared constraint, and the four engines below make that trade in four visibly different ways.

PostgreSQL
Table inheritance exists, and it is still not the answer

CREATE TABLE engineer (eng_type text) INHERITS (employee) is the closest any mainstream SQL engine comes to drawing your subclass directly, and a query on employee returns the child rows too. Read the caveats before using it: a UNIQUE or PRIMARY KEY declared on the parent is not enforced across the children, and a foreign key referencing the parent does not see rows that live only in a child. Most teams draw the hierarchy in the diagram and map it to ordinary tables.

Oracle
Object types are the closest thing to a real subclass

CREATE TYPE engineer_t UNDER employee_t (eng_type VARCHAR2(20)) gives genuine attribute inheritance inside the engine, and substitutability means a table of the supertype can hold subtype instances. It is the one place where the EER picture survives into the database almost unchanged. Most production Oracle schemas still map to plain relational tables, because every tool downstream expects columns.

MySQL · SQL Server
No subclass construct, so the mapping is the whole design

Neither engine has anything like a subclass, so the specialisation becomes one of three layouts and the constraint pair decides which is safe. Subclass tables with no superclass table cannot store an employee who is in no subclass, so that layout needs a total specialisation. One wide table with nullable subclass columns handles overlapping without complaint and needs a CHECK to stop combinations you never meant to allow.

SQLite
One table and a CHECK, which is attribute-defined specialisation

A single table with job_type TEXT NOT NULL CHECK (job_type IN ('Secretary','Engineer','Manager')) is attribute-defined specialisation implemented literally. The column holds one value, so disjointness comes free; NOT NULL with no “none of them” value in the list is totality. What it cannot express is overlapping, because one column cannot hold two answers, which is the same limit the diagram already told you about.

The hierarchy does not survive into the tables. The constraint pair does, and it survives as something else: disjoint becomes one type column or one CHECK, total becomes NOT NULL or a trigger, overlapping becomes one boolean per subclass or one row per membership. Decide the pair on the diagram, then pick the layout that can still enforce it.

07 Interview questions

What they actually ask

EER arrives right after ER in almost every DBMS interview, and it is asked with a diagram in front of you rather than as a definition. Expect to be handed a hierarchy and asked what the circle means, then what happens if you flip one half of it.

What is specialisation, and what is generalisation?
Specialisation is defining a set of subclasses of an entity type that already exists: EMPLOYEE is there, and you cut SECRETARY, ENGINEER and MANAGER out of it because those groups need attributes the rest do not. Generalisation is the other direction: CAR and TRUCK are there, they share registration_no, model and price, and you factor those out into a new VEHICLE above them. The finished diagram is identical, so a question about how the two results differ has no answer beyond that.
If the diagram is the same either way, why do both words exist?
Because they name two different design activities, and the words are how an interviewer checks you know how a schema gets built. Top-down happens when one entity type keeps collecting attributes that apply to only some of its rows. Bottom-up happens during integration, when two teams’ entity types turn out to be two views of one thing. Elmasri treats them as one construct read in opposite directions, and so should you.
What exactly does a subclass inherit from its superclass?
Every attribute, and participation in every relationship the superclass takes part in. So ENGINEER declares only eng_type; ssn, name and salary arrive from EMPLOYEE and are never redrawn. The relationship half is what candidates leave out, and it is the half that makes an ENGINEER still WORKS_ON projects without WORKS_ON appearing anywhere near the ENGINEER box.
Is a subclass entity a separate entity from the superclass entity?
No, it is the same entity. The subclass entity set is a subset of the superclass entity set, which is why the link is called IS-A: a SECRETARY entity is an EMPLOYEE entity rather than a second one standing beside it. Two rows in two tables after you map it to a relational schema is an implementation choice, not two entities. Getting this wrong is how people end up storing the salary twice.
Disjoint or overlapping, total or partial. What do the four combinations mean?
Disjoint means an entity may sit in at most one subclass; overlapping means it may sit in several. Total means every superclass entity must sit in at least one; partial means it need not. They are independent, so all four exist: COURSE into UG_COURSE and PG_COURSE at a university whose calendar lists nothing else is disjoint and total, and an EMPLOYEE hierarchy with a promoted engineer and a driver in it is overlapping and partial.
Total and disjoint sound like the same constraint. Draw the distinction.
They constrain opposite ends of the diagram. Disjointness is a statement about the subclasses: their entity sets do not intersect. Totality is a statement about the superclass: none of its entities is left over. Either can hold without the other, and the case people miss is disjoint plus partial, where every entity is in at most one subclass and some are in none at all.
What is a defining predicate, and what makes a specialisation attribute-defined?
A defining predicate is the condition that decides which superclass entities belong to a particular subclass, written on the line to it: HOURLY_EMPLOYEE is pay_type = 'hourly'. When one single attribute of the superclass decides membership for every subclass in the specialisation, the specialisation is attribute-defined and that attribute name is written once beside the circle. If there is no such condition anywhere it is user-defined, and membership is decided one entity at a time by whoever inserts it.
Is IS-A a relationship type like WORKS_ON?
No, and the notation keeps them apart on purpose. WORKS_ON connects two entities that are different things and can carry its own attributes and cardinalities. IS-A connects one entity to itself under a narrower name, so it has no attributes of its own, no cardinality ratio to choose because it is one-to-one by construction, and no diamond: it is drawn as a line with a subset symbol. Several textbooks do call it a class/subclass relationship informally, and they mean the same structure.
What is aggregation, and when do you actually need it?
Aggregation treats a whole relationship, together with the entity types it joins, as though it were a single entity type, so another relationship can connect to it. You need it when the thing being related is an association rather than an entity: a manager reviews an (employee, project) assignment, not an employee and not a project. Without it there is nothing to attach REVIEWS to, because the ER model does not let a line run from one relationship to another.
Why not just draw a ternary relationship instead of using aggregation?
Because a ternary REVIEWS(EMPLOYEE, PROJECT, MANAGER) is a set of triples, and nothing in it requires the employee-and-project part to be an existing WORKS_ON assignment. You can record a review of a pairing that never happened, and the employee-to-project link now lives in two places that are free to disagree. Aggregation makes the assignment itself the thing being reviewed, so that combination cannot be written down.
How is a category, or union type, different from an ordinary subclass?
An ordinary subclass has one superclass and inherits from it. A category has several superclasses and its members are the union of entities drawn from them: the registered OWNER of a vehicle may be a PERSON, a BANK or a COMPANY. The tested part is that a category member inherits from the one superclass it actually came from and from no other, which is called selective inheritance. A shared subclass also has several superclasses but inherits from all of them at once.
You are designing this for real. When do you leave the specialisation out?
When the subclasses add no attributes of their own and take part in no relationships of their own. If SECRETARY, ENGINEER and MANAGER differ only in the value of job_type, then one EMPLOYEE entity type with that attribute says everything the hierarchy says, and it costs one column instead of three tables and three joins. Draw the hierarchy when a subclass genuinely has something the others do not, and be honest that what you buy is enforceable structure, not tidiness.

08 Practice problems

Six to work through

For every one of these, name the constraint pair before you draw anything, and write the sentence of real-world policy you are relying on beside it. A pair with no sentence behind it is a guess that will read as a claim.

Name the pair

Easy
Give the constraint pair for each of these five specialisations, and beside each one write the single sentence of real-world policy you are relying on: (a) BOOK into HARDBACK and PAPERBACK in a library catalogue; (b) MEDIA_ITEM into DVD and AUDIO_CD at a public library; (c) PERSON into STUDENT and STAFF at a university; (d) TRANSACTION into DEPOSIT and WITHDRAWAL in a ledger of cash movements at a counter; (e) ADDRESS into BILLING_ADDRESS and SHIPPING_ADDRESS in an online store.
Follow-up
Not one of the five can be answered from the sentence alone. Three of them turn on what else the organisation stores, and two turn on what a single entity of the superclass actually stands for. Sort them into those two groups before you commit to any pair.
Show the hint
For each one, try to describe a member of the superclass that sits in two subclasses at once, and then a member that sits in none. Whether you can invent those two is the whole answer.

Read the notation

Easy
Four EER fragments, described in words. For each, write the one-sentence English rule it enforces, and name one entity the diagram would refuse to hold: (a) a circle holding d with a double line up to the superclass; (b) a circle holding o with a single line; (c) a circle with no letter in it, a single line, and the attribute status written beside the circle; (d) a circle holding d with a single line, where one of its three subclasses carries a circle of its own with o and a double line below it.
Follow-up
One of the four hands you a constraint that nobody drew, and you should be able to say what would have to change about that one attribute for the constraint to go away. A different one of the four has an entity that inherits from two levels at once, so say how many attributes it ends up with if each box declares two.
Show the hint
Answer two separate questions for every fragment: how many subclasses may one entity sit in, and how many must it sit in. The letter answers the first; the line answers the second.

Where the box goes

Medium
The consultancy from this lesson now files every review under a QUARTER, and the same manager may review the same assignment again in a later quarter. Three designs are on the table: (a) aggregation over WORKS_ON, with a ternary REVIEWS joining that aggregate, MANAGER and QUARTER; (b) aggregation over WORKS_ON, with a binary REVIEWS to MANAGER carrying quarter as an attribute of the relationship; (c) no aggregation at all, and a ternary REVIEWS over EMPLOYEE, PROJECT and MANAGER with quarter as an attribute. For each, state what it can record that the others cannot.
Follow-up
Two of the three silently cap the number of times one manager may review one assignment at one, and they do it for the same reason. Name the two, and give the smallest change to each that lifts the cap without turning it into one of the other two designs.
Show the hint
Write each relationship out as the set of tuples it actually is, then count how many tuples in that set can carry the same assignment and the same manager.

The pair that changed

Medium
A hospital models PATIENT specialised into INPATIENT, with ward and bed_no, and OUTPATIENT, with appointment_slot, drawn as disjoint and total. On Monday a patient arrives at outpatients and is admitted to a ward the same afternoon. On Tuesday a patient is registered for a blood test with no appointment slot and no ward. For each of the two, name which half of the constraint pair it violates, give the smallest edit to the diagram that admits it, and say what the diagram can no longer promise afterwards.
Follow-up
Each patient on its own points at one edit, and making both leaves you with the pair that asserts nothing about a hospital. There is a third design that admits both patients and still promises something, so the two edits are not the only answer available to you.
Show the hint
If the answer to "which subclass is this person in" can change over the course of one afternoon, ask whether it is really a property of the person.

Generalise three account types

Medium
Three teams hand you three entity types: SAVINGS_ACCOUNT(acc_no, holder, balance, interest_rate), CURRENT_ACCOUNT(acc_no, holder, balance, overdraft_limit) and LOAN_ACCOUNT(acc_no, holder, balance, emi). Produce the generalised diagram: name the superclass, list exactly which attributes move up and which stay down, and state the constraint pair you would draw together with the sentence of bank policy it asserts.
Follow-up
One attribute appears in all three lists and still must not move up, because it is not the same fact in all three. Name it, and say what goes wrong the first time somebody sums that column across the superclass.
Show the hint
Generalise only what is genuinely one fact. Try writing a single sentence that defines each shared attribute for all three types, and watch for the one where the sentence needs an "or".

Map it to tables

Hard
Take the EMPLOYEE specialisation from this lesson: SECRETARY(typing_speed), ENGINEER(eng_type), MANAGER(dept_managed). Write out three relational mappings: (a) an EMPLOYEE table plus one table per subclass holding only the key and the subclass attribute; (b) subclass tables only, with ssn, name and salary repeated inside each; (c) one wide EMPLOYEE table with all three subclass attributes as nullable columns. For each, say which of the four constraint pairs it can still enforce using declared constraints alone, and which it can only enforce with a trigger or application code. Then pick one for our overlapping-and-partial company and state what it costs.
Follow-up
One of the three cannot store Bose at all, and that same one writes Nair’s salary in two places. Say which declared constraint, if any, keeps those two salary values equal, and name the problem from the first lesson of this course that you have just walked back into.
Show the hint
For each mapping, try to insert Bose and then try to insert Nair, and write down both what the tables refuse and what they accept far too easily.