What is the difference between covering and overlapping constraints use in DBMS?
4 Answers
In reference with below Employee Entity Relational Model

Overlap Constraints : Can "Karthik" (employee) be an Hourly_Emps as well as a Contract_Emps entity? (Allowed/Disallowed) - In this scenario the hourly employee karthik cannot be a contract employee - Disallowed - This explains the Overlap constraints.
Covering Constraints : Is every employee of this organization either an hourly employee or a contract employee ? Answer: Yes, all entities of the master employee class belong to one of the subclasses - This explains the Covering constraints.
- 88
- 4
Overlap Constraints: It determines whether XYZ person be both an hourly_emp and a contract_emp? Answer is NO. Can he be both a contract_emp and a senior emp emtity? Answer is YES. So we can write something like this. 'Contract_emp OVERLAPS Senior_emp' In the absence of such a statement, we assume by default that entity sets are constrained to have no overlap. Overlapping constraint is kind of allowed or not allowed.
Covering Constraints: We might want to identify the set of entities that participate in some relationship. For e.g. We want to define Manages relationship so that participant entity sets are Senior_emps and Departments, to ensure that "ONLY SENIOR EMPLOYEES CAN BE MANAGERS." As another example, Motorboats and Cars may have different descriptive attributes (say, tonnage and number of doors), but as Motor Vehicles entities, they must be licensed. The licensing information can be captured by a Licensed To relationship between Motor Vehicles and an entity set called Owners.
Covering Constraints
determine whether the entities in the subclass collectively include all entities in the superclass
Overlapping Constraints
determine whether two subclasses are allowed to contain the same class entity
See: "Database Management Systems" by Ramakrishnan and Gehrke. 2nd or 3rd edition.
- 103
- 4
Overlap constraints: Can Joe be an Hourly employee as well as a
Contract Employee? If yes we must declare an overlaps constraint:
- Hourly_emps OVERLAPS Contract_emps
Otherwise we do not have to state anything as notoverlapping is the default.
Covering constraints: Does every Employees entity also have to be an Hourly_Emps or a Contract_Emps entity? If yes (and only then) we state:
- Hourly_emps and Contract_emps COVER Employees
- 1