ch4 23 11 2023
ch4 23 11 2023
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
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.4 ©Silberschatz, Korth and Sudarshan
Natural Join in SQL (Cont.)
Database System Concepts - 7th Edition 4.5 ©Silberschatz, Korth and Sudarshan
Student Relation
Database System Concepts - 7th Edition 4.6 ©Silberschatz, Korth and Sudarshan
Takes Relation
Database System Concepts - 7th Edition 4.7 ©Silberschatz, Korth and Sudarshan
student natural join takes
Database System Concepts - 7th Edition 4.8 ©Silberschatz, Korth and Sudarshan
Outer Join
Database System Concepts - 7th Edition 4.10 ©Silberschatz, Korth and Sudarshan
Outer Join Examples
Relation course
Relation prereq
Observe that
course information is missing CS-347
prereq information is missing CS-315
Database System Concepts - 7th Edition 4.11 ©Silberschatz, Korth and Sudarshan
Left Outer Join
Database System Concepts - 7th Edition 4.12 ©Silberschatz, Korth and Sudarshan
Right Outer Join
Database System Concepts - 7th Edition 4.13 ©Silberschatz, Korth and Sudarshan
Full Outer Join
Database System Concepts - 7th Edition 4.14 ©Silberschatz, Korth and Sudarshan
Joined Types and Conditions
Database System Concepts - 7th Edition 4.15 ©Silberschatz, Korth and Sudarshan
Joined Relations – Examples
In this case, the FULL OUTER JOIN with USING will combine rows from both
tables, matching them on the course_id column and including all rows from both tables
where the course_id matches between them. The result will display all courses and their
prerequisites where available.
Database System Concepts - 7th Edition 4.16 ©Silberschatz, Korth and Sudarshan
Joined Relations – Examples
An INNER JOIN selects records from both tables where the join condition specified
(course.course_id = prereq.course_id) is met. In this case, it retrieves rows where the course_id in the course
table matches the course_id in the prereq table.
Here's a breakdown of what happens:
1.SELECT *: This retrieves all columns from both tables involved in the query.
2.FROM course: Specifies the left table in the join, which is course.
3.INNER JOIN prereq ON course.course_id = prereq.course_id : This clause indicates the join operation. It
matches rows in the course table with rows in the prereq table where the course_id values are equal.
The result of this query will be a dataset that contains columns from both tables ( course and prereq) where there are matching
course_id values between the two tables. Rows that don’t have a match based on the course_id won’t be included in the output
Database System Concepts - 7th Edition 4.17 ©Silberschatz, Korth and Sudarshan
Joined Relations – Examples
Database System Concepts - 7th Edition 4.18 ©Silberschatz, Korth and Sudarshan
Joined Relations – Examples
Database System Concepts - 7th Edition 4.19 ©Silberschatz, Korth and Sudarshan
Views
Database System Concepts - 7th Edition 4.20 ©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 >
Database System Concepts - 7th Edition 4.21 ©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.22 ©Silberschatz, Korth and Sudarshan
Views Defined Using Other Views
Database System Concepts - 7th Edition 4.23 ©Silberschatz, Korth and Sudarshan
Views Defined Using Other Views
Database System Concepts - 7th Edition 4.24 ©Silberschatz, Korth and Sudarshan
View Expansion
Expand the view :
create view physics_fall_2017_watson as
select course_id, room_number
from physics_fall_2017
where building= 'Watson'
To:
Database System Concepts - 7th Edition 4.25 ©Silberschatz, Korth and Sudarshan
Materialized Views
Database System Concepts - 7th Edition 4.26 ©Silberschatz, Korth and Sudarshan
Materialized Views
Several relational database management systems support
materialized views. Here are a few popular ones:
Oracle Database: Oracle has robust support for materialized
views, allowing them to be refreshed manually or on a
schedule, and offering various options for maintaining their
consistency with underlying data.
PostgreSQL: Starting from certain versions, PostgreSQL
introduced support for materialized views, enabling users to
create and refresh them. However, the functionality might
have some limitations compared to other systems like
Oracle.
Microsoft SQL Server: SQL Server offers indexed views,
which are similar to materialized views in other databases.
They can improve query performance but have restrictions
on their use and maintenance.
IBM Db2: Db2 provides support for materialized query tables
(MQTs), which are similar to materialized views. They can
be defined and refreshed to improve query performance.
MySQL and MariaDB: These databases have limited support
for materialized views. While they lack built-in materialized
views,- 7users
Database System Concepts
th
Edition often simulate this
4.27 functionality using triggers
©Silberschatz, Korth and Sudarshan
Update of a View
Database System Concepts - 7th Edition 4.28 ©Silberschatz, Korth and Sudarshan
Some Updates Cannot be Translated
Uniquely
Database System Concepts - 7th Edition 4.29 ©Silberschatz, Korth and Sudarshan
Some Updates Cannot be Translated
Uniquely
You can't directly update or insert into a view that's based on multiple tables or complex queries involving joins and conditions,
especially if it doesn't directly map to a single underlying table. The reason is that a view might be defined using multiple tables and
conditions, making it ambiguous or impractical to update.
For your specific case, the instructor_info view is based on a join between the instructor and department tables.
When you attempt an INSERT into the instructor_info view, it's not immediately clear how to handle this operation because
the view combines data from multiple tables.
Regarding your concerns:
1.Multiple Departments for 'Taylor': If there are multiple departments with the name 'Taylor', the instructor_info view
wouldn't inherently know which department to assign the new record to. It might cause an ambiguity error or attempt to insert duplicate
rows, depending on how the view is defined.
2.No Department in 'Taylor': If there's no department named 'Taylor', the INSERT operation might fail or might insert a record
with NULL values for the ID and building columns (assuming those columns allow NULL).
To perform an INSERT in such scenarios where a view involves multiple tables and conditions, it's generally better to insert
directly into the underlying tables (instructor and department in this case) rather than into the view. This ensures that the
data is inserted into the appropriate tables, and any necessary integrity constraints or triggers can be properly enforced.
Database System Concepts - 7th Edition 4.30 ©Silberschatz, Korth and Sudarshan
View Updates in SQL
Database System Concepts - 7th Edition 4.31 ©Silberschatz, Korth and Sudarshan
Transactions
A transaction consists of a sequence of query and/or
update statements and is a “unit” of work
The SQL standard specifies that a transaction begins
implicitly when an SQL statement is executed.
The transaction must end with one of the following
statements:
Commit work. The updates performed by the
transaction become permanent in the database.
Rollback work. All the updates performed by the SQL
statements in the transaction are undone.
Atomic transaction
either fully executed or rolled back as if it never
occurred
Isolation from concurrent transactions
Database System Concepts - 7th Edition 4.32 ©Silberschatz, Korth and Sudarshan
Integrity Constraints
Database System Concepts - 7th Edition 4.33 ©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.34 ©Silberschatz, Korth and Sudarshan
Not Null Constraints
not null
Declare name and budget to be not null
name varchar(20) not null
budget numeric(12,2) not null
Database System Concepts - 7th Edition 4.35 ©Silberschatz, Korth and Sudarshan
Not Null Constraints
In databases, NOT NULL is a constraint that can be applied to a column. When a column is marked as NOT
NULL, it means that the column must contain a value in every row and cannot store NULL (i.e., absence of a
value).
For example, when you define a table, you can specify that certain columns should not accept NULL values
In this students table, student_name and date_of_birth columns are marked as NOT NULL.
Every time you insert a new row into this table, you must provide a value for these columns; otherwise, the
database will raise an error.
Using NOT NULL constraints helps enforce data integrity by ensuring that essential information is always
present in specified columns. It helps prevent accidental omission of required information and can make queries
and data manipulation more predictable.
Database System Concepts - 7th Edition 4.36 ©Silberschatz, Korth and Sudarshan
Unique Constraints
Database System Concepts - 7th Edition 4.37 ©Silberschatz, Korth and Sudarshan
Unique Constraints
The UNIQUE constraint in a database specifies that the combination of values across specified columns must
be unique across all rows in the table. This constraint doesn't allow duplicate combinations of values in the
designated columns.
Let's say we have a table named employees, and we want to ensure that the combination of employee_id
and email together is unique but still allows for null values in either column:
In this example, the UNIQUE constraint is applied to the combination of employee_id and email columns. This constraint
ensures that each combination of values in these columns is unique across all rows in the employees table.
This means:
•Each employee_id can have a unique email, and vice versa.
•The combination of both columns is what must be unique, allowing null values in either column as long as the combination itself doesn't
duplicate an existing combination in another row.
This constraint doesn't impose the NOT NULL requirement for individual columns. It's different from a primary key constraint where
columns are both unique and non-null.
Database System Concepts - 7th Edition 4.38 ©Silberschatz, Korth and Sudarshan
The check clause
The check (P) clause specifies a predicate P that must be
satisfied by every tuple in a relation.
Example: ensure that semester is one of fall, winter, spring
or summer
Database System Concepts - 7th Edition 4.39 ©Silberschatz, Korth and Sudarshan
The check clause
In this scenario, the section table is being created with a CHECK constraint on the semester column, ensuring that
its value must be one among 'Fall', 'Winter', 'Spring', or 'Summer'.
Let's create the section table with the given constraints
-- Valid insertion
INSERT INTO section (course_id, sec_id, semester, year, building,
room_number, time_slot_id)
VALUES ('CSCI101', '001', 'Fall', 2023, 'Taylor Hall', '101', 'TS01');
Database System Concepts - 7th Edition 4.41 ©Silberschatz, Korth and Sudarshan
Complex Check Conditions
In this scenario, the section table has a CHECK constraint that verifies whether the time_slot_id in each tuple
within the section table corresponds to an existing time_slot_id in the time_slot table. This constraint ensures
data integrity by validating references to the time_slot table.
Let's create the section and time_slot tables and set up the constraint:
Database System Concepts - 7th Edition 4.42 ©Silberschatz, Korth and Sudarshan
Complex Check Conditions
This example assumes a foreign key relationship between the section table's time_slot_id column and the time_slot
table's time_slot_id column to maintain referential integrity. Now, let's insert and verify data:
•The first INSERT statement is valid because the time_slot_id 'TS01' exists in the time_slot table.
•The second INSERT statement is invalid because the time_slot_id 'TS02' does not exist in the time_slot
table, violating the CHECK constraint.
Database System Concepts - 7th Edition 4.43 ©Silberschatz, Korth and Sudarshan
Built-in Data Types in SQL
Database System Concepts - 7th Edition 4.44 ©Silberschatz, Korth and Sudarshan
Built-in Data Types in SQL
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)
clob: character large object -- object is a large
collection of character data
When a query returns a large object, a pointer is returned
rather than the large object itself.
Database System Concepts - 7th Edition 4.46 ©Silberschatz, Korth and Sudarshan
User-Defined Types
Database System Concepts - 7th Edition 4.47 ©Silberschatz, Korth and Sudarshan
User-Defined Types
Database System Concepts - 7th Edition 4.48 ©Silberschatz, Korth and Sudarshan
User-Defined Types
Database System Concepts - 7th Edition 4.49 ©Silberschatz, Korth and Sudarshan
Domains
create domain construct in SQL-92 creates user-
defined domain types
Database System Concepts - 7th Edition 4.50 ©Silberschatz, Korth and Sudarshan
Domains
Database System Concepts - 7th Edition 4.51 ©Silberschatz, Korth and Sudarshan
Domains
Database System Concepts - 7th Edition 4.52 ©Silberschatz, Korth and Sudarshan
Domains
Database System Concepts - 7th Edition 4.53 ©Silberschatz, Korth and Sudarshan
Domains
Database System Concepts - 7th Edition 4.54 ©Silberschatz, Korth and Sudarshan
Index Creation
Many queries reference only a small proportion of the
records in a table.
It is inefficient for the system to read every record to find a
record with particular value
An index on an attribute of a relation is a data structure
that allows the database system to find those tuples in the
relation that have a specified value for that attribute
efficiently, without scanning through all the tuples of the
relation.
We create an index with the create index command
create index <name> on <relation-name> (attribute);
Database System Concepts - 7th Edition 4.55 ©Silberschatz, Korth and Sudarshan
Index Creation Example
create table student
(ID varchar (5),
name varchar (20) not null,
dept_name varchar (20),
tot_cred numeric (3,0) default 0,
primary key (ID))
create index studentID_index on student(ID)
The query:
select *
from student
where ID = '12345'
can be executed by using the index to find the required
record, without looking at all records of student
Database System Concepts - 7th Edition 4.56 ©Silberschatz, Korth and Sudarshan
Index Creation Example
Database System Concepts - 7th Edition 4.57 ©Silberschatz, Korth and Sudarshan
Index Creation Example
Database System Concepts - 7th Edition 4.58 ©Silberschatz, Korth and Sudarshan
Authorization
We may assign a user several forms of authorizations on
parts of the database.
Database System Concepts - 7th Edition 4.59 ©Silberschatz, Korth and Sudarshan
Authorization (Cont.)
Forms of authorization to modify the database schema
Index - allows creation and deletion of indices.
Resources - allows creation of new relations.
Alteration - allows addition or deletion of attributes in a
relation.
Drop - allows deletion of relations.
Database System Concepts - 7th Edition 4.60 ©Silberschatz, Korth and Sudarshan
Authorization Specification in SQL
Database System Concepts - 7th Edition 4.61 ©Silberschatz, Korth and Sudarshan
Authorization Specification in SQL
Database System Concepts - 7th Edition 4.62 ©Silberschatz, Korth and Sudarshan
Privileges in SQL
select: allows read access to relation, or the ability to
query using the view
Example: grant users U1, U2, and U3 select
authorization on the instructor relation:
grant select on instructor to U1, U2, U3
insert: the ability to insert tuples
update: the ability to update using the SQL update
statement
delete: the ability to delete tuples.
all privileges: used as a short form for all the allowable
privileges
Database System Concepts - 7th Edition 4.63 ©Silberschatz, Korth and Sudarshan
Authorization Specification in SQL
Database System Concepts - 7th Edition 4.64 ©Silberschatz, Korth and Sudarshan
Authorization Specification in SQL
Database System Concepts - 7th Edition 4.65 ©Silberschatz, Korth and Sudarshan
Authorization Specification in SQL
Database System Concepts - 7th Edition 4.66 ©Silberschatz, Korth and Sudarshan
Authorization Specification in SQL
Database System Concepts - 7th Edition 4.67 ©Silberschatz, Korth and Sudarshan
Authorization Specification in SQL
Database System Concepts - 7th Edition 4.68 ©Silberschatz, Korth and Sudarshan
Revoking Authorization in SQL
Database System Concepts - 7th Edition 4.69 ©Silberschatz, Korth and Sudarshan
Revoking Authorization in SQL
Database System Concepts - 7th Edition 4.70 ©Silberschatz, Korth and Sudarshan
Revoking Authorization in SQL
Database System Concepts - 7th Edition 4.71 ©Silberschatz, Korth and Sudarshan
Revoking Authorization in SQL
Database System Concepts - 7th Edition 4.72 ©Silberschatz, Korth and Sudarshan
Revoking Authorization in SQL
Database System Concepts - 7th Edition 4.73 ©Silberschatz, Korth and Sudarshan
Roles
Database System Concepts - 7th Edition 4.74 ©Silberschatz, Korth and Sudarshan
Roles
Database System Concepts - 7th Edition 4.75 ©Silberschatz, Korth and Sudarshan
Roles Example
Database System Concepts - 7th Edition 4.76 ©Silberschatz, Korth and Sudarshan
Roles Example
Database System Concepts - 7th Edition 4.77 ©Silberschatz, Korth and Sudarshan
Roles Example
Database System Concepts - 7th Edition 4.78 ©Silberschatz, Korth and Sudarshan
Authorization on Views
Database System Concepts - 7th Edition 4.79 ©Silberschatz, Korth and Sudarshan
Authorization on Views
Database System Concepts - 7th Edition 4.80 ©Silberschatz, Korth and Sudarshan
Authorization on Views
Database System Concepts - 7th Edition 4.81 ©Silberschatz, Korth and Sudarshan
End of Chapter 4
Database System Concepts - 7th Edition 4.82 ©Silberschatz, Korth and Sudarshan