1 chapter 4 database design i: the entity-relationship model

75
1 Chapter 4 Database Design I: The Entity- Relationship Model

Upload: juliet-benson

Post on 23-Dec-2015

230 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Chapter 4 Database Design I: The Entity-Relationship Model

1

Chapter 4

Database Design I: The Entity-Relationship Model

Page 2: 1 Chapter 4 Database Design I: The Entity-Relationship Model

2

Database Design

• Goal: specification of database schema• Methodology:

– Use E-R modelE-R model to get a high-level graphical view of essential components of enterprise and how they are related

– Convert E-R diagram to DDL

• E-R ModelE-R Model: enterprise is viewed as a set of– EntitiesEntities

– RelationshipsRelationships among entities

Page 3: 1 Chapter 4 Database Design I: The Entity-Relationship Model

3

Entities

• EntityEntity: an object that is involved in the enterprise– Ex: John, CSE305

• Entity TypeEntity Type: set of similar objects– Ex: studentsstudents, coursescourses

• AttributeAttribute: describes one aspect of an entity type– Ex: name, maximum enrollment

Page 4: 1 Chapter 4 Database Design I: The Entity-Relationship Model

4

Entity Type

• Entity type described by set of attributes– PersonPerson: Id, Name, Address, Hobbies

• DomainDomain: possible values of an attribute– Value can be a set (in contrast to relational model)

• (111111, John, 123 Main St, {stamps, coins})

• KeyKey: minimum set of attributes that uniquely identifies an entity (candidate key)

• Entity SchemaEntity Schema: entity type name, attributes (and associated domain), key constraints

Page 5: 1 Chapter 4 Database Design I: The Entity-Relationship Model

5

Entity Type (con’t)

• Graphical Representation in E-R diagram:

Set valued

Page 6: 1 Chapter 4 Database Design I: The Entity-Relationship Model

6

Relationships

• RelationshipRelationship: relates two or more entities– John majors in Computer Science

• Relationship TypeRelationship Type: set of similar relationships– StudentStudent (entity type) related to DepartmentDepartment (entity type)

by MajorsInMajorsIn (relationship type).

• Distinction: – relation (relational model) - set of tuples– relationship (E-R Model) – describes relationship

between entities of an enterprise– Both entity types and relationship types (E-R model)

may be represented as relations (in the relational model)

Page 7: 1 Chapter 4 Database Design I: The Entity-Relationship Model

7

Attributes and Roles• AttributeAttribute of a relationship type describes the

relationship– e.g., John majors in CS since 2000

• John and CS are related• 2000 describes relationship - value of SINCE attribute

of MajorsInMajorsIn relationship type

• RoleRole of a relationship type names one of the related entities– e.g., John is value of Student role, CS value of

Department role of MajorsInMajorsIn relationship type– (John, CS; 2000) describes a relationship

Page 8: 1 Chapter 4 Database Design I: The Entity-Relationship Model

8

Relationship Type

• Described by set of attributes and roles– e.g., MajorsInMajorsIn: Student, Department, Since– Here we have used as the role name (Student)

the name of the entity type (StudentStudent) of the participant in the relationship, but ...

Page 9: 1 Chapter 4 Database Design I: The Entity-Relationship Model

9

Roles

• Problem: relationship can relate elements of same entity type– e.g., ReportsTo relationship type relates two

elements of EmployeeEmployee entity type: • Bob reports to Mary since 2000

– We do not have distinct names for the roles– It is not clear who reports to whom

Page 10: 1 Chapter 4 Database Design I: The Entity-Relationship Model

10

Roles (con’t)

• Solution: role name of relationship type need not be same as name of entity type from which participants are drawn– ReportsToReportsTo has roles Subordinate and

Supervisor and attribute Since– Values of Subordinate and Supervisor both

drawn from entity type EmployeeEmployee

Page 11: 1 Chapter 4 Database Design I: The Entity-Relationship Model

11

Schema of a Relationship Type• Role namesRole names, Ri, and their corresponding entity

sets. Roles must be single valued (number of roles = degree of relationship)

• Attribute namesAttribute names, Aj, and their corresponding domains. Attributes may be set valued

• KeyKey: Minimum set of roles and attributes that uniquely identify a relationship

• Relationship: <e1, …en; a1, …ak>– ei is an entity, a value from Ri’s entity set– aj is a set of attribute values with elements from

domain of Aj

Page 12: 1 Chapter 4 Database Design I: The Entity-Relationship Model

12

Graphical Representation• Roles are edges labeled with role names (omitted if role name

= name of entity set). Most attributes have been omitted.

Page 13: 1 Chapter 4 Database Design I: The Entity-Relationship Model

13

Entity Type Hierarchies

• One entity type might be subtype of another– FreshmanFreshman is a subtype of StudentStudent

• A relationship exists between a FreshmanFreshman entity and the corresponding StudentStudent entity– e.g., Freshman John is related to Student John

• This relationship is called IsAIsA– FreshmanFreshman IsA StudentStudent

– The two entities related by IsA are always descriptions of the same real-world object

Page 14: 1 Chapter 4 Database Design I: The Entity-Relationship Model

14

IsA

FreshmanFreshman SophmoreSophmore JuniorJunior SeniorSenior

StudentStudent

IsAIsA

Represents 4relationship types

Page 15: 1 Chapter 4 Database Design I: The Entity-Relationship Model

15

Properties of IsA• InheritanceInheritance - Attributes of supertype apply

to subtype.– E.g., GPA attribute of StudentStudent applies to

FreshmanFreshman– Subtype inheritsinherits all attributes of supertype.– Key of supertype is key of subtype

• TransitivityTransitivity - Hierarchy of IsA– StudentStudent is subtype of PersonPerson, FreshmanFreshman is

subtype of Student, Student, so Freshman Freshman is also a subtype of StudentStudent

Page 16: 1 Chapter 4 Database Design I: The Entity-Relationship Model

16

Advantages of IsA

• Can create a more concise and readable E-R diagram– Attributes common to different entity sets need

not be repeated– They can be grouped in one place as attributes

of supertype– Attributes of (sibling) subtypes can be different

Page 17: 1 Chapter 4 Database Design I: The Entity-Relationship Model

17

IsA Hierarchy - Example

Page 18: 1 Chapter 4 Database Design I: The Entity-Relationship Model

18

Constraints on Type Hierarchies

• Might have associated constraints:– Covering constraintCovering constraint: Union of subtype entities is

equal to set of supertype entities• Employee is either a secretary or a technician (or both)

– Disjointness constraintDisjointness constraint: Sets of subtype entities are disjoint from one another

• FreshmanFreshman, SophomoreSophomore, JuniorJunior, SeniorSenior are disjoint set

Page 19: 1 Chapter 4 Database Design I: The Entity-Relationship Model

19

Single-role Key Constraint

• If, for a particular participant entity type, each entity participates in at most one relationship, corresponding role is a key of relationship type– E.g., Professor role is unique in WorksInWorksIn

• Representation in E-R diagram: arrow

WorksInWorksInProfessorProfessor DepartmentDepartment

Page 20: 1 Chapter 4 Database Design I: The Entity-Relationship Model

20

Participation Constraint• If every entity participates in at least one

relationship, a participation constraintparticipation constraint holds:– A participation constraint of entity type EE

having role in relationship type RR states that for e in EE there is an r in RR such that (r) = e.

– e.g., every professor works in at least one department

WorksInWorksInProfessorProfessor DepartmentDepartment

Reprsentation in E-R

Page 21: 1 Chapter 4 Database Design I: The Entity-Relationship Model

21

Participation and Key Constraint

• If every entity participates in exactly one relationship, both a participation and a key constraint hold:– e.g., every professor works in exactly one

department

WorksInWorksInProfessorProfessor DepartmentDepartment

E-R representation: thick line

Page 22: 1 Chapter 4 Database Design I: The Entity-Relationship Model

22

• An entity type corresponds to a relation• Relation’s attributes = entity type’s attributes

– Problem: entity type can have set valued attributes, e.g.,

PersonPerson: Id, Name, Address, Hobbies

– Solution: Use several rows to represent a single entity• (111111, John, 123 Main St, stamps)

• (111111, John, 123 Main St, coins)

– Problems with this solution:• Redundancy

• Key of entity type (Id) not key of relation

• Hence, the resulting relation must be further transformed (Chapter 6)

Representation of Entity Types in the Relational Model

Page 23: 1 Chapter 4 Database Design I: The Entity-Relationship Model

23

Representation of Relationship Types in the Relational Model

• Typically, a relationship becomes a relation in the relational model• Attributes of the corresponding relation are

– Attributes of relationship type– For each role, the primary key of the entity type associated with that role

• Example:

– S2000CoursesS2000Courses (CrsCode, SectNo, Enroll)– ProfessorProfessor (Id, DeptId, Name)– TeachingTeaching (CrsCode, SecNo, Id, RoomNo, TAs)

TeachingTeachingS2000CoursesS2000Courses ProfessorProfessor

DeptId NameRoomNoCrsCode EnrollSectNo

IdTAs

Page 24: 1 Chapter 4 Database Design I: The Entity-Relationship Model

24

Representation of Relationship Types in the Relational Model

• Candidate key of corresponding table = candidate key of relation– Except when there are set valued attributes– Example: TeachingTeaching (CrsCode, SectNo, Id, RoomNo, TAs)

• Key of relationship type = (CrsCode, SectNo)

• Key of relation = (CrsCode, SectNo, TAs)

CrsCode SectNo Id RoomNo TAs

CSE305 1 1234 Hum 22 JoeCSE305 1 1234 Hum 22 Mary

Set valued

Page 25: 1 Chapter 4 Database Design I: The Entity-Relationship Model

25

Representation in SQL

• Each role of relationship type produces a foreign key in corresponding relation– Foreign key references table corresponding to

entity type from which role values are drawn

Page 26: 1 Chapter 4 Database Design I: The Entity-Relationship Model

26

Example 1

WorksInWorksInProfessorProfessor DepartmentDepartment

Since Status

CREATE TABLE WorksInWorksIn ( Since DATE, -- attribute Status CHAR (10), -- attribute ProfId INTEGER, -- role (key of ProfessorProfessor) DeptId CHAR (4), -- role (key of DepartmentDepartment) PRIMARY KEY (ProfId), -- since a professor works in at most one department FOREIGN KEY (ProfId) REFERENCES ProfessorProfessor (Id), FOREIGN KEY (DeptId) REFERENCES DepartmentDepartment )

Page 27: 1 Chapter 4 Database Design I: The Entity-Relationship Model

27

Example 2

SoldSoldProjectProject PartPart

Date Price

CREATE TABLE SoldSold ( Price INTEGER, -- attribute Date DATE, -- attribute ProjId INTEGER, -- role SupplierId INTEGER, -- role PartNumber INTEGER, -- role PRIMARY KEY (ProjId, SupplierId, PartNumber, Date), FOREIGN KEY (ProjId) REFERENCES ProjectProject, FOREIGN KEY (SupplierId) REFERENCES SupplierSupplier (Id), FOREIGN KEY (PartNumber) REFERENCES PartPart (Number) )

SupplierSupplier

Page 28: 1 Chapter 4 Database Design I: The Entity-Relationship Model

28

Representation of Single Role Key Constraints in the Relational Model

• Relational model representation: key of the relation corresponding to the entity type is key of the relation corresponding to the relationship type– Id is primary key of ProfessorProfessor; ProfId is key of WorksInWorksIn.

Professor 4100 does not participate in the relationship.– Cannot use foreign key in ProfessorProfessor to refer to WorksInWorksIn

since some professors may not work in any dept. (But ProfId is a foreign key in WorksInWorksIn that refers to ProfessorProfessor.)

112341003216

1123 CSE3216 AMS

ProfessorProfessor WorksInWorksIn

IdProfId

WorksInWorksInProfessorProfessor DepartmentDepartment

Key

Page 29: 1 Chapter 4 Database Design I: The Entity-Relationship Model

29

Representing Type Hierarchies in the Relational Model

• Supertypes and subtypes can be realized as separate relations– Need a way of identifying subtype entity with

its (unique) related supertype entity• Choose a candidate key and make it an attribute of

all entity types in hierarchy

Page 30: 1 Chapter 4 Database Design I: The Entity-Relationship Model

30

Type Hierarchies and the Relational Model

Id attribs1 Id attribs2 Id attribs3 Id attribs4

Id attribs0

StudentStudent

FreshmanFreshman SophmoreSophmore JuniorJunior SeniorSenior

• Translated by adding the primary key of supertype to all subtypes. Plus foreign key from subtypes to the supertype.

FOREIGN KEY Id REFERENCES StudentStudent

in Freshman, Sophomore, Sunior, Senior

Page 31: 1 Chapter 4 Database Design I: The Entity-Relationship Model

31

Type Hierarchies and the Relational Model

• Redundancy eliminated if IsA is not disjoint– For individuals who are both employees and

students, Name and DOB are stored only once

SSN Name DOB SSN Department Salary SSN GPA StartDate

1234 Mary 1950 1234 Accounting 35000 1234 3.5 1997

PersonPerson EmployeeEmployee StudentStudent

Page 32: 1 Chapter 4 Database Design I: The Entity-Relationship Model

32

Type Hierarchies and the Relational Model

• Other representations are possible in special cases, such as when all subtypes are disjoint

• See in the book

Page 33: 1 Chapter 4 Database Design I: The Entity-Relationship Model

33

Representing Participation Constraints in the Relational Model

• Inclusion dependencyInclusion dependency: Every professor works in at least one dep’t.– in the relational model: (easy)

• ProfessorProfessor (Id) references WorksInWorksIn (ProfId)

– in SQL: • Simple case: IfIf ProfId is a key in WorksIn (i.e., every professor works

in exactly one department) then it is easy:– FOREIGN KEY Id REFERENCES WorksInWorksIn (ProfId)

• General case – ProfId is not a key in WorksIn, so can’t use foreign key constraint (not so easy):

CREATE ASSERTION ProfsInDeptsProfsInDepts CHECK ( NOT EXISTS ( SELECT * FROM ProfessorProfessor P WHERE NOT EXISTS ( SELECT * FROM WorksInWorksIn W WHERE P.Id = W.ProfId ) ) )

WorksInWorksInProfessorProfessor DepartmentDepartment

Select those professors that do not work

Page 34: 1 Chapter 4 Database Design I: The Entity-Relationship Model

34

Representing Participation Constraint in the Relational Model

• Example (can’t use foreign key in Professor if ProfId Professor if ProfId is not a candidate key in WorksInis not a candidate key in WorksIn)

112341003216

1123 CSE1123 AMS4100 ECO3216 AMS

ProfessorProfessorWorksInWorksIn

IdProfId

ProfId not acandidate key

Page 35: 1 Chapter 4 Database Design I: The Entity-Relationship Model

35

Representing Participation and Key Constraintin SQL

• If both participation and key constraints apply, use foreign key constraint in entity table (but beware: if candidate key in entity table is not primary, presence of nulls violates participation constraint).

CREATE TABLE ProfessorProfessor ( Id INTEGER, …… PRIMARY KEY (Id), -- Id can’t be null FOREIGN KEY (Id) REFERENCES WorksInWorksIn (ProfId) --all professors participate )

ProfessorProfessor WorksInWorksIn DepartmentDepartment

Page 36: 1 Chapter 4 Database Design I: The Entity-Relationship Model

36

Participation and Key Constraint in the Relational Model

• Example:

xxxxxx 1123yyyyyy 4100zzzzzzz 3216

1123 CSE4100 ECO3216 AMS

ProfessorProfessor

Id ProfId

WorksInWorksIn

Page 37: 1 Chapter 4 Database Design I: The Entity-Relationship Model

37

Participation and Key Constraint in Relational Model (again)

• Alternative solution if both key and participation constraints apply: merge the tables representing the entity and relationship sets– Since there is a 1-1 and onto relationship

between the rows of the entity set and the relationship sets, might as well put all the attributes in one table

Page 38: 1 Chapter 4 Database Design I: The Entity-Relationship Model

38

Participation and Key Constraint in Relational Model

• Example

xxxxxxx 1123 CSEyyyyyyy 4100 ECOzzzzzzzz 3216 AMS

Prof_WorksInProf_WorksIn

Name Id DeptId

Page 39: 1 Chapter 4 Database Design I: The Entity-Relationship Model

39

Entity or Attribute?• Sometimes information can be represented

as either an entity or an attribute.

StudentStudent SemesterSemester

CourseCourse

TranscriptTranscript

Grade

StudentStudent

CourseCourse

TranscriptTranscriptGrade

SemesterAppropriate if Semester Semester has attributes(next slide)

Page 40: 1 Chapter 4 Database Design I: The Entity-Relationship Model

40

Entity or Relationship?

Page 41: 1 Chapter 4 Database Design I: The Entity-Relationship Model

41

(Non-) Equivalence of Diagrams• Transformations between binary and ternary relationships.

SoldSoldProjectProject

PartPart

SupplierSupplier

Date

Price

Page 42: 1 Chapter 4 Database Design I: The Entity-Relationship Model

ER exercise 1

42

Consider the design of the following database system for managing a conference X: a collection of papers are submitted to X, each of which has a unique paper IDs, a list of authors (names, affiliations, emails) in the order of contribution significance, title, abstract, and a PDF file for its content. The conference has a list of program committee (PC) members to review the papers. To ensure review quality, each paper is assigned to 3 PC members for review. To avoid overloading, each PC member is assigned with at most 5 papers, assuming that there are enough PC members. Each review report consists of a report ID, a description of review comment, a final recommendation (accept, reject), and the date the review report is submitted. A PC member can submit at most one review report for the paper that is assigned to him/her.

Page 43: 1 Chapter 4 Database Design I: The Entity-Relationship Model

ER exercise 1 (con’t)

43

• Draw an E-R diagram for the above system. Use underlines, thick lines, and arrows to represent constraints. State your assumptions if necessary.

• Translate the previous E-R diagram for exercise1 into a relational model, i.e., a set of CREAT TABLE statements enforcing all stated constraints. In addition, write a CREATE ASSERTION statement to enforce that no PC member will be assigned to a paper of which she/he is a coauthor.

Page 44: 1 Chapter 4 Database Design I: The Entity-Relationship Model

44

ER Diagram

Page 45: 1 Chapter 4 Database Design I: The Entity-Relationship Model

45

SQL exercise

Create table paper (paperid integer,title VARCHAR(50),abstract VARCHAR(250),pdf VARCHAR(100),primary key (paperid))

Page 46: 1 Chapter 4 Database Design I: The Entity-Relationship Model

46

SQL exercise

Create table author(email VARCHAR(100),name VARCHAR(50),affiliation VARCHAR(100),primary key(email))

Page 47: 1 Chapter 4 Database Design I: The Entity-Relationship Model

CREATE table write(

paperid integer,

email varchar(50),

order integer,

Primary key(paperid, email),

foreign key paperid references paper,

foreign key email references autor)47

Page 48: 1 Chapter 4 Database Design I: The Entity-Relationship Model

create table pcmember(

email VARCHAR(50),

name VARCHAR(20),

primary key (email)

)

48

Page 49: 1 Chapter 4 Database Design I: The Entity-Relationship Model

create table review(

reportid integer,

sdate DATE,

comment VARCHAR(250),

recommendation CHAR(1),

paperid integer,

email VARCHAR(100),

unique(paperid, email),

foreign key paperid references paper,

foreign key email references pcmember)49

Page 50: 1 Chapter 4 Database Design I: The Entity-Relationship Model

50

CREATE Assertion 3pc CHECK NOT EXISTS( SELECT * FROM Papers P WHERE 3 <> ( SELECT COUNT(*) FROM Review R WHERE R.paperid = P.paperid ))

Page 51: 1 Chapter 4 Database Design I: The Entity-Relationship Model

51

CREATE ASSERTION atmostfivepapersCHECK NOT NOT EXISTS( SELECT * FROM pcmember P WHERE 5 < ( SELECT * FROM review R WHERE R.email = P.email ))

Page 52: 1 Chapter 4 Database Design I: The Entity-Relationship Model

ER exercise 2Suppose you are asked to design a club database system based on the following information. Each student has a unique student id, a name, and an email; each club has a unique club id, a name, a contact telephone number, and has exactly one student as its president. Each student can serve as a president in at most one of the clubs, although he/she can be the members of several clubs. Clubs organize activities and students can participate in any of them. Each activity is described by a unique activity id, a place, a date, a time and those clubs that organize it. If an activity is organized by more than one club, different clubs might contribute different activity fees.

52

Page 53: 1 Chapter 4 Database Design I: The Entity-Relationship Model

Exercise 2 (con’t)

• Draw an E-R diagram for the system, in particular, use arrows or thick lines to represent constraints appropriately. Write down your assumptions if necessary.

• Translate the above E-R diagram to a relational model, in particular, specify your primary key and foreign key constraints clearly.

53

Page 54: 1 Chapter 4 Database Design I: The Entity-Relationship Model

Reference solution

54

Page 55: 1 Chapter 4 Database Design I: The Entity-Relationship Model

CREATE TABLE Student (

studid CHAR(9),

email VARCHAR(50),

name VARCHAR(50) NOT NULL,

PRIMARY KEY ( studid ),

)

55

Page 56: 1 Chapter 4 Database Design I: The Entity-Relationship Model

CREATE TABLE Club (

clubid INTEGER,

telephone VARCHAR(15),

name VARCHAR(50),

president CHAR(9) NOT NULL,

unique(president),

PRIMARY KEY (clubid),

FOREIGN KEY (president) REFERENCES Student(studid )

)

56

Page 57: 1 Chapter 4 Database Design I: The Entity-Relationship Model

CREATE TABLE MemberOf (

clubid INTEGER,

studid VARCHAR(50),

PRIMARY KEY (clubid, studid ),

FOREIGN KEY (clubid ) REFERENCES Club( clubid ),

FOREIGN KEY (studid ) REFERENCES Student( studid )

)

57

Page 58: 1 Chapter 4 Database Design I: The Entity-Relationship Model

58

CREATE TABLE Activities ( actid INTEGER, actdt DATETIME, place VARCHAR(50), PRIMARY KEY (actid ) )

Page 59: 1 Chapter 4 Database Design I: The Entity-Relationship Model

59

CREATE TABLE Organize (actid INTEGER,clubid INTEGER,fee VARCHAR(50),PRIMARY KEY (actid, clubid ),FOREIGN KEY (actid ) REFERENCES Activities(actid ),FOREIGN KEY (clubid ) REFERENCES Club( clubid ))

Page 60: 1 Chapter 4 Database Design I: The Entity-Relationship Model

60

CREATE ASSERTION AtLeastOneOrganizer CHECK NOT EXISTS( SELECT * FROM Activities WHERE NOT EXISTS( SELECT * FROM Organize WHERE Organize.actid=Activities.actid ) )

Page 61: 1 Chapter 4 Database Design I: The Entity-Relationship Model

Exercise 3

Consider the design of a database for the management of grants. Each grant is identified by a unique grant ID, a title, the funding source of the grant, the period (starting data and ending date), and the amount of grant. Each grant might be participated by several professors and each professor might also participate in several grants. Each professor is identified by a unique SSN, name, and email address. In addition, several graduate students might be supported by a grant as GRAs, although each student can be supported by at most one grant. Each graduate student has exactly one professor as his/her advisor.

61

Page 62: 1 Chapter 4 Database Design I: The Entity-Relationship Model

Exercise 3 (con’t)

62

• Draw an E-R diagram for the system, in particular, use arrows or thick lines to represent constraints appropriately. Write down your assumptions and justifications briefly and clearly.

• Translate the above E-R diagram into a relational model, i.e., write a set of CREATE TABLE statements. In particular, specify primary key, foreign key and other constraints whenever possible.

Page 63: 1 Chapter 4 Database Design I: The Entity-Relationship Model

Reference solution

63

Page 64: 1 Chapter 4 Database Design I: The Entity-Relationship Model

create table grant(

grantid integer,

title varchar(50),

source varchar(50),

periodstart DATE,

periodend DATE,

amount integer,

primary key(grantid)

)

64

Page 65: 1 Chapter 4 Database Design I: The Entity-Relationship Model

Create table professor(

ssn char(9),

name VARCHAR(20),

email varchar(20),

primary key(ssn),

unique(email)

)65

Page 66: 1 Chapter 4 Database Design I: The Entity-Relationship Model

Create table participate

(grantid integer,

professorid char(9),

primary key(grantid, professorid),

foreign key grantid references grant,

foreign key professorid references professor(ssn))

66

Page 67: 1 Chapter 4 Database Design I: The Entity-Relationship Model

Create student

(studid integer,

name varchar(50),

status varchar(20),

advisor char(9) NOT NULL,

supportgrantid integer,

primary key(studid),

foreign key advisor references professor,

Foreign key supportgrantid references grant(grantid)

)67

Page 68: 1 Chapter 4 Database Design I: The Entity-Relationship Model

Exercise 4

Consider the design of the following database system: each PhD student has exactly one a dissertation committee which consists of 4-5 faculty, and each committee is for exactly one student. Each student has an ordered list of advisors including the primary advisor followed by 0 or more secondary advisors. Each student has a unique studid, a name, and a major. Each committee has a unique committee id, and the date the committee is formed. Each faculty has a unique facid and a name. Each faculty can participate in multiple committees and be the advisors (either primary or secondary) of several students.

68

Page 69: 1 Chapter 4 Database Design I: The Entity-Relationship Model

Exercise 4 (con’t)

• Draw an E-R diagram for the above system. Use underlines, thick lines, and arrows to represent constraints. State your assumptions if necessary.

• Translate your E-R diagram for problem 1 into a relational model, i.e., a set of CREAT TABLE/ASSERTION statements enforcing all stated constraints. In addition, write a CREATE ASSERTION statement to enforce that each committee consists of the primary advisor of the student and all other members of the committee cannot be the secondary advisors of the student.

69

Page 70: 1 Chapter 4 Database Design I: The Entity-Relationship Model

Reference solution

70

Page 71: 1 Chapter 4 Database Design I: The Entity-Relationship Model

Reference solution

CREATE TABLE Advise (

order VARCHAR(50),

studid VARCHAR(50),

facid VARCHAR(50),

PRIMARY KEY ( studid, facid ),

FOREIGN KEY ( studid ) REFERENCES Students ( studid ),

FOREIGN KEY (facid ) REFERENCES Faculty ( facid )

)

71

Page 72: 1 Chapter 4 Database Design I: The Entity-Relationship Model

CREATE TABLE Student (

studid VARCHAR(50) NOT NULL,

name VARCHAR(50),

major VARCHAR(50),

since DATE,

PRIMARY KEY ( studid )

)

72

Page 73: 1 Chapter 4 Database Design I: The Entity-Relationship Model

CREATE TABLE Participate (

studid VARCHAR(50),

facid VARCHAR(50),

PRIMARY KEY (studid, facid ),

FOREIGN KEY ( studid ) REFERENCES Student

FOREIGN KEY (facid ) REFERENCES Faculty ( facid )

)

73

Page 74: 1 Chapter 4 Database Design I: The Entity-Relationship Model

74

The primary advisor must be in the committee CREATE ASSERTIONCHECK NOT EXISTS( SELECT * from Student S WHERE ( SELECT facid // one primary advisor FROM Advise A WHERE A.facid = S.facid and A.order = 1 ) NOT IN ( // all my committee members select facid FROM Participate P WHERE P.stuid = S.studid ))

Page 75: 1 Chapter 4 Database Design I: The Entity-Relationship Model

75

Other co-advisors must be NOT in the committee CREATE ASSERTIONCHECK NOT EXISTS( SELECT * from Student S WHERE EXISTS( // some committee members are co-advisors SELECT A.facid FROM Advise A, Pariticpate P WHERE s.studid = A.stuid AND A.stuid = P.studid AND A.order <> 1 AND A.facid = P.facid)