Download PowerPoint 97

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Oracle Database wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

Ingres (database) wikipedia , lookup

Functional Database Model wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Concurrency control wikipedia , lookup

Database wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Clusterpoint wikipedia , lookup

Open Database Connectivity wikipedia , lookup

SQL wikipedia , lookup

PL/SQL wikipedia , lookup

Database model wikipedia , lookup

Relational algebra wikipedia , lookup

Relational model wikipedia , lookup

Transcript
Introduction to Database Systems
Domains, Relations & Base RelVars (Ch. 5 Overview)
Relational Algebra & Calculus,, & SQL (Ch. 6,7)
Preview – Design Issues & Integrity Constraints (Ch.8)
A Design Review
• Ch. 5?
– Each attribute implies a domain (data type, set of values)
– Types do not imply physical representation (encap…)
• But at least one possible physical representation is suggested
–
–
–
–
Specific data types are orthogonal to the relational model.
Scalar types have visible components (non-scalars don’t).
The relational model is strongly typed.
Some operators ( selector = < > := CAST AS )
Relational Algebra, Calculus & SQL
David Maier / Judy Cushing
1
Introduction to Database Systems
Relations & RelVars
• Relations (relation values)
A table is a concrete representation of a relation.
– Tuple – a set of ordered pairs, no duplicates, unordered.
– Relations have cardinality & degree.
• RelVars & Views define relations
– The system catalog maintains the relvars.
• SQL is used to create
– RelVars – CREATE DOMAIN, CREATE TABLE
– Relations – INSERT, DELETE, UPDATE (tuples)
Relational Algebra, Calculus & SQL
David Maier / Judy Cushing
2
Introduction to Database Systems
Type Checking
•
•
•
•
•
•
•
•
J.CITY = P.CITY
JNAME | | PNAME
QTY * 100
QTY + 100
STATUS = 5
J.CITY < S.CITY
COLOR = P.CITY
J.CITY = P.CITY | | ‘burg’
Relational Algebra, Calculus & SQL
David Maier / Judy Cushing
3
Introduction to Database Systems
Relational Algebra
Operates on relations, gives relations as results
Restrict (Select) -- subset of tuples
Project -- subset of columns
Product -- all possible combinations of two tuples
A
B
AX
AY
BX
BY
X
Y
(Natural) Join: connecting tuples
based on common value in same-named columns
A1 B1
A2 B1
A3 B2
Relational Algebra, Calculus & SQL
B1 C1
B2 C2
B3 C3
A1 B1 C1
A2 B1 C1
A3 B2 C2
David Maier / Judy Cushing
4
Introduction to Database Systems
Other Joins
• Theta Join -- join two relations
but not on the equality operation
((S RENAME CITY AS SCITY) TIMES
(P RENAME CITY AS PCITY) )
WHERE SCITY > PCITY
• Semi Join -- (natural) join two relations,
but return only attributes of the first
((S SEMIJOIN (SP WHERE P# = # (‘P2’))
Relational Algebra, Calculus & SQL
David Maier / Judy Cushing
5
Introduction to Database Systems
Standard Set Operations
Union, Intersection, Difference
treat relations as sets of tuples
old_ext(inv#
ext)
13
13
14
16
(inv#
rings_at(inv#
1118
1119
3443
3439
ext)
(inv#
12
13
13
14
14
15
16
ext)
1118
1118
1120
3400
3443
3443
3439
ext)
(inv#
Relational Algebra, Calculus & SQL
ext)
David Maier / Judy Cushing
6
Introduction to Database Systems
Division
Given 2 unary and 1 binary relation -find tuples in the (first) unary relation
matched in the binary relation -w/ tuples in the other unary relation
A
B
C
A
A
A
B
C
X
Y
Z
X
Y
Relational Algebra, Calculus & SQL
X
Z
A
David Maier / Judy Cushing
7
Introduction to Database Systems
Division
phone_bk(person
ext)
Randall
Ross
Ricard
Randall
Ross
Rivers
Ross
Ricard
Rivers
2116
2116
2116
2218
2218
2218
3972
3972
3972

=
r(ext)
Randall
Ross
2116
2118

=
s(person)
(ext)
2116
3972
Ross
Ricard
Analogy
a  b is the largest q such that b
Relational Algebra, Calculus & SQL
(person)
* q

a
David Maier / Judy Cushing
8
Introduction to Database Systems
Properties & Examples
• Associative & Commutative -UNION, INTERSECTION, TIMES, JOIN
• ((SP JOIN S) WHERE P# = P# (‘P2’)) {SNAME}
• (((P WHERE COLOR = COLOR (‘Red’))
JOIN SP) {S#} JOIN S) {SNAME}
• ((S {S#} DIVIDEBY P {P#} PER SP {S#, P#})
JOIN S {SNAME}
• S{S#} DIVIDEBY (SP WHERE S# = S# (‘S2’)) {P#}
PER SP {S#,P#}
• (((S RENAME S# AS SA) {SA, CITY} JOIN
(S RENAME S# AS SB) {SB, CITY} )
WHERE SA < SB) {SA,SB}
Relational Algebra, Calculus & SQL
David Maier / Judy Cushing
9
Introduction to Database Systems
the Algebra enables writing relational expressions
•
•
•
•
•
•
•
Retrieval
Update
Integrity constraints
Derived relvars (views)
Stability requirements (concurrency control)
Security constraints (scope of authorization)
Transformation rules -> OPTIMIZATION
((SP JOIN S) WHERE P# = P# (‘P2’)) {SNAME}
((SP WHERE P# = P# (‘P2’)) JOIN S) {SNAME}
Relational Algebra, Calculus & SQL
David Maier / Judy Cushing
10
Introduction to Database Systems
Miscellaneous
• Aggregates -- COUNT, SUM, AVG, MAX, MIN, ALL, ANY
• SUMMARIZE SP PER SP {P#} ADD SUM (QTY) AS TOTQTY
SUMMARIZE (P JOIN SP) PER P {CITY} ADD COUNT AS NSP
• Relational Comparisons
=
equals
/= not equals
<= subset of (IN)
<
proper subset of
>= superset
>
proper superset
• IS_EMPTY
• GROUP, UNGROUP
Relational Algebra, Calculus & SQL
David Maier / Judy Cushing
11
Introduction to Database Systems
Relational Calculus
The algebra - a language to describe how to
construct a new relation.
The calculus - a language to write a definition
of that new relation.
FORALL PX (PX.COLOR = COLOR (‘Red’))
EXISTS SPX (SX.S# = SX.S# AND SPX.P# = P# (‘P2’)
Procedural vs. Non-procedural
Relational Completeness
Relational Algebra, Calculus & SQL
David Maier / Judy Cushing
12
Introduction to Database Systems
• 6.13 Get full details of all projects.
– J
– JX
– SELECT * FROM J
Query Exercises
• 6.15 Get supplier numbers for suppliers who supply project J1.
– ( SPJ WHERE J# = J# (‘J1’) ) {S#}
– SPJX.S# WHERE SPJX.J# = J# (‘J1’)
– SELECT DISTINCT SPJ.S#
FROM SPJ WHERE SPJ.J# = ‘J1’
• 6.18 Get supplier-number/part-number/project-number triples
such that supplier part and project are all colocated).
– (S JOIN P JOIN J) {S#, P#, J#}
– (SX.S#, PX.P#, JX.J# ) WHERE
SX.CITY = PX.CITY AND
PX.CITY = JX.CITY AND
JX.CITY = SX.CITY
– SELECT S.S#, P.P#, J.J# FROM S,P,J
WHERE S.CITY = P.CITY AND P.CITY = J.CITY.
Relational Algebra, Calculus & SQL
David Maier / Judy Cushing
13
Introduction to Database Systems
Integrity Preview!
• An attribute value must match its type.
• A primary key must be unique.
• A tuple’s foreign key must be of the same
type as its “matching” primary key.
• To create a record with a given foreign key,
a record in the corresponding table must
have that value as its primary key.
• Many to many relationships cannot be
modeled (directly).
Find examples to support these in SPJ!
Relational Algebra, Calculus & SQL
David Maier / Judy Cushing
14
Introduction to Database Systems
Study Questions
Which of the relational algebra, tuple calculus and
domain calculus is SQL based on?
Can any relational query be expressed in a single
SQL statement?
To what extent do these query languages go beyond
the relational model?
Why might QueryByExample languages be easier to
use than SQL for someone unfamiliar with the
database scheme of a database?
Relational Algebra, Calculus & SQL
David Maier / Judy Cushing
15
Introduction to Database Systems
Lab Assignment for Next Week
With your partner, finish creating and populating the SPJ
database.
Run the assigned queries from Chapter 6.
SQL BNF
http://
cuiwww.unige.ch/~falquet/sdbd/langage/SQL92/BNFindex.html
Relational Algebra, Calculus & SQL
David Maier / Judy Cushing
16