ch4
ch4
Join Expressions
Views
Transactions
Integrity Constraints
SQL Data Types and Schemas
Index Definition in SQL
Authorization
Database System Concepts - 7th Edition 4.2 ©Silberschatz, Korth and Sudarshan
Joined Relations
Database System Concepts - 7th Edition 4.3 ©Silberschatz, Korth and Sudarshan
Natural Join in SQL
Database System Concepts - 7th Edition 4.4 ©Silberschatz, Korth and Sudarshan
Student Relation
Database System Concepts - 7th Edition 4.5 ©Silberschatz, Korth and Sudarshan
Takes Relation
Database System Concepts - 7th Edition 4.6 ©Silberschatz, Korth and Sudarshan
student natural join takes
Database System Concepts - 7th Edition 4.7 ©Silberschatz, Korth and Sudarshan
Natural Join Use Example
Database System Concepts - 7th Edition 4.8 ©Silberschatz, Korth and Sudarshan
Natural Join Structure in SQL
Database System Concepts - 7th Edition 4.9 ©Silberschatz, Korth and Sudarshan
Dangerous in Natural Join
Database System Concepts - 7th Edition 4.10 ©Silberschatz, Korth and Sudarshan
Outer Join
Database System Concepts - 7th Edition 4.13 ©Silberschatz, Korth and Sudarshan
Outer Join Example Tables
course relation
prereq relation
Observe that
course information is missing CS-347
prereq information is missing CS-315
Database System Concepts - 7th Edition 4.14 ©Silberschatz, Korth and Sudarshan
Left Outer Join
General structure
<table 1> natural left outer join <table 2>
Example
course natural left outer join prereq
Add to the course relation (on the left) the relevant info from prereq
Since CS-315 does not appear in prereq we use null for prereq_id
In relational algebra syntax:
course ⟕ prereq
Database System Concepts - 7th Edition 4.15 ©Silberschatz, Korth and Sudarshan
Right Outer Join
Add to the prereq relation (on the right) the relevant info from course
In relational algebra:
course ⟖ prereq
Database System Concepts - 7th Edition 4.16 ©Silberschatz, Korth and Sudarshan
Full Outer Join
In relational algebra:
course ⟗ prereq
Database System Concepts - 7th Edition 4.17 ©Silberschatz, Korth and Sudarshan
Views
In some cases, it is not desirable for all users to see the entire
logical model (that is, all the actual relations stored in the database.)
Consider a person who needs to know an instructor's name and
department, but not the salary. This person should see a relation
described, in SQL, by
Database System Concepts - 7th Edition 4.18 ©Silberschatz, Korth and Sudarshan
View Definition
A view is defined using the create view statement which has the form
create view v as < query expression >
where <query expression> is any legal SQL expression. The view name
is represented by v.
Once a view is defined, the view name can be used to refer to the virtual
relation that the view generates.
View definition is not the same as creating a new relation by evaluating
the query expression
Rather, a view definition causes the saving of an expression; the
expression is substituted into queries using the view.
Database System Concepts - 7th Edition 4.19 ©Silberschatz, Korth and Sudarshan
View Definition and Use
select name
from faculty
where dept_name = 'Biology'
Create a view of department salary totals
Database System Concepts - 7th Edition 4.20 ©Silberschatz, Korth and Sudarshan
Views Defined Using Other Views
Database System Concepts - 7th Edition 4.21 ©Silberschatz, Korth and Sudarshan
Views Defined Using Other Views Example
Database System Concepts - 7th Edition 4.22 ©Silberschatz, Korth and Sudarshan
View Expansion
Database System Concepts - 7th Edition 4.23 ©Silberschatz, Korth and Sudarshan
View Expansion (Cont.)
Database System Concepts - 7th Edition 4.24 ©Silberschatz, Korth and Sudarshan
Update of a View
Database System Concepts - 7th Edition 4.25 ©Silberschatz, Korth and Sudarshan
Some Updates Cannot be Translated Uniquely
Database System Concepts - 7th Edition 4.26 ©Silberschatz, Korth and Sudarshan
And Some Cannot be Done at All
Database System Concepts - 7th Edition 4.27 ©Silberschatz, Korth and Sudarshan
View Updates in SQL
Database System Concepts - 7th Edition 4.28 ©Silberschatz, Korth and Sudarshan
Materialized Views
Database System Concepts - 7th Edition 4.29 ©Silberschatz, Korth and Sudarshan
Transactions
Database System Concepts - 7th Edition 4.30 ©Silberschatz, Korth and Sudarshan
Integrity Constraints
Database System Concepts - 7th Edition 4.31 ©Silberschatz, Korth and Sudarshan
Constraints on a Single Relation
not null
primary key
unique
check (P), where P is a predicate
Database System Concepts - 7th Edition 4.32 ©Silberschatz, Korth and Sudarshan
Not Null Constraints
Database System Concepts - 7th Edition 4.33 ©Silberschatz, Korth and Sudarshan
Unique Constraints
Database System Concepts - 7th Edition 4.34 ©Silberschatz, Korth and Sudarshan
The check clause
Database System Concepts - 7th Edition 4.35 ©Silberschatz, Korth and Sudarshan
Referential Integrity
Ensures that a value that appears in one relation for a given set
of attributes also appears for a certain set of attributes in another
relation.
Example: If “Biology” is a department name appearing in
one of the tuples in the instructor relation, then there exists a
tuple in the department relation for “Biology”.
Let A be a set of attributes. Let R and S be two relations that
contain attributes A and where A is the primary key of S. A is said
to be a foreign key of R if for any values of A appearing in R
these values also appear in S.
S is the referencing relation
R is the referenced relation
Database System Concepts - 7th Edition 4.36 ©Silberschatz, Korth and Sudarshan
Referential Integrity in SQL
Database System Concepts - 7th Edition 4.37 ©Silberschatz, Korth and Sudarshan
Cascading Actions in Referential Integrity
Database System Concepts - 7th Edition 4.38 ©Silberschatz, Korth and Sudarshan
Cascading Actions Example
Database System Concepts - 7th Edition 4.39 ©Silberschatz, Korth and Sudarshan
Integrity Constraint Violation During Transactions
Consider:
create table person (
ID char(10),
name char(40),
mother char(10),
father char(10),
primary key ID,
foreign key father references person,
foreign key mother references person)
How to insert a tuple without causing constraint violation?
Insert father and mother of a person before inserting person
OR, set father and mother to null initially, update after inserting all
persons (not possible if father and mother attributes declared to be
not null)
OR defer constraint checking
Database System Concepts - 7th Edition 4.40 ©Silberschatz, Korth and Sudarshan
Complex Check Conditions
Database System Concepts - 7th Edition 4.41 ©Silberschatz, Korth and Sudarshan
Assertions
Database System Concepts - 7th Edition 4.42 ©Silberschatz, Korth and Sudarshan
Built-in Data Types in SQL
Database System Concepts - 7th Edition 4.43 ©Silberschatz, Korth and Sudarshan
User-Defined Types
Database System Concepts - 7th Edition 4.44 ©Silberschatz, Korth and Sudarshan
Domains
Database System Concepts - 7th Edition 4.45 ©Silberschatz, Korth and Sudarshan
Large-Object Types
Large objects (photos, videos, CAD files, etc.) are stored as a large
object:
blob: binary large object -- object is a large collection of
uninterpreted binary data (whose interpretation is left to an
application outside of the database system).
Photo of a student
Video of a lecture
clob: character large object -- object is a large collection of
character data
Essay of a student
Large objects are usually not stored in the tables
When a query returns a large object, a pointer is returned rather than
the large object itself.
What can you do with large objects?
Database System Concepts - 7th Edition 4.46 ©Silberschatz, Korth and Sudarshan
Index Creation
Database System Concepts - 7th Edition 4.47 ©Silberschatz, Korth and Sudarshan
Index Creation Example
Database System Concepts - 7th Edition 4.48 ©Silberschatz, Korth and Sudarshan
Authorization
Database System Concepts - 7th Edition 4.49 ©Silberschatz, Korth and Sudarshan
Authorization (Cont.)
Database System Concepts - 7th Edition 4.50 ©Silberschatz, Korth and Sudarshan
Authorization Specification in SQL
Database System Concepts - 7th Edition 4.51 ©Silberschatz, Korth and Sudarshan
Privileges in SQL
Database System Concepts - 7th Edition 4.52 ©Silberschatz, Korth and Sudarshan
Revoking Authorization in SQL
Database System Concepts - 7th Edition 4.53 ©Silberschatz, Korth and Sudarshan
Roles
Database System Concepts - 7th Edition 4.54 ©Silberschatz, Korth and Sudarshan
Roles (Cont.)
Database System Concepts - 7th Edition 4.55 ©Silberschatz, Korth and Sudarshan
Authorization on Views
Database System Concepts - 7th Edition 4.56 ©Silberschatz, Korth and Sudarshan
Other Authorization Features
Transfer of privileges
grant select on department to Amit with grant option;
revoke select on department from Amit, Satoshi cascade;
revoke select on department from Amit, Satoshi restrict;
And more!
Database System Concepts - 7th Edition 4.57 ©Silberschatz, Korth and Sudarshan
Food for Thought
Database System Concepts - 7th Edition 4.58 ©Silberschatz, Korth and Sudarshan
End of Chapter 4
Database System Concepts - 7th Edition 4.60 ©Silberschatz, Korth and Sudarshan
Joined Relations – Examples
Database System Concepts - 7th Edition 4.61 ©Silberschatz, Korth and Sudarshan
Natural Join in SQL
Natural join matches tuples with the same values for all common
attributes and retains only one copy of each common column.
List the names of instructors along with the course ID of the courses
that they taught
select name, course_id
from students, takes
where student.ID = takes.ID;
Same query in SQL with “natural join” construct
select name, course_id
from student natural join takes;
Database System Concepts - 7th Edition 4.62 ©Silberschatz, Korth and Sudarshan
Natural Join Versus Cartesian Product
List the names of instructors along with the course ID of the courses
that they taught
select name, course_id
from students, takes
where student.ID = takes.ID;
Same query in SQL with “natural join” construct
select name, course_id
from student natural join takes;
Are the above two queries giving us the same result?
Database System Concepts - 7th Edition 4.63 ©Silberschatz, Korth and Sudarshan
Joined Types and Conditions
Database System Concepts - 7th Edition 4.64 ©Silberschatz, Korth and Sudarshan
Joined Types and Conditions
Join type – defines how tuples are treated in each relation that do not
match any tuple in the other relation (based on the join condition).
Join condition – defines which tuples in the two relations match.
Database System Concepts - 7th Edition 4.65 ©Silberschatz, Korth and Sudarshan
Joined Relations – Examples
Database System Concepts - 7th Edition 4.66 ©Silberschatz, Korth and Sudarshan
Joined Relations – Examples
Database System Concepts - 7th Edition 4.67 ©Silberschatz, Korth and Sudarshan