PPTX - SFU computer science

Download Report

Transcript PPTX - SFU computer science

DATABASE SYSTEMS I
THE RELATIONAL DATA MODEL
WHAT IS A DATA MODEL?
A formal notation (language) for describing data.
 Structure of the data

Conceptual model
 Higher level of abstraction than data structures in
programming languages such as lists or arrays.


Operations on the data
Limited set of high level operations: queries and
modifications.
 Speeds-up database programming.
 Allows DBS to optimize query execution, e.g. choice of
most efficient sorting method.


Constraints on the data

Capture more of the real world meaning of the data.
2
WHY STUDY THE RELATIONAL MODEL?

Most widely used model.


“Legacy systems” in older models.


Vendors: Oracle, IBM, Microsoft, Sybase, etc.
E.g., IBM’s IMS
Not so recent competitor: object-oriented model.
ObjectStore, Versant, Ontos
 A synthesis emerging: object-relational model



Informix Universal Server, Oracle, DB2
More recent competitor: semi-structured model.

XML
3
RELATIONAL DATABASE: DEFINITIONS
Relational database: a set of relations.
 Relation made up of 2 parts:


Relation Schema : specifies name of relation, plus
name and type of each column.


E.g. Students(sid: string, name: string, login: string,
age: integer, gpa: real).
Relation Instance : a table, with rows and columns
 #rows
= cardinality
 #columns = degree / arity
4
RELATIONAL DATABASE: DEFINITIONS
Rows are called tuples (or records), columns called
attributes (or fields).
 Attributes are referenced not by column number,
but by name.



Attribute types are called domains. Domains
consist of atomic values such as integers or
strings.


Order of attributes does not matter
No structured values such as lists or sets
The order of tuples does not matter, a relation is a
set of tuples. The order of tuples resulting from a
relational query is undefined.
5
RELATIONAL DATABASE: DEFINITIONS

To put it more formally:

Domain: a set of logically connected values,
e.g. string, integer, real.

Relation R:
k domains D1, . . ., Dk
R  D1  D2 ...  Dk



Cardinality = |R|
Degree / Arity = k
A set does not contain duplicates!
6
EXAMPLE
Relation Students
sid
53666
53688
53650
name
login
Jones jones@cs
Smith smith@eecs
Smith smith@math
age
18
18
19
gpa
3.4
3.2
3.8
Cardinality = 3, degree = 5, all rows distinct.
 Do all columns in a relation instance have to be
distinct?

7
THE SQL LANGUAGE
Proposed by IBM (system R) in the 1970s.
 Later developed into a standard since relational
data model used by many vendors.
 Structured Query Language (SQL):

retrieval,
 insertion, updating, and deletion of data,
 management and administrative functions.


All commercial DBSs support SQL, but with
proprietary extensions to the standard language.
8
THE SQL LANGUAGE

Major versions of the standard:





SQL-86
first version
SQL-92
major revision
SQL-99
triggers, object-oriented features, etc.
SQL-2003
XML-related features, window functions, etc.
SQL-2006
importing XML data, publishing in XML format,
integration of XQuery, etc.
9
THE SQL LANGUAGE


SQL supports the

creation
CREATE <relation name> (<attributes>);

modification
INSERT INTO <relation name> (<attribute names>)
VALUES (<attribute values>);

and querying of relational databases
SELECT <attribute names>
FROM <relation names>
WHERE <condition>;
Queries will be covered in separate chapter.
10
ADDING AND DELETING TUPLES

Can insert a single tuple using:
INSERT INTO Students (sid, name, login, age, gpa)
VALUES (53688, ‘Smith’, ‘smith@ee’, 18, 3.2)

Can delete all tuples satisfying some
condition (e.g., name = Smith):
DELETE
FROM Students S
WHERE S.name = ‘Smith’
Powerful variants of these commands are available; more later!
11
CREATING RELATIONS
CREATE TABLE specifies the
relation name and its
attributes.
 The domain of each attribute
is specified, and enforced by
the DBMS whenever tuples
are added or modified.
 Attributes can have zero or
one value from their domain.
 NOT NULL specifies that this
attribute must have exactly
one value.

CREATE TABLE Students
(sid CHAR(20),
name CHAR(20),
login CHAR(10),
age INTEGER,
gpa REAL);
CREATE TABLE Enrolled
(sid CHAR(20),
cid CHAR(20),
grade CHAR(2)
NOT NULL);
12
CREATING RELATIONS

SQL datatypes (domains):





Character strings
fixed length: CHAR(n)
exactly n characters
variable length: VARCHAR(n) up to n characters
Bit strings
fixed length: BIT(n)
exactly n bits
variable length: BIT VARYING(n) up to n bits
BOOLEAN
TRUE, FALSE, UNKNOWN
Numbers
INT / INTEGER
FLOAT / REAL
Dates and times (special character strings)
DATE
TIME
13
DESTROYING AND ALTERING RELATIONS


Destroys the
relation Students.
The schema
information and the
tuples (table
instance) are
deleted.
The schema of
Students is altered
by adding a new
attribute; every
tuple in the current
instance is extended
with a null value in
the new attribute.
DROP TABLE Students;
ALTER TABLE Students
ADD firstYear INTEGER;
14
ADDING AND DELETING TUPLES

INSERT INTO can insert a single tuple, by
providing its attribute values:
INSERT INTO Students (sid, name, login, age, gpa)
VALUES (53688, ‘Smith’, ‘smith@ee’, 18, 3.2);

DELETE deletes all tuples satisfying some
condition (e.g., name = Smith):
DELETE
FROM Students
WHERE name = ‘Smith’;

More powerful variants of these commands are
available; more later!
15
INTEGRITY CONSTRAINTS (ICS)

IC: condition that must be true for any instance of
the database; e.g., domain constraints.



A legal instance of a relation is one that satisfies
all specified ICs.


ICs are specified when schema is defined.
ICs are checked when instance is modified.
DBMS does not allow illegal instances.
If the DBMS checks ICs, stored data is more
faithful to real-world meaning.

Avoids data entry errors, too!
16
PRIMARY KEYS AND CANDIDATE KEYS

A set of attributes is a key for a relation if:
1. No two distinct tuples can (!) have same values in all
key attributes, and
2. Condition 1 is not true for any subset of the key.
 Condition 2 false? A superkey.
E.g., sid is a key for Students. (What about
name?) The set {sid, gpa} is a superkey.
 For each key attribute values need to be provided,
i.e. a key cannot have the special value null.

17
PRIMARY KEYS AND CANDIDATE KEYS
Artificial keys are often introduced, since they are
fully under the control of the DBS / the enterprise,
e.g., sid.
 Possibly many candidate keys (specified using
UNIQUE), but exactly one primary key (specified
using PRIMARY KEY).
 Primary key can be used to express references
between tables and may also be used to optimize
data storage.
 DBMS ensures that no two tuples share the same
(primary or candidate) key value(s).

18
PRIMARY AND CANDIDATE KEYS

Used carelessly, an IC can prevent the storage of database
instances that arise in practice!
“For a given student and course,
there is a single grade.”
CREATE TABLE Enrolled
(sid CHAR(20)
cid CHAR(20),
grade CHAR(2),
PRIMARY KEY (sid,cid) );
“Students can take only one course,
and receive a single grade for that CREATE TABLE Enrolled
course; further, no two students in (sid CHAR(20)
a course receive the same grade.”
cid CHAR(20),
grade CHAR(2),
PRIMARY KEY (sid),
UNIQUE (cid, grade) );
19
FOREIGN KEYS, REFERENTIAL INTEGRITY

Foreign key

Set of attributes in one relation that is used to `refer’
to a tuple in another relation. Must correspond to
primary key of the referred relation.


`logical pointer’
E.g. sid in Enrolled is a foreign key referring to
Students
Enrolled(sid: string, cid: string, grade: string)

If all foreign key constraints are enforced,
referential integrity is achieved, i.e., no dangling
references.
20
FOREIGN KEYS IN SQL

Only students listed in the Students relation are
allowed to enroll for courses.
CREATE TABLE Enrolled
(sid CHAR(20), cid CHAR(20), grade CHAR(2),
PRIMARY KEY (sid,cid),
FOREIGN KEY (sid) REFERENCES Students);
Enrolled
sid
53666
53666
53650
53666
cid
grade
Carnatic101
C
Reggae203
B
Topology112
A
History105
B
Students
sid
53666
53688
53650
name
login
Jones jones@cs
Smith smith@eecs
Smith smith@math
age
18
18
19
gpa
3.4
3.2
3.8
21
ENFORCING REFERENTIAL INTEGRITY
Consider Students and Enrolled; sid in Enrolled
is a foreign key that references Students.
 What should be done if an Enrolled tuple with a
non-existent sid is inserted? (Reject it!)
 What should be done if a Students tuple is
deleted?






Also delete all Enrolled tuples that refer to it.
Disallow deletion of a Students tuple that is referred
to.
Set sid in Enrolled tuples that refer to it to a default
sid.
In SQL, also: Set sid in Enrolled tuples that refer to it
to a special value null, denoting `unknown’ or
`inapplicable’.
Similar for updates of primary keys.
22
REFERENTIAL INTEGRITY IN SQL

SQL supports all 4
options on deletes
and updates.



Default is NO
ACTION
(delete/update is
rejected).
CASCADE (also
delete all tuples that
refer to deleted tuple).
SET NULL / SET
DEFAULT (sets
foreign key value of
referencing tuple).
CREATE TABLE Enrolled
(sid CHAR(20),
cid CHAR(20),
grade CHAR(2),
PRIMARY KEY (sid,cid),
FOREIGN KEY (sid)
REFERENCES Students
ON DELETE CASCADE
ON UPDATE SET DEFAULT );
23
WHERE DO ICS COME FROM?
 ICs
are based upon the semantics of the
real-world enterprise that is being
described in the database relations.
 We can check a database instance to see if
an IC is violated, but we can never infer
that an IC is true by looking at an
instance.


An IC is a statement about all possible
instances!
E.g., we know name is not a key, but the
assertion that sid is a key is given to us.
 Key
and foreign key ICs are the most
common; more general ICs discussed later.
24
RELATIONAL QUERY LANGUAGES
A major strength of the relational model: supports
simple, powerful querying of data.
 Queries can be written intuitively, and the DBMS
is responsible for efficient evaluation.



The key: precise semantics for relational queries.
Allows the optimizer to extensively re-order
operations, and still ensure that the answer does not
change.
25
THE SQL QUERY LANGUAGE

To find all 18 year old students, we can write:
SELECT *
FROM Students S
WHERE S.age=18
sid
name
53666 Jones
login
jones@cs
age gpa
18
3.4
53688 Smith smith@ee 18
3.2
•To find just names and logins, replace the first line:
SELECT S.name, S.login
26
QUERYING MULTIPLE RELATIONS

What does the following query compute?
SELECT S.name, E.cid
FROM Students S, Enrolled E
WHERE S.sid=E.sid AND E.grade=“A”
Given the following instance
of Enrolled (is this possible if
the DBMS ensures referential
integrity?):
we get:
sid
53831
53831
53650
53666
cid
grade
Carnatic101
C
Reggae203
B
Topology112
A
History105
B
S.name E.cid
Smith
Topology112
27
VIEWS

A view is just a relation, but we store a definition,
rather than a set of tuples.
CREATE VIEW YoungActiveStudents (name, grade)
AS SELECT S.name, E.grade
FROM Students S, Enrolled E
WHERE S.sid = E.sid and S.age<21

Views can be dropped using the DROP VIEW
command.

How to handle DROP TABLE if there’s a view on the table?

DROP TABLE command has options to let the user specify this.
28
VIEWS AND SECURITY

Views can be used to present necessary
information (or a summary), while hiding details
in underlying relation(s).

Given YoungStudents, but not Students or Enrolled,
we can find students s who have are enrolled, but not
the cid’s of the courses they are enrolled in.
29
SUMMARY
The relational model is a tabular representation
of data. A relation is a subset of the cartesian
product of some domains.
 Simple and intuitive, currently the most widely
used data model.
 SQL is the standard language for creating,
updating and querying relational databases.
 Integrity constraints can be specified by the DBA,
based on application semantics. DBMS checks for
violations.
 Two most important kinds of ICs: primary and
foreign key constraints.
 In addition, we always have domain constraints.

30