Title: CMSC424: Database Design
1CMSC424 Database Design
2Review Relational Algebra
- Relational Algebra Operators
- Select (?)
- Project (?)
- Set Union (U)
- Set Difference (-)
- Cartesian Product (?)
- Rename (?)
- These are called fundamental operations
3Relational AlgebraRedundant Operators
4Natural Join
Idea match tuples on common attributes
r
s
5Division
Relation1
Relation2
Notation
Idea expresses for all queries
Query Find customers who have accounts in all
branches in Brooklyn r1 ? all branches in
Brooklyn r2 ? associate customers with branches
they have accounts in Now what ? Use the
division operator
6Outer Joins
Motivation
loan
borrower
Join result loses ? any record of Perry ? any
record of Hayes
7Outer Joins
borrower
loan
1. Left Outer Join ( )
- preserves all tuples in left relation
- NULL
8Outer Joins
borrower
loan
2. Right Outer Join ( )
- preserves all tuples in right relation
- NULL
9Outer Joins
borrower
loan
3. Full Outer Join ( )
- preserves all tuples in both relations
- NULL
10Update
Identifier ? Query
Notation
Common Uses
1. Deletion r ? r s
e.g., account ? account sbnamePerry (account)
(deletes all Perry accounts)
2. Insertion r ? r ? s
e.g., branch ? branch ? (Waltham, Boston, 7M)
(inserts new branch with bname Waltham, bcity
Boston, assets 7M)
3. Update r ? pe1,,en (r)
e.g., account ? pbname,acct_no,bal1.05 (account)
(adds 5 interest to account balances)
11Extended Relational Algebra
- Generalized projection
- Aggregates
12Generalized Projection
? e1,,en (Relation)
Notation
e1,,en can include arithmetic expressions not
just attributes
Example
credit
Then
p cname, limit - balance (credit)
13Generalized Projection
? e1,,en (Relation)
Notation
e1,,en can include arithmetic expressions not
just attributes
Example
credit
Then
p cname, limit - balance as limitbalance (credit)
14Aggregate Functions and Operations
- Aggregation function takes a collection of values
and returns a single value as a result. - avg average value min minimum value max
maximum value sum sum of values count
number of values
15Aggregate Operation Example
A
B
C
? ? ? ?
? ? ? ?
7 7 3 10
sum-C
g sum(c) as sumC (r)
27
16Aggregate Functions and Operations
- General form
- 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
17Aggregate Operation Example
- Relation account grouped by branch-name
branch-name
account-number
balance
Perryridge Perryridge Brighton Brighton Redwood
A-102 A-201 A-217 A-215 A-222
400 900 750 750 700
branch-name g sum(balance) (account)
branch-name
balance
Perryridge Brighton Redwood
1300 1500 700
18Other Theoretical Languages
- Relational Calculus
- Non-procedural
- Tuple relational calculus
- Examples
- Safety
- Domain relational calculus
19Review Query Languages
20SQL - Introduction
- Standard DML/DDL for relational DBs
- DML Data Manipulation Language (queries,
updates) - DDL Data Definition Language (create tables,
indexes, )
Also includes
- View definition
- Security (Authorization)
- Integrity constraints
- Transactions
History
- Early 70s, IBM system R project (SEQUEL)
- Later, become standard (Structured Query Language)
21SQL Basic Structure
SELECT A1, .., An FROM r1, .., rm WHERE P
Equivalent to
? A1,A2,,An (sP (r1? ? rn ))
22A Simple SELECT-FROM-WHERE Query
SELECT bname FROM loan WHERE amt gt 1000
? bname ( ? amt gt 1000 (loan) )
Why preserve duplicates?
But not quite
Can instead write SELECT DISTINCT
bname FROM loan WHERE amt gt 1000 (removes
duplicates from result) We will discuss bag
algebra a bit later
Duplicates are retained (i.e., result not a set)
23Another SELECT-FROM-WHERE Query
SELECT cname, balance FROM depositor,
account WHERE depositor.acct_no account.acct_no
Note
Returns
Can also write SELECT d.cname,
a.balance FROM depositor as d, account as
a WHERE d.acct_no a.acct_no (neccessary for
self-joins)
24The SELECT Clause
- Equivalent to (generalized) projection, despite
name
- Can use to get all attributes
e.g SELECT FROM loan
- Can write SELECT DISTINCT to eliminate duplicates
- Can write SELECT ALL to preserve duplicates
(default)
- Can include arithmetic expressions
e.g SELECT bname, acct_no, balance1.05 FROM a
ccount
25The FROM Clause
- Equivalent to cartesian product (?)
(or , depending on WHERE clause)
- Binds tuples in relations to variable names
- e.g FROM borrower, loan
- Computes borrower ? loan
- Identifies borrower, loan columns in result,
allowing one to write - WHERE borrower.lno loan.lno
- e.g FROM borrower as b, loan as l
- allows one to write
- WHERE b.lno l.lno
26The WHERE Clause
- Equivalent to Selection, despite name
- Simple
- attribute relop attribute (or constant)
- (relop , ltgt, lt, gt, lt, gt)
- 2. Complex (using AND, OR, NOT, BETWEEN)
- e.g SELECT lno
- FROM loan
- WHERE amt BETWEEN 90000 AND 100000
- is the same as
- SELECT lno
- FROM loan
- WHERE amt gt 90000 AND amt lt 100000
27Data Definition Language
- Allows specification of relation schema as well
as - Attribute domains
- Integrity constraints
- Security and authorization information
- Creation of Indexes
-
28DDL
CREATE TABLE branch (branch-name char(15) not
null, branch-city char(30), assets
integer, primary key (branch-name), check
(assets gt 0))
DROP TABLE branch
ALTER TABLE branch ADD zipcode integer