| [Tut/Lab Sessions] [Tut/Lab Sessions Schedule] | [Course Information] [COMP2400/6240 Home] |
![]()
Apply the COMP2400/6240 Algorithm for Converting an ER Diagram into a Relational Schema to each of the following ER diagrams. Show all the steps in the algorithm.
![]()

STEP 1 TASK (Proj-id, Task-no, [pk] Supervisor, Phone) MACHINE (Mach-no [pk] Type, Location) STEP 2 USES (Proj-id [fk1], Task-no [fk1], Mach-no [fk2], [pk] Hours) STEP 3 Not Applicable STEP 4 Change USES to TASK-MACHINE TASK-MACHINE (Proj-id [fk1], Task-no [fk1], Mach-no [fk2], [pk] Hours) Change Mach-no to Machine-no Change Type to Machine-type MACHINE (Machine-no [pk] Machine-Type, Location) TASK-MACHINE (Proj-id [fk1], Task-no [fk1], Machine-no [fk2], [pk] Hours) STEP 5 Final Relational Schema TASK (Proj-id, Task-no, [pk] Supervisor, Phone) TASK-MACHINE (Proj-id [fk1], Task-no [fk1], Machine-no [fk2], [pk] Hours) MACHINE (Machine-no [pk] Machine-Type, Location)
Running STEPs 4 and 5 together:
STEP 1 TASK (Proj-id, Task-no, [pk] Supervisor, Phone) MACHINE (Mach-no [pk] Type, Location) STEP 2 USES (Proj-id [fk1], Task-no [fk1], Mach-no [fk2], [pk] Hours) STEP 3 Not Applicable Final Relational Schema TASK (Proj-id, Task-no, [pk] Supervisor, Phone) TASK-MACHINE (Proj-id [fk1], Task-no [fk1], Mach-no [fk2], [pk] Hours) MACHINE (Machine-no [pk] Machine-Type, Location)
![]()

STEP 1
|
EMPLOYEE |
(Payroll-no, [pk] Name, Position-held, Track-record) |
|
QUALIFICATION |
(Payroll-no, Qual-no, [pk] Date-acquired, Awarding-body) |
STEP 2
Not Applicable
STEP 3
We do not need to add Payroll-no to QUALIFICATION, but we do need to designate Payroll-no as a foreign key.
|
QUALIFICATION |
(Payroll-no [fk], Qual-no, [pk] Date-acquired, Awarding-body) |
STEP 4
Change Name in EMPLOYEE to Employee-name.
Change Track-record in EMPLOYEE to Performance-rating
|
EMPLOYEE |
(Payroll-no, [pk] Employee-name, Position-held, Performance-rating) |
STEP 5
Final Relational Schema
|
EMPLOYEE |
(Payroll-no, [pk] Employee-name, Position-held, Performance-rating) |
|
QUALIFICATION |
(Payroll-no [fk], Qual-no, [pk] Date-acquired, Awarding-body) |
![]()

STEP 1
|
PROJECT |
(Project-id, [pk] Manager, Budget) |
|
ACTIVITY |
(Project-id, Activity-no, [pk] Supervisor, Expected-duration) |
|
EMPLOYEE |
(Payroll-no, [pk] Date-hired) |
STEP 2
|
ASSIGNED-TO |
(Project-id [fk1], Payroll-no [fk2], [pk] Date-assigned-to) |
|
WORKED-ON |
(Project-id [fk1], Activity-no [fk1], Payroll-no [fk2], [pk] Hours-worked) |
STEP 3
|
ACTIVITY |
(Project-id [fk], Activity-no, [pk] Supervisor, Expected-duration) |
STEP 4 (Some Possibilities)
Rename ASSIGNED-TO to PROJECT-EMPLOYEE.
Rename WORKED-ON to TIMESHEET.
Rename Budget to Project-budget.
Rename Date-assigned-to to Date-assigned-to-project.
Rename Expected-duration to Expected-duration-of-activity.
Assuming that Managers and Supervisors are Employees:
Rename Manager to Manager-payroll-no and show it as a foreign key.
Rename Supervisor to Supervisor-payroll-no and show it as a foreign key.
Assuming that Managers and Supervisors are not Employees:
Assume that Manager exists as a primary key elsewhere in the database and show it as a foreign key (perhaps as Manager-id).
Assume that Supervisor exists as a primary key elsewhere in the database and show it as a foreign key (perhaps as Supervisor-id).
STEP 5
Final Relational Schema (One Possibility)
|
ACTIVITY |
(Project-id [fk]<, Activity-no, [pk] Expected-duration-of-activity, Supervisor-payroll-no [fk]) |
|
TIMESHEET |
(Project-id [fk1], Activity-no [fk1], Payroll-no [fk2], [pk] Hours-worked) |
|
EMPLOYEE |
(Payroll-no, [pk] Date-hired) |
|
PROJECT |
(Project-id, [pk] Project-budget, Manager-id [fk]) |
|
PROJECT-EMPLOYEE |
(Project-id [fk1], Payroll-no [fk2], [pk] Date-assigned-to-project) |
|
ACTIVITY |
(Project-id [fk], Activity-no, [pk] Supervisor, Expected-duration) |
|
WORKED-ON |
(Project-id, Activity-no [fk1], Payroll-no [fk2], [pk] Hours-worked) |
|
WORKED-ON |
(Project-id [fk1], Activity-no [fk2], Payroll-no [fk3], [pk] Hours-worked) |
|
ACTIVITY |
(Project-id [fk], Activity-no, [pk] Supervisor, Expected-duration , Project-id [fk]) |
![]()

STEP 1
| SHOP | (Shop-name, [pk] Floor-area) |
| MACHINE | (Serial-no, [pk] Condition, Date-purchased) |
| SKILL | (Skill-id, [pk] Bonus) |
| OPERATOR | (Operator-id, [pk] Name, Base-wage) |
STEP 2
| CONNECTS-WITH | (Shop-name-#1 [fk1], Shop-name-#2 [fk2], [pk]) |
| REQUIRES | (Serial-no [fk1], Skill-id [fk2], [pk]) |
| HAS | (Operator-id [fk1], Skill-id [fk2], [pk] Date-acquired) |
STEP 3
| MACHINE | (Serial-no, [pk] Condition, Date-purchased, Shop-name [fk]) |
STEP 4
Rename the relations mapped from the many-to-many relationships.
CONNECTS-WITH given a more meaningful name:
SHOP-CONNECTIONS (Shop-name-#1 [fk1], Shop-name-#2 [fk2], [pk]) REQUIRES and HAS renamed used the convention of concatenating the names of the entities at either end of the relationship:
MACHINE-SKILL (Serial-no [fk1], Skill-id [fk2], [pk])
OPERATOR-SKILL (Operator-id [fk1], Skill-id [fk2], [pk] Date-acquired)
Attributes given more explicit names
Condition changed to Machine-condition and Serial-no changed to Machine-serial-no:
MACHINE (Machine-serial-no, [pk] Machine-condition, Date-purchased, Shop-name [fk]) Bonus changed to Skill-bonus:
SKILL (Skill-id, [pk] Skill-bonus) Name changed to Operator-name:
OPERATOR (Operator-id, [pk] Operator-name, Base-wage)
STEP 5
| MACHINE | (Machine-serial-no, [pk] Machine-condition, Date-purchased, Shop-name [fk]) |
| MACHINE-SKILL | (Serial-no [fk1], Skill-id [fk2] [pk]) |
| OPERATOR | (Operator-id, [pk] Operator-name, Base-wage) |
| OPERATOR-SKILL | (Operator-id [fk1], Skill-id [fk2], [pk] Date-acquired) |
| SHOP | (Shop-name, [pk] Floor-area) |
| SHOP-CONNECTIONS | (Shop-name-#1 [fk1], Shop-name-#2 [fk2], [pk]) |
| SKILL | (Skill-id, [pk] Skill-bonus) |
|
URL: http://computer/student/comp2400.2006/tutlabs/tut3/SolnNotes.shtml
Last modified: Monday, 28-Aug-2006 11:06:27 EST |