Subtype Mapping
There are three ways to implement subtypes in the database. All three will be discussed in this tutorial.
Objectives
This tutorial covers the following objectives:
- State and apply the table, column, identifiers, relationship, and integrity constraint rules for mapping:
- Supertype and subtype implementations
- Supertype and subtype arc implementations
Purpose of Supertype and Subtype Implementations
- A carpenter who is building your dream house may know that you will use different types of light bulbs all around the house.
- However, if you do not provide information on where certain types of light bulbs should be installed, you could end up with an overly bright bedroom and a dimly lit kitchen!
- Mapping supertypes and subtypes makes sure that the right information gets stored with each type.
Supertype Implementation: Single Table
- This choice produces a single table for the implementation of the supertype entity and its subtypes.
- This is also called “single-table (or one-table) implementation.”
- Rules:
- Tables: Only one table is created, regardless of the number of subtypes.
- Columns: The single table gets one column for each attribute of the supertype, along with the original optionality of the attribute.
- Rules (cont.):
- The table also gets a column for each attribute belonging to the subtype, but the columns all become optional.
- Additionally, a mandatory column should be created to act as a discriminator column to distinguish between the different subtypes of the entity.
- The value it can take is from the set of all the subtype short names (FTE, PTE, OTR in the example).
- This discriminator column is usually called_type, which would be epe_type in the example.

- Rules:
- Identifiers: Unique identifiers transform into primary and unique keys.
- Relationships: Relationships at the supertype level transform as usual. Relationships at the subtype level are implemented as optional foreign-key columns.
- Integrity constraints: A check constraint is needed to ensure that for each particular subtype, all columns that come from mandatory attributes are not null.
- In the conceptual model, salary is mandatory for fulltime employees and hourly rate is mandatory for parttime employees.
- When the EMPLOYEE supertype is implemented as a single table in the physical model, these attributes become optional.
- A check constraint is needed to enforce the business rules modeled in the ERD.
- In the example, the code for the check constraint would look like this:
- CHECK (epe_type = ‘FTE’ and salary is not null and hourly_rate is null and agy_id is null)
- OR (epe_type = ‘PTE’ and salary is null and hourly_rate is not null and agy_id is not null)
- The code checks that if it is a full-time employee (epe_type = ‘FTE’), then a value must exist in the salary column and the hourly_rate and agy_id columns must be empty.
- Conversely, if it is a part-time employee (epe_type = ‘PTE’), then a value must exist in hourly_rate and agy_id, but salary must be left blank.

When Do You Choose the Single Table/Supertype Implementation
- The single-table implementation is a common and flexible implementation.
- It is the one you are likely to consider first and is especially appropriate where:
- Most of the attributes are at the supertype level.
- Most of the relationships are at the supertype level.
- Business rules are globally the same for the subtypes.
Subtype Implementation: Two Table
- This is also called “two-table implementation.”
- You create a table for each of the subtypes.
- So, in reality, you could have more than two tables, if you had more than two subtypes.
- Rules:
- Tables: One table per first-level subtype.
- Columns: Each table gets one column for each attribute of the supertype along with its original optionality.
- Each table also gets one column for each attribute belonging to the subtype along with its original optionality.
- Rules (cont.):
- Identifiers: The primary UID at the supertype level creates a primary key for each table. Secondary UIDs of the supertype become unique keys in each table.
- Relationships: All tables get a foreign key for a relationship at the supertype level, with the original optionality.
- For relationships at the subtype levels, the foreign key is implemented in the table it is mapped to.
- Original optionality is retained.

- In the example, a separate table would be created for SHIRTS and SHOES.

When to Consider Subtype Implementation
Subtype implementation may be appropriate when:
- Subtypes have very little in common. There are few attributes at the supertype level and several at the subtype level.
- Most of the relationships are at the subtype level.
- Business rules and functionality are quite different between subtypes.
- How tables are used is different — for example, one table is being queried while the other is being updated.
Modeling the Supertype as an Arc
- A supertype entity and its subtypes can be modeled as an arc relationship.
- Here again is the original ERD with the supertype and subtypes.

Model An Arc Illustrated
- In this ERD, we have redrawn the CLOTHING supertype and its subtypes of SHIRT and SHOE as standalone entities…

- …with each one having mandatory 1:1 relationships with the supertype. The relationships are in an arc.
Supertype and Subtype (Arc) Implementation
- This choice produces one table for every entity.
- The supertype table has a foreign key for each subtype table.
- These foreign keys represent exclusive relationships.
- They are optional because only one of them can have a value for each row in the table.
- Rules:
- Tables: As many tables are created as there are subtypes, as well as one for the supertype.
- Columns: Each table gets a column for all attributes of the entity it is based on, with the original optionality.
- Identifiers: The primary UID of the supertype level creates a primary key for each of the tables.
- All other unique identifiers become unique keys in their corresponding tables.
- Relationships: All tables get a foreign key for a relevant relationship at the entity level, with the original optionality.
- Integrity constraints: Two additional columns are created in the table based on the supertype.
- They are foreign-key columns referring to the tables that implement the subtypes.
- The columns are optional because the foreign keys are in an arc.
- An additional check constraint is needed to implement the arc.
- The foreign-key columns are also unique keys because they implement a mandatory 1:1 relationship.

When to Consider Both a Supertype and Subtype (Arc) Implementation
- This implementation is rarely used, but it could be appropriate when:
- Subtypes have very little in common and each table represents information that can be used independently.
- For example, when the CLOTHING table gives all global information, and both SHOES and SHIRTS give specific information, and the combination of global and specific information is hardly ever needed.
- Business rules and functionality are quite different between all types.
- How tables are used is different.
Terminology
Key terms used in this tutorial included:
- Arc implementations
- Subtype implementations
- Supertype implementations
Summary
In this tutorial, you should have learned how to:
- State and apply the table, column, identifiers, relationship, and integrity constraint rules for mapping:
- supertype and subtype implementations
- supertype and subtype arc implementations
0 Comments