Entity-Relationship Model

An entity–relationship model (ER model) is a Data Model for describing a Database in an abstract way at a conceptual level.

A database can be modeled as

  • a collection of entities plus
  • the relationships between the entities


Entity is an object that exists and is distinguishable from other objects

  • e.g. a company, an event, a person
  • entities have attributes

An entity set is a set of entities of the same type that share the same properties

  • set of all people, companies, events

A relationship is an association between several entities

  • for example "student" entity -- advisor (relationship) -- "instructor" entity

A relationship set is a set of relations between two specific entities

  • e.g. (studentId, instructorId) $\in$ advisor

An entity is represented by a set of attributes

  • an attribute is a descriptive property that all members of this entity set have
  • e.g. instructor=(ID, name, street, city, salary)
  • course=(ID, title, credits)

Domain is a set of permitted values for each attribute

Types of attributes:

  • simple or composite
  • single-valued or multi-valued
  • derived (computed from other values)
    • e.g. age given the date of birth
  • composite attributes consist of other attributes (that also in turn may be composite)


A super key of an entity set is a set of one or more attributes

  • these attributes must uniquely identity each entity

A candidate key of an entity set is a minimal possible super key

  • e.g. id of an instructor
  • although there could be several candidate keys, one must be selected to be a primary key

Relationships primary keys

  • The combination of primary keys for entities that participate in a relationship form a primary key for that relationship
  • e.g. (s_id, i_id) is a superkey for advisor

E-R Diagrams

Basic Notation


  • rectangles represent entity sets
    • attributes are listed inside
    • primary key attributes are underlined
  • diamonds represent relationship sets
    • a relationship set may have attributes


  • complex attributes are shown with indent
  • {} is used to show multivalued attributes
  • () shows that an attribute is derived


  • directed line shows relationship with cardinality "one"
  • undirected line - cardinality "many"
  • alternatively, we can use cardinality limits


  • this is called "total participation"
    • indicated by a double line
    • means: every entity set participates in at least one relationship
  • opposite is "partial participation"
    • some entities may not participate in any relationship

Weak Entity Sets

An entity set that does not have a primary key is a weak entity set

  • the existence of a weak entity set depends of identifying entity set
  • it must relate to the identifying entity set via a total one-to-many relationship set

Discriminator (or partial key) of a weak entity set

  • this is the set of attributes that distinguishes an entity among another entities

So the primary key of such entities is formed by:

  • the primary key of the strong entity (on which the weak one depends)
  • the discriminator of the weak entity


  • discriminator is underlined with a dashed line
  • identifying relationship is shown with a double diamond
  • in this case the primary key for section is (course_id, sec_id, semester, year)


  • the primary key of the strong entity set should not be stored explicitly with the weak entity set
  • if course_id was stored in the weak entity, section then should be a strong entity
  • a weak entity cannot exist without an owner [stackoverflow.com/questions/4741967]
    • example: a ROOM can only exist in a BUILDING
    • a TIRE, on the other hand, can be a strong entity because it can exist without a car
    • QUESTION is strong - it always exists, but ANSWER is weak - there have to be a QUESTION for an ANSWER


  • er-example-7.png

Reduction to Relational Schema

Entity sets and relationship sets can be expressed as relational schemas

  • attributes of each schema typically correspond to attributes of entities and relationships



  • strong entity becomes a schema with the same attributes
    • student(ID, name, tot_credit)
  • weak entity becomes a table that includes a column for the PK pf the identifying entity set
    • section(course_id, sec_id, sem, year)
  • a many-2-many relationship set is represented as a schema with
    • attributes for all the primary keys of all participating entities +
    • descriptive attributes of the relationship set
  • many-2-one and one-2-many relationship sets can be represented by adding extra attribute to the "many" side
  • instead of creating a schema for relationship set inst_dept we add an attribute dept_name to the schema for instructor
  • for one-to-one relationship any side can be chosen to act as the "many" side
    • that is, an extra attribute is added to either side of the schema
  • if participation is partial on the "many" side
    • extra attributes may point to NULL values


Exercise 1

Car insurance company

  • each customer has one or more cars
  • each car is associated with zero or more accidents
  • each insurance policy covers one or more cars and has one or more premium payments associated with a car
  • each payment is for particular period of time and has a due date and the date when payment is received