Database Application Design

advertisement
February 4, 2000
Database Application Design
Handout #5
(C) 2000, The
University of Michigan
1
Course information
•
•
•
•
•
•
Instructor: Dragomir R. Radev (radev@si.umich.edu)
Office: 305A, West Hall
Phone: (734) 615-5225
Office hours: Thursdays 3-4 and Fridays 1-2
Course page: http://www.si.umich.edu/~radev/654w00
Class meets on Fridays, 2:30 - 5:30 PM, 311 WH
(C) 2000, The
University of Michigan
2
Foundations of relational
implementation
(cont’d)
(C) 2000, The
University of Michigan
3
Expressing queries in relational
algebra
Type
Format
Set operations
+, -, intersection,
union, product
Selection
Relation WHERE
condition
Projection
Relation [list of
attributes]
Join (Inner join) Relation1 JOIN
(condition) Relation2
Outer join
Relation1 LEFT
OUTER JOIN
(condition) Relation2
(C) 2000, The
University of Michigan
Example
STUDENT [Name] – JUNIOR [Name]
CLASS WHERE Name = ‘A’
STUDENT [Name, Major, Age]
STUDENT JOIN (SID =
StudentNumber) ENROLLMENT
STUDENT LEFT OUTER JOIN (SID
= StudentNumber) ENROLLMENT
4
Examples
STUDENT
SID
Name
Major
GradeLevel
Age
100
JONES
HISTORY
GR
21
150
PARKS
ACCOUNTING SO
19
200
BAKER
MATH
GR
50
250
GLASS
HISTORY
SN
50
300
BAKER
ACCOUNTING SN
41
350
RUSSELL MATH
JR
20
400
RYE
ACCOUNTING FR
18
450
JONES
HISTORY
SN
24
(C) 2000, The
University of Michigan
5
Examples (Cont’d)
ENROLLMENT
StudentNumber
ClassName PositionNumber
100
BD445
1
150
BA200
1
200
BD445
2
200
CS250
1
300
CS150
1
400
BA200
2
400
BF410
1
400
CS250
2
450
BA200
3
(C) 2000, The
University of Michigan
6
Examples (Cont’d)
CLASS
Name
Time
Room
BA200
M-F9
SC110
BD445
MWF3
SC213
BF410
MWF8
SC213
CS150
MWF3
EA304
CS250
NWF12
EB210
(C) 2000, The
University of Michigan
7
Examples (Cont’d)
Full set of relations:
JUNIOR (Snum, Name, Major)
HONOR-STUDENT (Number, Name, Interest)
STUDENT (SID, Name, Major, GradeLevel, Age)
CLASS (Name, Time, Room)
ENROLLMENT (StudentNumber, ClassName,
PositionNumber)
FACULTY (FID, Name, Department)
(C) 2000, The
University of Michigan
8
Examples (Cont’d)
• What are the names of all students?
• What are the student numbers of all students enrolled in a class?
• What are the student numbers of all students not enrolled in a
class?
• What are the numbers of students enrolled in the class
‘BD445’?
• What are the names of the students enrolled in class ‘BD445’?
• What are the names and meeting times of ‘PARKS’ classes?
• Wwhat are the grade levels and meeting rooms of all students,
including students not enrolled in a class?
(C) 2000, The
University of Michigan
9
Structured Query Language
(SQL)
(C) 2000, The
University of Michigan
10
SQL Overview
•
•
•
•
•
ANSI Standard
Multitude of implementations
SQL92 (ANSI)
Not a programming language!
Two major modes of use: embedded and
interactive
(C) 2000, The
University of Michigan
11
Projections in SQL
SELECT SID, Name, Major
FROM STUDENT
SELECT Major
FROM STUDENT
SELECT DISTINCT Major
FROM STUDENT
(C) 2000, The
University of Michigan
12
Selections in SQL
SELECT SID, Name, Major, GradeLevel, Age
FROM STUDENT
WHERE Major =‘MATH’
SELECT *
FROM STUDENT
WHERE Major =‘MATH’
SELECT *
FROM STUDENT
WHERE Major =‘MATH’ AND Age > 21
(C) 2000, The
University of Michigan
13
Selections in SQL (Cont’d)
•
•
•
•
•
Set values for the condition (IN, NOT IN)
Ranges (BETWEEN)
LIKE
Wild cards (%, _)
IS NULL
(C) 2000, The
University of Michigan
14
Sorting in SQL
• ORDER BY
• ASC, DESC
(C) 2000, The
University of Michigan
15
Built-in functions
• COUNT, SUM, AVG, MAX, MIN
• SELECT COUNT(*)
FROM STUDENT
• SELECT COUNT(Major)
FROM STUDENT
(C) 2000, The
University of Michigan
16
Grouping
• GROUP BY
• HAVING
• Example:
SELECT Major, COUNT(*)
FROM STUDENT
GROUP BY Major
HAVING COUNT(*) > 2
• Ordering (WHERE is computed first)
(C) 2000, The
University of Michigan
17
Subqueries
SELECT Name
FROM STUDENT
WHERE SID IN
(SELECT StudentNumber
FROM ENROLLMENT
WHERE ClassName = ‘BD445’)
(C) 2000, The
University of Michigan
18
Joins in SQL
• Using more than one table in a SELECT
• Comparing subqueries and joins
– not equivalent
• Outer joins (ANSI vs. Access)
(C) 2000, The
University of Michigan
19
EXISTS and NOT EXISTS
SELECT DISTINCT StudentNumber
FROM ENROLLMENT A
WHERE EXISTS
(SELECT *
FROM ENROLLMENT B
WHERE A.StudentNumber = B.StudentNumber
AND A.ClassName NOT = B.ClassName)
(C) 2000, The
University of Michigan
20
EXISTS and NOT EXISTS
(Cont’d)
SELECT Student.Name
FROM STUDENT
WHERE NOT EXISTS
(SELECT *
FROM ENROLLMENT
WHERE NOT EXISTS
(SELECT *
FROM CLASS
WHERE CLASS.Name = ENROLLMENT.ClassName
AND ENROLLMENT.StudentNumber = STUDENT.SID))
(C) 2000, The
University of Michigan
21
Inserting data
INSERT INTO ENROLLMENT
VALUES (400,’BD445’,44)
INSERT INTO ENROLLMENT
(StudentNumber,ClassName)
VALUES (400,’BD445)
INSERT INTO JUNIOR
VALUES
(SELECT SID, Name, Major
FROM STUDENT
WHERE GradeLevel = ‘JR’)
(C) 2000, The
University of Michigan
22
Deleting data
DELETE STUDENT
WHERE STUDENT.SID = 100
DELETE ENROLLMENT
WHERE ENROLLMENT.StudentNumber IN
(SELECT STUDENT.SID
FROM STUDENT
WHERE STUDENT.Major = ‘Accounting’)
DELETE STUDENT
WHERE Student.Major = ‘Accounting’
Ordering!
(C) 2000, The
University of Michigan
23
Updating data
UPDATE ENROLLMENT
SET PositionNumber = 44
WHERE SID = 400
UPDATE ENROLLMENT
SET PositionNumber = MAX (PositionNumber) + 1
WHERE SID = 400
(C) 2000, The
University of Michigan
24
Database design using E-R
Models
(C) 2000, The
University of Michigan
25
E-R Design
• Transforming user requirements represented
using E-R models into relational database
designs
(C) 2000, The
University of Michigan
26
Readings for next time
• Kroenke
– Chapter 10: Database application design
• YRK (optional)
– Chapter 8: Database application architectures
– Chapter 9: CGI programming
(C) 2000, The
University of Michigan
27
Download