View
181
Download
12
Category
Preview:
DESCRIPTION
CS 157 Lecture 13. Relational Algebra and SQL. Prof. Sin-Min Lee Department of Computer Science San Jose State University. Functional Dependencies. A form of constraint hence, part of the schema Finding them is part of the database design Also used in normalizing the relations - PowerPoint PPT Presentation
Citation preview
Relational Algebra and SQLRelational Algebra and SQL
Prof. Sin-Min Lee
Department of Computer Science
San Jose State University
©Silberschatz, Korth and Sudarshan3.2Database System Concepts
Functional DependenciesFunctional Dependencies A form of constraint
hence, part of the schema Finding them is part of the database design Also used in normalizing the relations
Warning: this is the most abstract, and “hardest” part of the course.
©Silberschatz, Korth and Sudarshan3.3Database System Concepts
Functional DependenciesFunctional Dependencies
Definition:
If two tuples agree on the attributes
then they must also agree on the attributes
Formally:
A1, A2, …, An B1, B2, …, Bm
A1, A2, …, An
B1, B2, …, Bm
©Silberschatz, Korth and Sudarshan3.4Database System Concepts
ExamplesExamples
EmpID Name, Phone, Position Position Phone but Phone Position
EmpID Name Phone PositionE0045 Smith 1234 ClerkE1847 John 9876 SalesrepE1111 Smith 9876 SalesrepE9999 Mary 1234 Lawyer
©Silberschatz, Korth and Sudarshan3.5Database System Concepts
In GeneralIn General
To check A B, erase all other columns
check if the remaining relation is many-one (called functional in mathematics)
… A … B X1 Y1 X2 Y2 … …
©Silberschatz, Korth and Sudarshan3.6Database System Concepts
ExampleExample
EmpID Name Phone PositionE0045 Smith 1234 ClerkE1847 John 9876 SalesrepE1111 Smith 9876 SalesrepE9999 Mary 1234 Lawyer
Position Phone
©Silberschatz, Korth and Sudarshan3.7Database System Concepts
Typical Examples of FDsTypical Examples of FDs
Product: name price, manufacturer
Person: ssn name, age
Company: name stockprice, president
©Silberschatz, Korth and Sudarshan3.8Database System Concepts
ExampleExample
Product(name, category, color, department, price)
name colorcategory departmentcolor, category price
Consider these FDs:
What do they say ?
©Silberschatz, Korth and Sudarshan3.9Database System Concepts
ExampleExample
FD’s are constraints on relations:• On some instances they hold• On others they don’t
name category color department price
Gizmo Gadget Green Toys 49
Tweaker Gadget Green Toys 99
Does this instance satisfy all the FDs ?
name colorcategory departmentcolor, category price
©Silberschatz, Korth and Sudarshan3.10Database System Concepts
ExampleExample
name category color department price
Gizmo Gadget Green Toys 49
Tweaker Gadget Black Toys 99
Gizmo Stationary Green Office-supp. 59
What about this one ?
name colorcategory departmentcolor, category price
©Silberschatz, Korth and Sudarshan3.11Database System Concepts
ExampleExample
If some FDs are satisfied, thenothers are satisfied too
If all these FDs are true:name colorcategory departmentcolor, category price
Then this FD also holds: name, category price
Why ??
©Silberschatz, Korth and Sudarshan3.12Database System Concepts
Inference Rules for FD’sInference Rules for FD’s
Is equivalent to
Splitting rule and Combining rule
A1 ... Am B1 ... Bm
A1, A2, …, An B1, B2, …, Bm
A1, A2, …, An B1
A1, A2, …, An B2
. . . . .A1, A2, …, An Bm
©Silberschatz, Korth and Sudarshan3.13Database System Concepts
Inference Rules for FD’sInference Rules for FD’s(continued)(continued)
Trivial Rule
Why ?
A1 … Am
where i = 1, 2, ..., n
A1, A2, …, An Ai
©Silberschatz, Korth and Sudarshan3.14Database System Concepts
Inference Rules for FD’sInference Rules for FD’s(continued)(continued)
Transitive Closure Rule
If
and
then
Why ?
A1, A2, …, An B1, B2, …, Bm
B1, B2, …, Bm C1, C2, …, Cp
A1, A2, …, An C1, C2, …, Cp
©Silberschatz, Korth and Sudarshan3.15Database System Concepts
A1 … Am B1 … Bm C1 ... Cp
©Silberschatz, Korth and Sudarshan3.16Database System Concepts
Example (continued)Example (continued)
Start from the following FDs:
Infer the following FDs:
1. name color2. category department3. color, category price
Inferred FD Which Ruledid we apply ?
4. name, category name
5. name, category color
6. name, category category
7. name, category color, category
8. name, category price
©Silberschatz, Korth and Sudarshan3.17Database System Concepts
Example (continued)Example (continued)
Answers:
Inferred FD Which Ruledid we apply ?
4. name, category name Trivial rule
5. name, category color Transitivity on 4, 1
6. name, category category Trivial rule
7. name, category color, category Split/combine on 5, 6
8. name, category price Transitivity on 3, 7
1. name color2. category department3. color, category price
©Silberschatz, Korth and Sudarshan3.18Database System Concepts
Another ExampleAnother Example Enrollment(student, major, course, room, time)
student major
major, course room
course time
What else can we infer ?
©Silberschatz, Korth and Sudarshan3.19Database System Concepts
Another RuleAnother Rule
If
then
Augmentation follows from trivial rules and transitivityHow ?
A1, A2, …, An B
A1, A2, …, An , C1, C2, …, Cp B
Augmentation
©Silberschatz, Korth and Sudarshan3.20Database System Concepts
R(A B C D)
1 2 2 1 Functional Dependency Graph
2 1 2 3 A B C D
1 2 4 2
3 1 2 1
3 1 1 4
©Silberschatz, Korth and Sudarshan3.21Database System Concepts
Problem: infer ALL FDsProblem: infer ALL FDs
Given a set of FDs, infer all possible FDs
How to proceed ? Try all possible FDs, apply all 3 rules
E.g. R(A, B, C, D): how many FDs are possible ? Drop trivial FDs, drop augmented FDs
Still way too many Better: use the Closure Algorithm (next)
©Silberschatz, Korth and Sudarshan3.22Database System Concepts
Relational AlgebraRelational Algebra Procedural language Six basic operators
select project union set difference Cartesian product rename
The operators take two or more relations as inputs and give a new relation as a result.
©Silberschatz, Korth and Sudarshan3.23Database System Concepts
Select Operation – ExampleSelect Operation – Example
• Relation r A B C D
15
1223
773
10
A=B ^ D > 5 (r)A B C D
123
710
©Silberschatz, Korth and Sudarshan3.24Database System Concepts
Select OperationSelect Operation
Notation: p(r) p is called the selection predicate Defined as:
p(r) = {t | t r and p(t)}Where p is a formula in propositional calculus consisting of terms connected by : (and), (or), (not)Each term is one of:<attribute> op <attribute> or <constant>
where op is one of: =, , >, . <. Example of selection:
branch-name=“Perryridge”(account)
©Silberschatz, Korth and Sudarshan3.25Database System Concepts
Project Operation – ExampleProject Operation – Example
Relation r: A B C
10203040
1112
A C
1112
=
A C
112
A,C (r)
©Silberschatz, Korth and Sudarshan3.26Database System Concepts
Project OperationProject Operation Notation:
A1, A2, …, Ak (r)
where A1, A2 are attribute names and r is a relation name.
The result is defined as the relation of k columns obtained by erasing the columns that are not listed
Duplicate rows removed from result, since relations are sets E.g. To eliminate the branch-name attribute of account
account-number, balance (account)
©Silberschatz, Korth and Sudarshan3.27Database System Concepts
Union Operation – ExampleUnion Operation – Example
Relations r, s:
r s:
A B
121
A B
23
rs
A B
1213
©Silberschatz, Korth and Sudarshan3.28Database System Concepts
Union OperationUnion Operation Notation: r s Defined as:
r s = {t | t r or t s}
For r s to be valid.
1. r, s must have the same arity (same number of attributes)
2. The attribute domains must be compatible (e.g., 2nd column of r deals with the same type of values as does the 2nd column of s)
E.g. to find all customers with either an account or a loan customer-name (depositor) customer-name (borrower)
©Silberschatz, Korth and Sudarshan3.29Database System Concepts
Set Difference Operation – ExampleSet Difference Operation – Example
Relations r, s:
r – s:
A B
121
A B
23
rs
A B
11
©Silberschatz, Korth and Sudarshan3.30Database System Concepts
Set Difference OperationSet Difference Operation Notation r – s Defined as:
r – s = {t | t r and t s} Set differences must be taken between compatible relations.
r and s must have the same arity attribute domains of r and s must be compatible
©Silberschatz, Korth and Sudarshan3.31Database System Concepts
Cartesian-Product Operation-ExampleCartesian-Product Operation-Example
Relations r, s:
r x s:
A B
12
A B
11112222
C D
1019201010102010
E
aabbaabb
C D
10102010
E
aabbr
s
©Silberschatz, Korth and Sudarshan3.32Database System Concepts
Cartesian-Product OperationCartesian-Product Operation Notation r x s Defined as:
r x s = {t q | t r and q s} Assume that attributes of r(R) and s(S) are disjoint. (That is,
R S = ). If attributes of r(R) and s(S) are not disjoint, then renaming must
be used.
©Silberschatz, Korth and Sudarshan3.33Database System Concepts
Composition of OperationsComposition of Operations Can build expressions using multiple operations Example: A=C(r x s)
r x s
A=C(r x s)
A B
11112222
C D
1019201010102010
E
aabbaabb
A B C D E
122
102020aab
©Silberschatz, Korth and Sudarshan3.34Database System Concepts
Rename OperationRename Operation Allows us to name, and therefore to refer to, the results of
relational-algebra expressions. Allows us to refer to a relation by more than one name.
Example:
x (E)
returns the expression E under the name XIf a relational-algebra expression E has arity n, then
x (A1, A2, …, An) (E)
returns the result of expression E under the name X, and with the
attributes renamed to A1, A2, …., An.
©Silberschatz, Korth and Sudarshan3.35Database System Concepts
Banking ExampleBanking Example
branch (branch-name, branch-city, assets)
customer (customer-name, customer-street, customer-only)
account (account-number, branch-name, balance)
loan (loan-number, branch-name, amount)
depositor (customer-name, account-number)
borrower (customer-name, loan-number)
©Silberschatz, Korth and Sudarshan3.36Database System Concepts
Example QueriesExample Queries
Find all loans of over $1200
amount > 1200 (loan) Find the loan number for each loan of an amount greater than
$1200
loan-number (amount > 1200 (loan))
©Silberschatz, Korth and Sudarshan3.37Database System Concepts
Example QueriesExample Queries
Find the names of all customers who have a loan, an account, or both, from the bank
customer-name (borrower) customer-name (depositor)
Find the names of all customers who have a loan and an account at bank.
customer-name (borrower) customer-name (depositor)
©Silberschatz, Korth and Sudarshan3.38Database System Concepts
Example QueriesExample Queries Find the names of all customers who have a loan at the Perryridge
branch.
customer-name (branch-name=“Perryridge”
(borrower.loan-number = loan.loan-number(borrower x loan))) Find the names of all customers who have a loan at the Perryridge
branch but do not have an account at any branch of the bank.
customer-name (branch-name = “Perryridge”
(borrower.loan-number = loan.loan-number(borrower x loan)))
– customer-name(depositor)
©Silberschatz, Korth and Sudarshan3.39Database System Concepts
Example QueriesExample Queries Find the names of all customers who have a loan at the Perryridge
branch. Query 1
customer-name(branch-name = “Perryridge”
(borrower.loan-number = loan.loan-number(borrower x loan)))
Query 2
customer-name(loan.loan-number = borrower.loan-number( (branch-name = “Perryridge”(loan)) x borrower) )
©Silberschatz, Korth and Sudarshan3.40Database System Concepts
Example QueriesExample Queries
Find the largest account balance Rename account relation as d The query is:
balance(account) - account.balance
(account.balance < d.balance (account x d (account)))
©Silberschatz, Korth and Sudarshan3.41Database System Concepts
Additional OperationsAdditional Operations
We define additional operations that do not add any power to the
relational algebra, but that simplify common queries.
Set intersection Natural join Division Assignment
©Silberschatz, Korth and Sudarshan3.42Database System Concepts
Set-Intersection OperationSet-Intersection Operation Notation: r s Defined as: r s ={ t | t r and t s } Assume:
r, s have the same arity attributes of r and s are compatible
Note: r s = r - (r - s)
©Silberschatz, Korth and Sudarshan3.43Database System Concepts
Set-Intersection Operation - ExampleSet-Intersection Operation - Example Relation r, s:
r s
A B
121
A B
23r s
A B
2
©Silberschatz, Korth and Sudarshan3.44Database System Concepts
Natural-Join OperationNatural-Join Operation Notation: r s Let r and s be relations on schemas R and S respectively.The result is a
relation on schema R S which is obtained by considering each pair of tuples tr from r and ts from s.
If tr and ts have the same value on each of the attributes in R S, a tuple t is added to the result, where t has the same value as tr on r
t has the same value as ts on s
Example:R = (A, B, C, D)S = (E, B, D)
Result schema = (A, B, C, D, E) r s is defined as:
r.A, r.B, r.C, r.D, s.E (r.B = s.B r.D = s.D (r x s))
©Silberschatz, Korth and Sudarshan3.45Database System Concepts
Natural Join Operation – ExampleNatural Join Operation – Example
Relations r, s:
A B
12412
C D
aabab
B
13123
D
aaabb
E
r
A B
11112
C D
aaaab
E
s
r s
©Silberschatz, Korth and Sudarshan3.46Database System Concepts
Division OperationDivision Operation
Suited to queries that include the phrase “for all”. Let r and s be relations on schemas R and S respectively
where R = (A1, …, Am, B1, …, Bn)
S = (B1, …, Bn)
The result of r s is a relation on schema
R – S = (A1, …, Am)
r s = { t | t R-S(r) u s ( tu r ) }
r s
©Silberschatz, Korth and Sudarshan3.47Database System Concepts
Division Operation – ExampleDivision Operation – Example
Relations r, s:
r s: A
B
12
A B
12311134612r
s
©Silberschatz, Korth and Sudarshan3.48Database System Concepts
Another Division ExampleAnother Division Example
A B
aaaaaaaa
C D
aabababb
E
11113111
Relations r, s:
r s:
D
ab
E
11
A B
aa
C
r
s
©Silberschatz, Korth and Sudarshan3.49Database System Concepts
Division Operation (Cont.)Division Operation (Cont.)
Property Let q – r s Then q is the largest relation satisfying q x s r
Definition in terms of the basic algebra operationLet r(R) and s(S) be relations, and let S R
r s = R-S (r) –R-S ( (R-S (r) x s) – R-S,S(r))
To see why R-S,S(r) simply reorders attributes of r
R-S(R-S (r) x s) – R-S,S(r)) gives those tuples t in
R-S (r) such that for some tuple u s, tu r.
©Silberschatz, Korth and Sudarshan3.50Database System Concepts
Assignment OperationAssignment Operation The assignment operation () provides a convenient way to
express complex queries, write query as a sequential program consisting of a series of assignments followed by an expression whose value is displayed as a result of the query.
Assignment must always be made to a temporary relation variable.
Example: Write r s as
temp1 R-S (r)
temp2 R-S ((temp1 x s) – R-S,S (r))
result = temp1 – temp2
The result to the right of the is assigned to the relation variable on the left of the .
May use variable in subsequent expressions.
©Silberschatz, Korth and Sudarshan3.51Database System Concepts
Example QueriesExample Queries Find all customers who have an account from at least the
“Downtown” and the Uptown” branches. Query 1
CN(BN=“Downtown”(depositor account))
CN(BN=“Uptown”(depositor account))
where CN denotes customer-name and BN denotes branch-name.
Query 2
customer-name, branch-name (depositor account)
temp(branch-name) ({(“Downtown”), (“Uptown”)})
©Silberschatz, Korth and Sudarshan3.52Database System Concepts
Find all customers who have an account at all branches located in Brooklyn city.
customer-name, branch-name (depositor account) branch-name (branch-city = “Brooklyn” (branch))
Example QueriesExample Queries
©Silberschatz, Korth and Sudarshan3.53Database System Concepts
Extended Relational-Algebra-OperationsExtended Relational-Algebra-Operations
Generalized Projection Outer Join Aggregate Functions
©Silberschatz, Korth and Sudarshan3.54Database System Concepts
Generalized ProjectionGeneralized Projection Extends the projection operation by allowing arithmetic functions
to be used in the projection list.
F1, F2, …, Fn(E) E is any relational-algebra expression Each of F1, F2, …, Fn are are arithmetic expressions involving
constants and attributes in the schema of E. Given relation credit-info(customer-name, limit, credit-balance),
find how much more each person can spend:
customer-name, limit – credit-balance (credit-info)
©Silberschatz, Korth and Sudarshan3.55Database System Concepts
Aggregate Functions and OperationsAggregate Functions and Operations Aggregation function takes a collection of values and returns a
single value as a result.
avg: average valuemin: minimum valuemax: maximum valuesum: sum of valuescount: number of values
Aggregate operation in relational algebra
G1, G2, …, Gn g F1( A1), F2( A2),…, Fn( An) (E)
E is any relational-algebra expression G1, G2 …, Gn is a list of attributes on which to group (can be empty)
Each Fi is an aggregate function
Each Ai is an attribute name
©Silberschatz, Korth and Sudarshan3.56Database System Concepts
Aggregate Operation – ExampleAggregate Operation – Example Relation r:
A B
C
773
10
g sum(c) (r)sum-C
27
©Silberschatz, Korth and Sudarshan3.57Database System Concepts
Aggregate Operation – ExampleAggregate Operation – Example
Relation account grouped by branch-name:
branch-name g sum(balance) (account)
branch-name account-number balance
PerryridgePerryridgeBrightonBrightonRedwood
A-102A-201A-217A-215A-222
400900750750700
branch-name balancePerryridgeBrightonRedwood
13001500700
©Silberschatz, Korth and Sudarshan3.58Database System Concepts
Aggregate Functions (Cont.)Aggregate Functions (Cont.) Result of aggregation does not have a name
Can use rename operation to give it a name For convenience, we permit renaming as part of aggregate
operation
branch-name g sum(balance) as sum-balance (account)
©Silberschatz, Korth and Sudarshan3.59Database System Concepts
Outer JoinOuter Join An extension of the join operation that avoids loss of information. Computes the join and then adds tuples form one relation that
does not match tuples in the other relation to the result of the join.
Uses null values: null signifies that the value is unknown or does not exist All comparisons involving null are (roughly speaking) false by
definition. Will study precise meaning of comparisons with nulls later
©Silberschatz, Korth and Sudarshan3.60Database System Concepts
Outer Join – ExampleOuter Join – Example
Relation loan
loan-number amountL-170L-230L-260
300040001700 Relation borrower
customer-name loan-numberJonesSmithHayes
L-170L-230L-155
branch-nameDowntownRedwoodPerryridge
©Silberschatz, Korth and Sudarshan3.61Database System Concepts
Outer Join – ExampleOuter Join – Example
Inner Join
loan Borrower
loan borrower
Left Outer Join
loan-number amount
L-170L-230
30004000customer-name
JonesSmith
branch-name
DowntownRedwood
loan-number amountL-170L-230L-260
300040001700
customer-nameJonesSmithnull
branch-nameDowntownRedwoodPerryridge
©Silberschatz, Korth and Sudarshan3.62Database System Concepts
Outer Join – ExampleOuter Join – Example Right Outer Join loan borrower
loan-number amountL-170L-230L-155
30004000null
customer-nameJonesSmithHayes
loan-number amount
L-170L-230L-260L-155
300040001700null
customer-name
JonesSmithnullHayes
loan borrower Full Outer Join
branch-nameDowntownRedwoodnull
branch-name
DowntownRedwoodPerryridgenull
©Silberschatz, Korth and Sudarshan3.63Database System Concepts
Null ValuesNull Values It is possible for tuples to have a null value, denoted by null, for
some of their attributes null signifies an unknown value or that a value does not exist. The result of any arithmetic expression involving null is null. Aggregate functions simply ignore null values
Is an arbitrary decision. Could have returned null as result instead. We follow the semantics of SQL in its handling of null values
For duplicate elimination and grouping, null is treated like any other value, and two nulls are assumed to be the same Alternative: assume each null is different from each other Both are arbitrary decisions, so we simply follow SQL
©Silberschatz, Korth and Sudarshan3.64Database System Concepts
Null ValuesNull Values Comparisons with null values return the special truth value
unknown If false was used instead of unknown, then not (A < 5)
would not be equivalent to A >= 5 Three-valued logic using the truth value unknown:
OR: (unknown or true) = true, (unknown or false) = unknown (unknown or unknown) = unknown
AND: (true and unknown) = unknown, (false and unknown) = false, (unknown and unknown) = unknown
NOT: (not unknown) = unknown In SQL “P is unknown” evaluates to true if predicate P evaluates
to unknown Result of select predicate is treated as false if it evaluates to
unknown
©Silberschatz, Korth and Sudarshan3.65Database System Concepts
Modification of the DatabaseModification of the Database The content of the database may be modified using the following
operations: Deletion Insertion Updating
All these operations are expressed using the assignment operator.
©Silberschatz, Korth and Sudarshan3.66Database System Concepts
DeletionDeletion A delete request is expressed similarly to a query, except
instead of displaying tuples to the user, the selected tuples are removed from the database.
Can delete only whole tuples; cannot delete values on only particular attributes
A deletion is expressed in relational algebra by:
r r – Ewhere r is a relation and E is a relational algebra query.
©Silberschatz, Korth and Sudarshan3.67Database System Concepts
Deletion ExamplesDeletion Examples
Delete all account records in the Perryridge branch.
account account – branch-name = “Perryridge” (account)
Delete all loan records with amount in the range of 0 to 50
loan loan – amount 0and amount 50 (loan)
Delete all accounts at branches located in Needham.
r1 branch-city = “Needham” (account branch)
r2 branch-name, account-number, balance (r1)
r3 customer-name, account-number (r2 depositor)
account account – r2
depositor depositor – r3
©Silberschatz, Korth and Sudarshan3.68Database System Concepts
InsertionInsertion To insert data into a relation, we either:
specify a tuple to be inserted write a query whose result is a set of tuples to be inserted
in relational algebra, an insertion is expressed by:
r r Ewhere r is a relation and E is a relational algebra expression.
The insertion of a single tuple is expressed by letting E be a constant relation containing one tuple.
©Silberschatz, Korth and Sudarshan3.69Database System Concepts
Insertion ExamplesInsertion Examples Insert information in the database specifying that Smith has
$1200 in account A-973 at the Perryridge branch.
account account {(“Perryridge”, A-973, 1200)}
depositor depositor {(“Smith”, A-973)}
Provide as a gift for all loan customers in the Perryridge branch, a $200 savings account. Let the loan number serve as the account number for the new savings account.
r1 (branch-name = “Perryridge” (borrower loan))
account account branch-name, account-number,200 (r1)
depositor depositor customer-name, loan-number,(r1)
©Silberschatz, Korth and Sudarshan3.70Database System Concepts
UpdatingUpdating A mechanism to change a value in a tuple without charging all
values in the tuple Use the generalized projection operator to do this task
r F1, F2, …, FI, (r) Each F, is either the ith attribute of r, if the ith attribute is not
updated, or, if the attribute is to be updated Fi is an expression, involving only constants and the attributes of
r, which gives the new value for the attribute
©Silberschatz, Korth and Sudarshan3.71Database System Concepts
Update ExamplesUpdate Examples Make interest payments by increasing all balances by 5 percent.
account AN, BN, BAL * 1.05 (account)
where AN, BN and BAL stand for account-number, branch-name and balance, respectively.
Pay all accounts with balances over $10,0006 percent interest and pay all others 5 percent
account AN, BN, BAL * 1.06 ( BAL 10000 (account)) AN, BN, BAL * 1.05 (BAL 10000 (account))
Recommended