Transcript R - DWW

The Relational Algebra
Database System-dww
Chapter Outline
Fundamental Operator
Deliverable & Additional Operator
Slide 6a-2
Database System-dww
What is Relational Algebra?
Relational Algebra is a Procedural Paradigm
You Need to Tell What/How to Construct the Result
Consists of a Set of Operators Which, When Applied to
Relations, Yield Relations (Closed Algebra)

Basic Relational Operations:

Unary Operations
 SELECT s
PROJECT  or P.
Binary Operations
 Set operations:
 UNION 
 INTERSECTION 
 DIFFERENCE –
 CARTESIAN PRODUCT 
 JOIN operations



Slide 6a-3
Database System-dww
Relational Algebra
R S
R S
R\S
R S
union
intersection
set difference
Cartesian product
A1, A2, ..., An (R)
projection
sF (R)
selection
R S
natural join
R S
theta-join
RS
division
[A1 B1,.., An Bn] rename
Slide 6a-4
Database System-dww
Selection
Selects the Set of Tuples (Rows) From a
Relation, Which Satisfy a Selection Condition
General Form s<selection condition> (R)
R is a Relation
Selection condition is a Boolean Expression on the
Attributes of R
Resulting Relation Has the Same Schema as R
Select Finds and Retrieves All Relevant Rows
(Tuples) of Table/Relation R which Includes ALL
of its Columns (Attributes)
Slide 6a-5
Database System-dww
Selection Example
EMP
ENO
ENAME
TITLE
E1
E2
E3
E4
E5
E6
E7
E8
J. Doe
M. Smith
A. Lee
J. Miller
B. Casey
L. Chu
R. Davis
J. Jones
Elect. Eng.
Syst. Anal.
Mech. Eng.
Programmer
Syst. Anal.
Elect. Eng.
Mech. Eng.
Syst. Anal.
sTITLE='Elect. Eng.'(EMP)
ENO
E1
E6
ENAME
J. Doe
L. Chu
TITLE
Elect. Eng
Elect. Eng.
sTITLE='Elect. Eng.’ OR TITLE=‘Mech.Eng’(EMP)
Slide 6a-6
Database System-dww
Another Selection Example
A
S
C
null
W
B
null
null
Slide 6a-7
Database System-dww
Selection Condition
A SELECT Condition is a Boolean Expression
Form F1 YF2 Y...,YFq (Q>=1), Where
Fi (I=1,…,q) are Atomic Boolean Expressions of
the Form
ac or ab,
a, b are Attributes of R and c is a Constant.
The Operator  is one of the Arithmetic
Comparison Operators: <, >, =, <>,>=,<=
The Operator Y is one of the Logical Operators:
, , ¬
Nesting: ( )
Slide 6a-8
Database System-dww
Projection
Select certain Columns (Attributes) Specified in
an Attribute List X From a Relation R
General Form <attribute-list>(R)
R is a Relation
Attribute-list is a Subset of the Attributes of R Over
Which the Projection is Performed
Project Retrieves Specified Columns of
Table/Relation R which Includes ALL of its Rows
(Tuples)
Slide 6a-9
Database System-dww
Projection Example
PROJ
PNO
PNAME
BUDGET
P1
Instrumentation
150000
P2
Database Develop.
135000
P3
CAD/CAM
250000
P4
P5
Maintenance
CAD/CAM
310000
500000
 PNO,BUDGET(PROJ)
PNO
BUDGET
P1
150000
P2
135000
P3
P4
P5
250000
310000
500000
Slide 6a-10
Database System-dww
Other Projection Examples
Slide 6a-11
Database System-dww
Relational Algebra Expression
Several Operations can be Combined to form a
Relational Algebra Expression (query)
Example: Retrieve all Customers over age 60?
Method 1:
 CNAME, ADDRESS, AGE (s AGE>60(CUSTOMER) )
Method 2:
Senior-CUST(C#, Addr, Age)
=  CNAME, ADDRESS, AGE (s AGE>60(CUSTOMER) )
Method 3:
 CNAME, ADDRESS, AGE (C) where
C =s
AGE>60(CUSTOMER)
Slide 6a-12
Database System-dww
Characteristics of Projection
The PROJECT Operation Eliminates Duplicate Tuples
in the Resulting Relation
Why?
Projection Must Maintain a Mathematical Set (No Duplicate
Elements)
EMP
 TITLE(PROJ)
ENO
ENAME
TITLE
TITLE
E1
E2
E3
E4
E5
E6
E7
E8
J. Doe
M. Smith
A. Lee
J. Miller
B. Casey
L. Chu
R. Davis
J. Jones
Elect. Eng.
Syst. Anal.
Mech. Eng.
Programmer
Syst. Anal.
Elect. Eng.
Mech. Eng.
Syst. Anal.
Elect.Eng
Syst.Anal
Mech.Eng
Programmer
Database System-dww
Slide 6a-13
Selection with Projection Example
Slide 6a-14
Database System-dww
Renaming
The RENAME operator gives a new schema
to a relation.
R1 := RENAMER1(A1,…,An)(R2) makes R1 be
a relation with attributes A1,…,An and the
same tuples as R2.
Simplified notation: R1(A1,…,An) := R2.
Other use () notation
R2  R1(A1,…,An)
Slide 6a-15
Database System-dww
Sequences of Assignments
Create temporary relation names.
Renaming can be implied by giving relations
a list of attributes.
Example: R3 := R1 JOINC R2 can be written:
R4 := R1 * R2
R3 := SELECTC (R4)
OR
R4  R1 * R2
R3  SELECTC (R4)
Slide 6a-16
Database System-dww
Union
General Form
RS
where R, S are Relations
Result contains Tuples from both R and S
Duplications are Removed
The two Operands R, S should be union-compatible
Example:
“find students registered for course C1 or C3”
s#(sCNO=‘C1’ (S-C)) s#(sCNO=‘C3’ (S-C))
Slide 6a-17
Database System-dww
Union Compatibility
Two Relations R1(A1, A2, ..., An) and R2(B1, B2, ..., Bn)
are said Union-compatible If and Only If They Have
The Same Number of Attributes
The Domains of Corresponding Attributes are Compatible,
i.e., Dom(Ai)=dom(Bi) for i=1, 2, ..., N
Names Do Not Have to be Same!
For Relational Union and Difference Operations, the
Operand Relations Must Be Union Compatible
The Resulting Relation for Relational Set Operations
Has the Same Attribute Names as the First Operand
Relation R1 (by Convention)
Slide 6a-18
Database System-dww
Set Difference
General Form
R–S
where R and S are Relations
Result Contains all tuples that are in R, but not in S.
R – S <> S – R
Again, there Must be Compatibility
Example
“Find the students who registered course C1 but not C3”
s#(sCNO=‘C1’ (S-C)) – s#(sCNO=‘C3’ (S-C))
Slide 6a-19
Database System-dww
Set Intersection
General Form
R S
where R and S are Relations
Result Contains all Tuples that are in R and S.
R S = R – (R – S)
Again, there Must be Compatibility
Example
“find the students who registered for both C1 and C3”
s#(sCNO=‘C1’ (S-C))  s#(sCNO=‘C3’ (S-C))
Slide 6a-20
Database System-dww
Union, Difference, Intersection Examples
What are these Other
Three Result Tables? STUDENT  INSTRUCTOR
STUDENT - INSTRUCTOR
Slide 6a-21
Database System-dww
INSTRUCTOR - STUDENT
Cartesian Product
Given Relations
R of Degree k1 and Cardinality card1
S of Degree k2 and Cardinality card2
Cartesian Product
RS
is a Relation of Degree (k1+ k2) and Consists of Tuples
of Degree (k1+ k2) where each Tuple is a
Concatenation of one Tuple of R with one Tuple of S
Cardinality of the Result of the Cartesian Product
R  S is card1 * card2
What is One Problem with Cartesian Product w.r.t. the
Result Set?
Slide 6a-22
Database System-dww
Cartesian Product: Example
R
A
B
C
a1
a2
a3
b1
b1
b4
c3
c5
c7
R S
S
E
F
e1
e2
f1
f5
A
B
C
E
F
a1
a1
a2
a2
a3
a3
b1
b1
b1
b1
b4
b4
c3
c3
c5
c5
c7
c7
e1
e2
e1
e2
e1
e2
f1
f5
f1
f5
f1
f5
Database System-dww
Slide 6a-23
Cartesian Product
Given R(A1, …,An) and S(B1,…,Bm), the result of a
Cartesian product R  S is a relation of schema
R’(A1, …, An, B1, …, Bm).
Example
“Get a list containing (S#, C#) for all students who live in
Storrs but are not registered for the database course”
(S#(scity=‘Storrs’(STUDENT)) 
C# (sCNAME=‘Database’(COURSE)))
– S#, C#(S-C)
Slide 6a-24
Database System-dww
Cartesian Product Example
EMP SAL
EMP
ENO
E1
E2
E3
E4
E5
E6
E7
E8
ENAME
J. Doe
M. Smith
A. Lee
J. Miller
B. Casey
L. Chu
R. Davis
J. Jones
TITLE
Elect. Eng
Syst. Anal.
Mech. Eng.
Programmer
Syst. Anal.
Elect. Eng.
Mech. Eng.
Syst. Anal.
SAL
TITLE
Elect. Eng.
Syst. Anal.
Mech. Eng.
Programmer
SAL
40000
34000
27000
24000
ENO
ENAME
EMP.TITLE
SAL.TITLE
SAL
E1
E1
E1
E1
E2
E2
E2
E2
E3
E3
E3
E3
J. Doe
J. Doe
J. Doe
J. Doe
M. Smith
M. Smith
M. Smith
M. Smith
A. Lee
A. Lee
A. Lee
A. Lee
Elect. Eng.
Elect. Eng.
Elect. Eng.
Elect. Eng.
Syst. Anal.
Syst. Anal.
Syst. Anal.
Syst. Anal.
Mech. Eng.
Mech. Eng.
Mech. Eng.
Mech. Eng.
Elect. Eng.
Syst. Anal.
Mech. Eng.
Programmer
Elect. Eng.
Syst. Anal.
Mech. Eng.
Programmer
Elect. Eng.
Syst. Anal.
Mech. Eng.
Programmer
40000
34000
27000
24000
40000
34000
27000
24000
40000
34000
27000
24000
E8
E8
E8
E8
J. Jones
J. Jones
J. Jones
J. Jones
Syst. Anal.
Syst. Anal.
Syst. Anal.
Syst. Anal.
Elect. Eng.
Syst. Anal.
Mech. Eng.
Programmer
40000
34000
27000
24000
Slide 6a-25
Database System-dww
The Join Operation
Used to combine related tuples from two
relation into single tuples with some
condition
Cartesian product all combination of tuples
are included in the result, meanwhile in the
join operation, only combination of tuples
satisfying the join condition appear in the
result
Slide 6a-26
Database System-dww
Theta Join (-Join)
General Form
R

S
where
R, S are Relations,
 is a Boolean Expression, called a Join Condition.
A Derivative of Cartesian Product
R

S = s (R  S)
R(A1, A2, ..., Am, B1, B2, ..., Bn) is the Resulting
Schema of a -Join over R1 and R2:
R1(A1, A2, ..., Am)
 R2 (B1, B2, ..., Bn)
Slide 6a-27
Database System-dww
-Join Condition
A -Join Condition is a Boolean Expression of
the form F1 y1 F2 y2 ...,yn-1 Fq (q>=1), where
Fi (i=1,…,q) are Atomic Boolean Expressions of
the form
Ai  Bj,
Ai, Bj are Attributes of R1 and R2 Respectively
 is one of the Algorithmic Comparison Operators
=, <>, >, <. >=, <=
The Operator yi (i=1,…,n-1) is Either a Logical AND
operator  or a logical OR operator 
Slide 6a-28
Database System-dww
-Join Example
EMP
ENO
E1
E2
E3
E4
E5
E6
E7
E8
ENAME
J. Doe
M. Smith
A. Lee
J. Miller
B. Casey
L. Chu
R. Davis
J. Jones
TITLE
Elect. Eng
Syst. Anal.
Mech. Eng.
Programmer
Syst. Anal.
Elect. Eng.
Mech. Eng.
Syst. Anal.
SAL
TITLE
Elect. Eng.
Syst. Anal.
Mech. Eng.
Programmer
SAL
40000
34000
27000
24000
EMP
E.TITLE=SAL.TITLE
SAL
TITLE
SAL.TITLE
SAL
J. Doe
M. Smith
Elect. Eng.
Analyst
Elect. Eng.
Analyst
40000
34000
E3
A. Lee
Mech. Eng.
Mech. Eng.
27000
E4
E5
J. Miller
B. Casey
Programmer
Syst. Anal.
E6
L. Chu
Elect. Eng.
Programmer 24000
Syst. Anal. 34000
Elect. Eng. 40000
E7
E8
R. Davis
J. Jones
Mech. Eng.
Syst. Anal.
Mech. Eng. 27000
Syst. Anal. 34000
ENO
ENAME
E1
E2
Slide 6a-29
Database System-dww
Other Types of Join
Equi-join (EQUIJOIN)
The  Expression only Contains one or more Equality
Comparisons Involving Attributes from R1 and R2
Natural Join
Denoted as R
S
Special Equi-join of Two Relations R and S Over a Set of
Attributes Common to both R and S
By Common, it means that each Join Attribute in A has not
only Compatible Domains but also the Same Name in both
Relations R and S
Slide 6a-30
Database System-dww
Examples
R
A
B
C
a1
a2
a3
b1
b1
b4
c3
c5
c7
EQUIJOIN
S
B
E
b1
b5
e1
e2
Natural Join
R
S
R
R.B=S.B S
A
R.B S.B
C
E
a1
a2
b1 b1
b1 b1
c3
c5
e1
e1
A R.B
C
a1
a2
c3 e1
c5 e1
b1
b1
E
Slide 6a-31
Database System-dww
Natural Join
Natural Join Combines Relations on Attributes with
the Same Names
STUDENT(S#, SN, CITY, Email)
SC(S#, C#, G)
Example Query 1:
“list of students with complete course grade info”
STUDENT
SC
Slide 6a-32
Database System-dww
Natural Join
All Natural Joins can be Expressed by a
Combination of Primitive Operators
Example Query 2:
“print all students info (courses taken and grades)”
Slide 6a-33
Database System-dww
Natural Join Example
EMP
ENO
E1
E2
E3
E4
E5
E6
E7
E8
ENAME
TITLE
J. Doe
M. Smith
A. Lee
J. Miller
B. Casey
L. Chu
R. Davis
J. Jones
Elect. Eng
Syst. Anal.
Mech. Eng.
Programmer
Syst. Anal.
Elect. Eng.
Mech. Eng.
Syst. Anal.
SAL
TITLE
Elect. Eng.
Syst. Anal.
Mech. Eng.
Programmer
SAL
70000
80000
56000
60000
EMP
SAL
SAL
ENO
ENAME
E.TITLE
E1
J. Doe
Elect. Eng.
70000
E2
M. Smith
Syst. Anal.
80000
E3
E4
A. Lee
J. Miller
Mech. Eng.
Programmer
56000
60000
E5
B.Casey
Syst.Anal
80000
E6
L. Chu
Elect.Eng
70000
E7
R.Davis
Mech.Eng
56000
E8
J. Jones
Syst. Anal.
80000
Slide 6a-34
Database System-dww
Slide 6a-35
Database System-dww
Another Join Example
Slide 6a-36
Database System-dww
Quotient (Division)
Given Relations
R(T,U) of degree r
S(U) of degree s
The Division of R by S,
R÷S
Results is a Relation of Degree (rs)
Consists of all (rs)-tuples t such that for all
s-tuples u in S, the tuple tu is in R.
Slide 6a-37
Database System-dww
Division Example
R
ENO PNO
E1
E2
E2
E3
E3
E4
E5
E6
E7
E8
P1
P1
P2
P1
P4
P2
P2
P4
P3
P3
PNAME
BUDGET
Instrumentation
Instrumentation
Database Develop.
Instrumentation
Maintenance
Instrumentation
Instrumentation
Maintenance
CAD/CAM
CAD/CAM
150000
150000
135000
150000
310000
150000
150000
310000
250000
250000
S
Find the
employees who
work for both
project P1 and
project P4?
R÷S
PNO
P1
P4
PNAME
Instrumentation
Maintenance
BUDGET
150000
310000
ENO
E3
Slide 6a-38
Database System-dww
Slide 6a-39
Database System-dww
Slide 6a-40
Database System-dww
Division: Another Example
“list the S# of students that have taken
all of the courses listed in SC”
S# (SCC# (SC))
“list the S# of students who have taken
all of the courses taught by instructor
Smith”
S# (SCC# (sInstructor=‘Smith’(SC)))
Slide 6a-41
Database System-dww
Relational Algebra
Selection
Projection
Union
Difference
Cartesian Product
Intersection
 Join, Equi-join, Natural
Join
 Quotient (Division)
Derivable from the
fundamental operators

Fundamental Operators
Slide 6a-42
Database System-dww
All Relational Algebra Operations
A Set of Relational Algebra Operations
Is Called a Complete Set, If and Only If
Any Relational Algebra Operator in the Set Cannot
be Derived in Terms of a Sequence of Others in
Set
Any Relational Algebra Operator Not in the Set
Can Be Derived in Terms of a Sequence of Only
the Operators in the Set
Slide 6a-43
Database System-dww
All Relational Algebra Operations
Important Concepts:
 The Set of Algebra Operations {s, P , , –, } is
a Complete Set of Relational Algebra Operations
 Any Query Language Equivalent to These Five
Operations is Called Relationally Complete
Slide 6a-44
Database System-dww
Additional Relational Operations
Aggregate Functions and Grouping
A type of request that cannot be expressed in the basic relational
algebra is to specify mathematical aggregate functions on
collections of values from the database.
Examples of such functions include retrieving the average or total
salary of all employees or the total number of employee tuples.
These functions are used in simple statistical queries that summarize
information from the database tuples.
Common functions applied to collections of numeric values include
SUM, AVERAGE, MAXIMUM, and MINIMUM. The COUNT function is
used for counting tuples or values.
Slide 6a-45
Database System-dww
Additional Relational Operations (cont.)
Slide 6a-46
Database System-dww
Additional Relational Operations (cont.)
Use of the Functional operator ℱ
ℱMAX Salary (Employee) retrieves the maximum
salary value from the Employee relation
ℱMIN Salary (Employee) retrieves the minimum
Salary value from the Employee relation
ℱSUM Salary (Employee) retrieves the sum of the
Salary from the Employee relation
ℱCOUNT SSN, AVERAGE Salary (Employee) groups
employees by DNO (department number) and
computes the count of employees and average
salary per department.[ Note: count just counts the
number of rows, without removing duplicates]
DNO
Slide 6a-47
Database System-dww
Slide 6a-48
Database System-dww
Slide 6a-49
Database System-dww
Additional Relational Operations (cont.)
Recursive Closure Operations
Another type of operation that, in general, cannot be specified in the
basic original relational algebra is recursive closure. This operation
is applied to a recursive relationship.
Example: retrieve all SUPERVISEES of an EMPLOYEE e at all
levels—that is, all EMPLOYEE e’ directly supervised by e; all
employees e’’ directly supervised by each employee e’; all employees
e’’’ directly supervised by each employee e’’; and so on .
Although it is possible to retrieve employees at each level and then
take their union, we cannot, in general, specify a query such as
“retrieve the supervisees of ‘James Borg’ at all levels” without
utilizing a looping mechanism.
The SQL3 standard includes syntax for recursive closure.
Slide 6a-50
Database System-dww
Additional Relational Operations (cont.)
Slide 6a-51
Database System-dww
Additional Relational Operations (cont.)
The OUTER JOIN Operation
In NATURAL JOIN tuples without a matching (or related) tuple are
eliminated from the join result. Tuples with null in the join attributes are
also eliminated. This amounts to loss of information.
A set of operations, called outer joins, can be used when we want to keep
all the tuples in R, or all those in S, or all those in both relations in the result
of the join, regardless of whether or not they have matching tuples in the
other relation.
The left outer join operation keeps every tuple in the first or left relation R
in R
S; if no matching tuple is found in S, then the attributes of S in
the join result are filled or “padded” with null values.
A similar operation, right outer join, keeps every tuple in the second or right
relation S in the result of R
S.
A third operation, full outer join, denoted by
keeps all tuples in
both the left and the right relations when no matching tuples are found,
padding them with null values as needed.
Slide 6a-52
Database System-dww
Additional Relational Operations (cont.)
TEMP  (EMPLOYEE
RESULT 
SSN=MGRSSN
DEPARTMENT
P FNAME, MINIT, LNAME, DNAME (TEMP)
Slide 6a-53
Database System-dww
Additional Relational Operations (cont.)
OUTER UNION Operations
The outer union operation was developed to take the
union of tuples from two relations if the relations are
not union compatible.
This operation will take the union of tuples in two
relations R(X, Y) and S(X, Z) that are partially
compatible, meaning that only some of their
attributes, say X, are union compatible.
The attributes that are union compatible are
represented only once in the result, and those attributes
that are not union compatible from either relation are
also kept in the result relation T(X, Y, Z).
Slide 6a-54
Database System-dww
Slide 6a-55
Database System-dww
Slide 6a-56
Database System-dww
Additional Relational Operations (cont.)
OUTER UNION Operations
Example: An outer union can be applied to two relations whose
schemas are
STUDENT(Name, SSN, Department, Advisor) and
INSTRUCTOR(Name, SSN, Department, Rank).
Tuples from the two relations are matched based on having the same
combination of values of the shared attributes—Name, SSN,
Department. If a student is also an instructor, both Advisor and Rank
will have a value; otherwise, one of these two attributes will be null.
The result relation STUDENT_OR_INSTRUCTOR will have the
following attributes:
STUDENT_OR_INSTRUCTOR (Name, SSN, Department,
Advisor, Rank)
Slide 6a-57
Database System-dww
Slide 6a-58
Database System-dww
Q1: Retrieve the name and address of all employees
who work for the ‘Research’ department.
RESEARCH_DEPT  s DNAME=’Research’ (DEPARTMENT)
RESEARCH_EMPS  (RESEARCH_DEPT
DNUMBER= DNOEMPLOYEE)
RESULT   FNAME, LNAME, ADDRESS (RESEARCH_EMPS)
This query could be specified in other ways; for example, the order of
the JOIN and SELECT could be reversed, or the JOIN could be
replaced by a NATURAL JOIN after renaming one of the join
attributes.
RESULT   FNAME, LNAME, ADDRESS (
(DEPARTMENT)
s DNAME=’Research’
DNUMBER= DNO
EMPLOYEE))
Slide 6a-59
Database System-dww
Q2: Retrieve the names of employees who
have no dependents.
ALL_EMPS   SSN(EMPLOYEE)
EMPS_WITH_DEPS(SSN)   ESSN(DEPENDENT)
EMPS_WITHOUT_DEPS  (ALL_EMPS - EMPS_WITH_DEPS)
RESULT   LNAME, FNAME (EMPS_WITHOUT_DEPS * EMPLOYEE)
RESULT   LNAME, FNAME (( SSN(EMPLOYEE) -  ESSN(DEPENDENT)) *
EMPLOYEE)
Slide 6a-60
Database System-dww
Q3: List the name of all employees with two
or more dependents
T1 (SSN, NO_OF_DEPT) 
ESSN ℱ COUNT DEPENDENT_NAME (DEPENDENT)
T2  s NO_OF_DEPS >= 2 (T1)
RESULT   LNAME, FNAME (T2 * EMPLOYEE)
Slide 6a-61
Database System-dww
Exercises
Slide 6a-62
Database System-dww
From the above schema,
(a) Retrieve the names of employees in
department 5 who work more than 10 hours
per week on the 'ProductX' project.
(b) List the names of employees who have a
dependent with the same first name as
themselves.
(c) Find the names of employees that are
directly supervised by 'Franklin Wong'.
(d) For each project, list the project name and
the total hours per week (by all employees)
spent on that project.
(e) Retrieve the names of employees who
work on every project.
Slide 6a-63
Database System-dww
Exercises
(f) Retrieve the names of employees who do
not work on any project.
(g) For each department, retrieve the
department name, and the average salary of
employees working in that department.
(h) Retrieve the average salary of all female
employees.
(i) Find the names and addresses of
employees who work on at least one project
located in Houston but whose department
has no location in Houston.
List the last names of department managers
Slide 6a-64
who have no dependents.
Database System-dww
Retrieve the names of employees
in department 5 who work more
than 10 hours per week on the
'ProductX' project.
EMPLOYEE_WORKS_ON_ProductX 
(sPNAME=‘ProductX’(PROJECT) PNUMBER=PNO(WORKS_ON))
EMPLOYEE_WORKS_MORE_10 
((EMPLOYEE) SSN=ESSN(s HOURS>10(EMPLOYEE_WORKS_ON_ProductX)))
RESULT  FNAME,LNAME,ADDRESS(s EMPLOYEE_WORKS_MORE_10)
Slide 6a-65
Database System-dww
List the names of employees who
have a dependent with the same
first name as themselves
EMPLOYEE_FNAME_SAME_DEPENDENT_NAME 
((EMPLOYEE) (SSN,FNAME)=(ESSN,DEPENDENT_NAME)(DEPENDENT))
RESULT  FNAME,LNAME(EMPLOYEE_FNAME_SAME_DEPENDENT_NAME)
Slide 6a-66
Database System-dww