Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Overview of Lecture
M:N Relationships M:N Relationships and Cascading Delete Joins Involving M:N Relationships Bridge Entity Classes Bridge Class Attributes Partial Associations Using Dependent & Identifying Relationships Uniqueness Weak Bridge Classes Weak Bridge Classes with Attributes Weak Bridge Classes with Participation & Cardinality Discriminated Weak Bridge Classes Relationships with Bridge Entity Classes
Ellis Cohen 2001-2008 2
M:N Relationships
M:N Relationships
Visual Conceptual Model (Crow Magnum) Employee assigned to Project
Each employee may be assigned to a number of projects Each project may have a number of employees
Textual Conceptual Model (Brief ConText) Assignment: (*) Employee assigned to (*) Project
Ellis Cohen 2001-2008 4
Employee
No key constraints!
assigned to
Project
UML
Employee
assigned to
Project
assigned to
Employee
Project
Employee
assigned to
Project
Entity Classes
Tables
Emps
empno ename 7499 7654 7698 7839 7844 7986 ALLEN MARTIN BLAKE KING TURNER STERN address 12 Lehigh 1400
Projs
pno 2618 2621 2622 pname Payroll Bridge Design Update Reqs
assigned to
Project
pno
address ... ... ... ... ... ... pno 2618 2621 2622 pname
Relationships
Employee
empno
Composite primary key
Tables
Project
pno
assigned to
Emps
empno ename address 7499 7654 7698 7839 7844 7986 ALLEN MARTIN BLAKE KING TURNER STERN ...
Asns
empno 7654 7698 7698 7844 7844 7986 pno 2621 2618 2622 2618 2622 2622
Projs
pno 2618 2621 2622 pname
Bridge Table
Ellis Cohen 2001-2008 9
Asns
empno 7654 7698 7698 7844 7844 7986 pno 2621 2618 2622 2618 2622 2622
Projs
pno 2618 2621 2622 pname
Asns
empno pno
Projs
pno pname budget
10
11
assigned to
Project
pno
2621 2622
12
No Dangling Links
Employee
empno
assigned to
Project
pno
2621 2622
13
assigned to
Project
pno
Visual RELATIONAL Model (Relational Schema) The standard relational mapping for an M:N relationship uses cascading delete Emps
empno ename
Asns
empno pno
Projs
pno pname budget
14
RELATIONAL Mapping
Assignment mapped to Asns( empno, pno ), with empno references Emps on cascade delete pno references Projs on cascade delete
RELATIONAL Model
Asns empno number(4) references Emps on cascade delete pno number(3) references Projs on cascade delete primary key( empno, pno )
Ellis Cohen 2001-2008 15
Asns
empno pno
Projs
pno pname budget
CREATE TABLE Asns( empno number(5) references Emps on delete cascade, pno number(6) references Projs on delete cascade, primary key( empno, pno ) ); What would be the implication of not using cascading delete for one or both of the foreign key constraints, on operations that delete Employees or Projects?
Ellis Cohen 2001-2008 16
Asns
empno pno
Projs
pno pname budget
Asns
empno pno
Projs
pno pname budget
+ A project with employees assigned to it can't be deleted Added business rules can eliminate cascading delete from the relational model
Ellis Cohen 2001-2008 17
Asns
empno pno
Projs
pno pname budget
Since deletes do not cascade, the application must make sure that before it deletes an employee or project, it explicitly eliminates all of its assignments. For example, before deleting an employee, it must explicitly delete its assignments, perhaps in the meantime assigning a different employee to the project!
18
Project
pno pname budget
Projs
pno pname budget empno
WRONG!
19
Projs
pno pname budget empno
1. Each employee (identified by empno) has a single associated pno. Implies there is only a single project associated with each employee! 2. Each project (identified by pno) has a single associated empno. Implies there is only a single employee associated with each project! 1:1 relationship Employee assigned to
Ellis Cohen 2001-2008 20
Project
Employee
empno ename
21
Emps
empno ename
LikesWorkingWith
emp1 emp2
22
LikesWorkingWith
emp1 emp2
CREATE TABLE LikesWorkingWith( emp1 number(5) references Emps on delete cascade, emp2 number(6) references Emps on delete cascade, primary key( emp1, emp2 ) );
23
24
assigned to
Project
Asns
empno pno
Projs
pno pname budget
For each (named) project, list the names of the employees assigned to it
SELECT pname, ename FROM ( (Emps NATURAL JOIN Asns) NATURAL JOIN Projs ) ORDER BY pname, ename
25
3 Employee Project
4 Employee Project
26
200..1000
3 Employee Project 4
5..1000
Employee
Project
200..1000
Ellis Cohen 2001-2008
0..1000
27
28
An Assignment can be thought as an entity class representing an assignment of an employee to a project An employee may be associated with a number of assignments
each one assigning that employee to a project
Employee
Assignment
Project
pno pname budget
empno ename
Asns
empno pno
Projects
pno pname budget
30
Asns
empno pno
Projects
pno pname budget
No primary key No mandatory participation (in an assignment, empno or pno can be null) No uniqueness constraint (can have multiple assignments with same empno & pno) No unique identification of assignments No cascading delete When an employee or project is deleted, its assignments are not automatically deleted
Ellis Cohen 2001-2008 31
32
33
Employee
Assignment
asnid
Project
pno pname budget
empno ename
Projs
pno pname budget
34
35
Relationship Attributes
Employee
empno
assigned to
Project
pno
Suppose that when we assign an employee to a project, we want to indicate the # hrs per week they are supposed to work on the project.
36
Employee
assigned via
Assignment
asnid hrsPerWeek
assigned via
Project
pno pname budget
empno ename
Relationship Attribute: How many hrs per week is the employee assigned to the project
37
Employee
Assignment
asnid hrsPerWeek
Project
pno pname budget
empno ename
Projs
pno pname budget
38
Attributes Example
Emps
empno 7499 7654 7698 7839 7844 7986 ... asnid 1 2 3 4 5 6
Asns
empno 7499 7698 7698 7844 7844 7986 pno hrsPerWeek 2621 2618 2622 2618 2622 2622 22 4 1 12 5
Projs
pno 2618 2621 2622
39
Partial Associations
40
assigned to
Project
pno
2621 2622
41
Employee
Assignment
asnid
Project
pno pname budget
empno ename
Every assignment must have both an employee and a project Visual Relational Model (Relational Schema) Emps
empno ename
Asns
asnid empno ! pno !
Ellis Cohen 2001-2008
Projects
pno pname budget
42
Partial Assignments
Visual Conceptual Model (Crow Magnum)
assigned via assigned via
Employee
Assignment
asnid job
Project
pno pname budget
empno ename
Bridge classes allow partial assignments: An assignment can be specified for a project, without having an employee to fill it.
Projects
pno pname budget
43
Project 2622 needs two developers, but no employee has been assigned to those positions yet
44
45
Employee
Assignment
asnid job
Project
pno pname budget
empno ename
With bridge classes, lifetime dependency can be selectively added Visual Relational Model (Relational Schema) Asns Emps
empno ename asnid empno pno ! job
Ellis Cohen 2001-2008
Projs
pno pname budget
46
Employee
Assignment
asnid job
Project
pno pname budget
empno ename
When the project is deleted, all assignment for the projects (including partial ones) are deleted
Textual Conceptual Model (Brief ConText) [Employee, Project] Assignment( asnid, job ) (1) Employee assigned via (*) Assignment (1) Project assigned via (*) Assignment
Ellis Cohen 2001-2008 47
Employee
Assignment
asndx job
Project
pno pname budget
empno ename
Textual Conceptual Model (Brief ConText) [Project] Assignment( asndx, job ) (1) Employee assigned via (*) Assignment (1) Project assigned via (*) Assignment What's the relational schema diagram?
Ellis Cohen 2001-2008 48
Employee
Assignment
asndx job
Project
pno pname budget
empno ename
Projs
pno pname budget
49
Uniqueness
50
Uniqueness Issue
Employee
assigned via
Assignment
assigned via
Project
pno pname budget
empno ename
Could an employee have more than one assignment for the same project?
51
Employee 7316 works 30 hrs per week on proj 2622 as a developer 10 hrs per week on proj 2622 as a librarian Is there a uniqueness constraint?
Ellis Cohen 2001-2008 52
Employee
Assignment
Project
pno pname budget
empno ename
+ There is at most one assignment for the same employee, project and job
Asns
asnid empno ! pno ! job hrsPerWeek
Ellis Cohen 2001-2008
Projects
pno pname budget
53
Asns
asnid empno ! pno ! job hrsPerWeek
Projects
pno pname budget
CREATE TABLE Asns( asnid number(8) primary key, empno number(5) not null references Emps, pno number(6) not null references Projs, job varchar(10), hrsPerWeek number(2), unique( empno, pno, job ) );
54
Employee
Assignment
Project
pno pname budget
Doesnt allow a person to have two jobs on the same project
empno ename
+ There is at most one assignment for the same employee and project
Projects
pno pname budget
55
Employee
Assignment
Project
pno pname budget
empno ename
No need for PK
hrsPerWeek job
+ There is at most one assignment for the same employee and project
Asns
empno ! pno ! job hrsPerWeek
Projects
pno pname budget
56
Upgrade to Relational PK
Visual Conceptual Model (Crow Magnum)
assigned via assigned via
Employee
Assignment
Project
pno pname budget
empno ename
No need for PK
hrsPerWeek job
+ There is at most one assignment for the same employee and project
Asns
empno pno job hrsPerWeek
Projects
pno pname budget
Since empno + pno are unique and non-null, and there is no primary key, we make empno + pno the primary key during relational mapping
Ellis Cohen 2001-2008 57
Asns
empno pno !
Asn
Proj
pno
empno
Projs
pno
Emp
empno
Asn
Proj
pno
+ There is at most one assignment for the same employee and project
Emps
empno
Asns
empno pno
Projs
pno
Emp
empno
assigned to
Proj
pno
58
Asns
empno pno !
Asn
Proj
pno
empno
Projs
pno
Emp
empno
Asn
Proj
pno
+ There is at most one assignment for the same employee and project
Emps
empno
Asns
empno pno
Projs
pno
Emp
empno
assigned to
Proj
pno
59
60
Assignment
pno
An employee has many project assignments. An employee's project assignments are discriminated by the project number Emps
empno ename
Asns
empno pno
61
Project
pno pname budget
A project has many employee assignments. A project's employee assignments are discriminated by the employee number Asns
empno pno
Projs
pno pname budget
Ellis Cohen 2001-2008 62
Employee
empno ename
Assignment
Project
pno pname budget
Assignment does not need an instance discriminator. The combination of the identities of its two identifying owners uniquely identifies an assignment
Asns
empno pno
Relational "fingerprint" of a Weak Bridge Entity Class (or an M:N relationship) Ellis Cohen 2001-2008
Projs
pno pname budget
63
Assignment
assigned via
Project
pno pname budget
Identical
Employee
empno ename
assigned to
Project
pno pname budget
64
Asn
Proj
pno
+ There is at most one assignment for the same employee and project
Emps Emp
empno
Asns
empno pno
Asn
Proj
pno
empno
Projs
pno
Emp
empno
Proj
pno
65
Asn
Proj
pno
+ There is at most one assignment for the same employee and project
Emp
empno
Asn
Proj
pno
Emps
empno
Asns
empno pno
Projs
pno
Emp
empno
assigned to
Proj
pno
67
Employee
empno ename
Assignment
Project
pno pname budget
hrsPerWeek
Asns
empno pno hrsPerWeek
Projs
pno pname budget
68
Attribute Example
Emps
empno ename address 7499 7654 7698 7839 7844 7986 ALLEN MARTIN BLAKE KING TURNER STERN ... empno 7654 7698 7698 7844 7844 7986
Asns
pno hrsPerWeek 2621 2618 2622 2618 2622 2622 22 4 1 12 5
Projs
pno 2618 2621 2622
69
Employee
empno ename
Assignment
Project
pno pname budget
hrsPerWeek
just an ordinary class attribute
Employee
Assignment
assigned via
Project
Employee
Assignment
Project
hrsPerWeek
UML
Employee
* Assignment hrsPerWeek
Project
Association Class
hrsPerWeek
Chen
Employee
assigned to
Project
71
Employee
PK
Assignment hrsPerWeek
Project
PK
empno
pno
Dependent bridge entity classes cannot be used in UML. Composition implies containment in UML, and it's not possible for Assignment to be contained in both the Employee and the Project classes * Assignment
Association Class
UML
Employee
PK
Project
PK
empno
pno
hrsPerWeek
72
pno
0..1
assigned via
empno
Assignment
assigned via
hrsPerWeek
Project
PK
empno
0..1
pno
Bridge classes could potentially be modeled in UML just using qualifying relationships, which captures weak identity, but not lifetime dependency. BUT: Use Association Classes instead
Ellis Cohen 2001-2008 73
74
Project
pno
Identical
Employee
assigned via
Assignment
assigned via
Project
pno
empno
75
Project
pno
Every project has at least one employee Every project has at least one assignment Emps
empno ename
Asns
empno pno
Projs
pno pname budget
Employee
empno
assigned to
Project
pno
Essentially Identical
assigned via
Employee
empno
Assignment
0..4
assigned via
3..20
Project
pno
77
Researcher Why?
permitted to use
Equipment
79
Researcher
permitted to use
Equipment
80
Permissions
rschid eqpid
Equipment
eqpid eqpnam mgr !
If a researcher manages a piece of equipment, then that researcher must also be permitted to use it
(SELECT count(*) FROM Equipment) = (SELECT count(*) FROM (Equipment e JOIN Permissions p ON e.eqpid = p.eqpid AND rschid = mgr))
Ellis Cohen 2001-2008 81
Researcher
Equipment
Permission
82
Researcher
permitted via
Permission
isManager
permitted via
Equipment
83
Required Constraint
+ State Constraint: Every piece of equipment is managed by a single researcher
Researcher
permitted via
Permission
isManager
permitted via
Equipment
84
Permissions
rschid eqpid isManager
Equipment
eqpid eqpnam
Every piece of equipment is managed by a single researcher (SELECT count(rschid) FROM (Permissions p RIGHT JOIN Equipment e ON p.eqpid = e.eqpid AND p.isManager = 'T')) ALL = 1
85
Permissions
eqpid rschid
Equipment
eqpid eqpnam mgr !
If a researcher manages a piece of equipment, then that researcher must also be permitted to use it
Permissions Researchers
rschid rname eqpid rschid
Equipment
eqpid eqpnam mgr !
86
87
Employee
empno ename
Assigtnment
Project
pno pname budget
job hrsPerWeek
An employee may have multiple assignments to the same project These are discriminated by job
Textual Conceptual Model (Brief ConText) [Employee, Project] Assignment( job, hrsPerWeek )
88
Employee
empno ename
Assigtnment
Project
pno pname budget
job hrsPerWeek
Asns
empno pno job hrsPerWeek
Projs
pno pname budget
89
Asns
empno pno job hrsPerWeek
Projs
pno pname budget
CREATE TABLE Asns( empno number(5) not null references Emps, pno number(6) not null references Projs, job varchar(10), hrsPerWeek number(2), primary key( empno, pno, job ) );
90
Employee
Assignment
Project
pno pname budget
Add surrogate PK add uniqueness constraint
empno ename
+ There is at most one assignment for the same employee, project and job
Asns
asnid empno ! pno ! job hrsPerWeek
Ellis Cohen 2001-2008
Projects
pno pname budget
91
Emp
empno
Asn
job
Proj
pno
+ There is at most one assignment for the same employee, project & job
Emps
empno
Asns
empno pno job
Projs
pno
Emp
empno
Asn
job
Proj
pno
92
Emp
empno
Asn
job
Proj
pno
+ There is at most one assignment for the same employee, project & job
Emps
empno
Asns
empno ! pno job
Projs
pno
Emp
empno
Asn
job
Proj
pno
93
94
Assignment
hrsPerWeek
Project
pno
Agency
agencyid
95
Assignment
hrsPerWeek
Project
pno
Agency
agencyid
Contrs
cno
Projs
pno
96
Contrs
cno
Projs
pno
CREATE TABLE Asns( cno number(5) not null references Contrs on delete cascade, pno number(6) not null references Projs on delete cascade, hrsPerWeek number(2), agencyid number(5) references Agencies, primary key( cno, pno ) );
97
UML
Contractor
PK
Project
PK
pno
Agency
PK
agencyid
98
Contractor
cno
Assignment
hrsPerWeek
Project
pno
Bill
billid billdate
99
Assignment
hrsPerWeek
Project
pno
If an assignment cant be deleted if it has any outstanding bills, what happens when an attempt is made to delete a contractor?
Contrs
cno
Projs
pno
Ellis Cohen 2001-2008 100
Contrs
cno
Projs
pno
CREATE TABLE Bills( billid number(8) primary key, billdate date, cno number(5) not null, pno number(6) not null, foreign key( cno, pno ) references Asns );
101
Possible Representation?
Contractor
cno
Assignment
hrsPerWeek
Project
pno
Bill
billid billdate
Projs
pno
Ellis Cohen 2001-2008 102
Incorrect Representation
Contractor
cno
Assignment
hrsPerWeek
Project
pno
Bill
billid billdate
It ensures that the cno and the pno on the bill are both correct, but doesn't guarantee that the contractor actually worked on the project! Asns Bills
billid billdate cno ! pno ! cno pno hrsPerWeek
Contrs
cno
Projs
pno
Ellis Cohen 2001-2008 103
Contractor
cno
Assignment
hrsPerWeek used
Project
pno
Tool
toolid
Ellis Cohen 2001-2008
104
Assignment
hrsPerWeek uses
Project
pno
Tool
toolid
Asns
cno pno hrsPerWeek
This represents a 3way combination of contractors, projects & tools
Contrs
cno
Projs Tools
toolid
pno
105
Asns
cno pno hrsPerWeek
Contrs
cno
Projs Tools
toolid pno
CREATE TABLE Uses( cno number(5), pno number(6), toolid number(5) references Tools on delete cascade, primary key( cno, pno, toolid ), foreign key( cno, pno ) references Asns on delete cascade );
Ellis Cohen 2001-2008 106
Simplifying Requirements
Contractor
cno used
Assignment
hrsPerWeek
Project
pno
Tool
toolid
Suppose we didn't need to keep track of how many hours each contractor worked on each project, but just wanted to know which tools each contractor use on each project
Ellis Cohen 2001-2008 107
Uses
Project
pno
Tool
toolid
Contrs
cno
Projs
pno
108
Projs
pno
CREATE TABLE Uses( cno number(5) references Contrs on delete cascade, pno number(6) references Projs on delete cascade, toolid number(5) references Tools on delete cascade, primary key( cno, pno, toolid );
Ellis Cohen 2001-2008 109