1 The Relational Model Instructor: Mohamed Eltabakh [email protected].

41
1 The Relational Model Instructor: Mohamed Eltabakh [email protected]

Transcript of 1 The Relational Model Instructor: Mohamed Eltabakh [email protected].

Page 1: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

1

The Relational Model

Instructor: Mohamed Eltabakh [email protected]

Page 2: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

2

Relational Model Another model for describing your data and application

requirements

Currently the most widely used model Vendors: Oracle, Microsoft, IBM

Recent competitions Object Oriented Model: ObjectStore, Oracle XML Databases : native and extensions

What about ER model ER model is the first step in the design ER model is then translated (mapped) to relational model

Page 3: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Design and Build Phases

3

ER Model & ERD

Phase 1 Phase 2 Phase 3

Relational Model

Build the database

Page 4: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

4

Relational Model Structure:

Relations (also called Tables) Attributes (also called Columns or Fields)

Page 5: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

5

Attributes in Relational Model Attribute Name

Each attribute of a relation has a unique name within the relation

Attribute Domain The set of allowed values for each attribute is called the domain of the attribute E.g., integer, real, date, string {“Male”, “Female”}, etc.

Atomic Attributes Attribute values are required to be atomic

(primitive or derived) Note: multivalued attributes are not atomic Note: composite attributes are not atomic We will see how to handle non-atomic attributes

Special Null Value The special value null is a member of every domain The null value means the values does not exist (unknown)

Page 6: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Relational Schema Schema is the structure of the relation Attributes A1, A2, ..., An of relation R

R=(A1,A2,...,An ) is the relations schema of R

Relational Schema of “customer” is customer = (customer_name, customer_street, customer_city) customer (customer_name, customer_street, customer_city)

6

Page 7: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Relational Instance Instance is the current schema plus the current tuples in the relation

The current instance of “customer” has four tuples (rows or records)

Instances are frequently changing E.g., inserting new tuples, deleting or updating existing tuples

Schemas may also change but not frequently

7

Page 8: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Arity & Cardinality of Relations

Arity (Degree) of a relation Number of attributes of that relation

Cardinality of a relation Number of tuples in that relation

8

Arity = 3Cardinality = 4

Page 9: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

9

Relations are Unordered

Order of tuples is not important

Order of columns is not important

Think of a relation as a set (or bag) of tuples not as a list of tuples Most current DBMSs allow bags

sNumber sName

1 Dave

2 Greg

Student

sNumber sName

2 Greg

1 Dave

Student

These relations are equivalent

sName SNumber

Greg 2

Dave 1

Student

Page 10: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Keys of Relations Super Keys

Subset of attributes that uniquely identify each tuple

Candidate Keys Minimal super key

Primary Keys Choose any of the candidate keys Represented by “underline” under the selected attributes

Set vs. Bag If a relation has a primary key, then it is a set not a bag

10

customer (customer_name, customer_street, customer_city)

Assuming the customer name is unique

Page 11: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

To create these relations (tables)

We use SQL

11

Page 12: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Relational Query Languages (SQL Standard)

Developed by IBM (system R) in 1970s Standard as used by many vendors (portable)

SQL (Structured Query Language)

Standards: SQL-86 SQL-89 (minor revision) SQL-92 (major revision) SQL-99 (major extensions in OO, current standard)

12

Page 13: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

SQL Language Data Definition Language (DDL)

Create tables, specifying the columns and their types of columns, the primary keys, etc.

Drop tables, add/drop columns, add/drop constraints – primary key, unique, etc.

Data Manipulation Language (DML) Update, Insert, Delete tuples Query the data

13

Page 14: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

14

SQL DDL

DDL allows the specification of:

The schema for each relation

The type and domain of values associated with each attribute

Integrity constraints Will see many types of these constraints

The set of indices to be maintained for each relation

Security and authorization information for each relation

The physical storage structure of each relation on disk

Page 15: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

15

DDL: Creating TablesCREATE TABLE <tableName> (

<col> <type>,<col> <type>,…<col> <type>,[CONSTRAINT <cName>] PRIMARY KEY (…),[CONSTRAINT <cName>] UNIQUE (…),[CONSTRAINT <cName>] FOREIGN KEY (…)

REFERENCES <tableName> (…));

Page 16: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

DDL ---- Creating Relations

Create “Students” relation

CREATE TABLE Students(sid: CHAR(20), name: CHAR(20), login: CHAR(10), age: INTEGER, gpa: REAL);

CREATE TABLE Enrolled(sid: CHAR(20), cid: Varchar2(20),

enrollDate: date, grade: CHAR(2))

Observe that type (domain) of each field is specified

Types are enforced by DBMS whenever tuples are added or modified

Create “Enrolled” relation

CREATE TABLE Courses(cid: Varchar2(20), name: Varchar2(50), maxCredits : integer,

graduateFlag: char(1));

Create “Courses” relation

16

Page 17: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Domain Types in SQL String Data:

char(n): Fixed length character string, with user-specified length n varchar2(n): Variable length character strings, with user-specified maximum length n

Numbers: int: Integer Real: floating point number Number(p,s): Number with precision p and scale s

Boolean: Make it char(1) [Y/N or T/F], or number(1) [1/0]

Date & Time: Date: Date field with certain format Timestamp: Date plus time with a certain format

17

customer (name: varchar2(100), DoB: Date, Phone: Char(10), …)customer (name: varchar2(100), DoB: Date, Phone: Char(10), …)

Page 18: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

18

Dropping & Altering Tables Dropping (Deleting) a table

DROP TABLE <tableName>;

Altering a table to add a column ALTER TABLE <tableName> ADD <col> <type>; The initial value of the column is Null

Altering a table to drop a column ALTER TABLE <tableName> DROP COLUMN <col>; Some DBMSs do not support dropping columns

Page 19: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Integrity Constraints (ICs)

IC: condition that must be True for any instance of the database ICs are specified when schema is defined ICs are checked when relations are modified

A legal instance of a relation is one that satisfies all specified ICs. DBMS should not allow illegal instances.

Examples: Student ID must be unique The combination of first + middle + last names must be unique The grade must be one of ( A, B, C, D) The gender must be (M, F) Account balance must be >= 0

19

Page 20: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

20

IC: Key Constraints Two types of key constraints can be defined

Primary Key Unique (The other candidate keys)

Each relation may have only one primary key but, possibly many unique keys

Primary key attributes do not accept Null, Unique attributes accept Null

Create “Students” relation

CREATE TABLE Students(sid: CHAR(20) Primary Key, name: CHAR(20), login: CHAR(10) Unique, age: INTEGER, gpa: REAL);

CREATE TABLE Courses (cid: Varchar2(20) Primary Key, name: varchar2(50), maxCredits : integer, graduateFlag: char(1));

Create “Courses” relation

Page 21: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

CREATE TABLE Students(sid: CHAR(20), name: CHAR(20), login: CHAR(10), age: INTEGER, gpa: REAL,

Constraint pk_sid Primary Key (sid), Constraint u_login Unique (login));

IC: Key Constraints (Cont’d)

Another way to define Keys

21

Create “Students” relation

CREATE TABLE Enrolled(sid: CHAR(20), cid: Varchar(20), enrollDate: date, grade: CHAR(2),

Constraint pk_cols Primary Key (sid, cid, enrollDate));

Create “Enrolled” relation

A relation can have only one primary key, but

many unique keys

That is how you define constraints on multiple columns

Page 22: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Violations of Key Constraints DBMS prevents this from happening

Example customer (name: varchar2(50), Phone: Char(10), address: varchar2(100));

(“Mike”, “1765432123”, “NY”); Inserted

(“Mike”, “1999887665”, “CA”); Raises an error (duplication)

(null , “1999887665”, “CA”); Raises an error (null value)

22

Page 23: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

23

Violation of key constraints

Primary key violation if: There is a row with null values for any attribute of primary key, OR Two rows with same values for all attributes of primary key

Unique key violation if: Two rows have the same non-null values in the unique attributes Null values are not equal to each other

DBMS will prevent this from happening

Page 24: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

24

Adding/Dropping Constraints

Can be done after creating tables

Adding a constraint ALTER TABLE <tableName> ADD CONSTRAINT <cName>

<constraint type> …

Dropping a constraint ALTER TABLE <tableName> DROP CONSTRAINT <cName>

Page 25: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

CREATE TABLE Students(sid: CHAR(20), name: CHAR(20), login: CHAR(10), age: INTEGER, gpa: REAL);

Example

25

Create “Students” relation with no constraints

Alter table Students add constraint StudentPrimaryKey Primary Key (sid);

Alter table Students add constraint StudentUnique Unique (login);

Then add constraints…

Page 26: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Constraints Limits the Data

26

CREATE TABLE Enrolled(sid: CHAR(20), cid: Varchar2(20), enrollDate: date, grade: CHAR(2),

Constraint pk Primary Key (sid, cid));

Create “Enrolled” relation

A student can take a course only once.

CREATE TABLE Enrolled(sid: CHAR(20), cid: Varchar2(20), enrollDate: date, grade: CHAR(2),

Constraint pk Primary Key (sid, cid, enrollDate));

Create “Enrolled” relation

A student can take a course many times on different dates.

Page 27: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Not Null & Default Constraint Types

27

Create “Students” relation

CREATE TABLE Students(sid: CHAR(20), name: CHAR(20) NOT NULL, login: CHAR(10), age: INTEGER, gpa: REAL Default 0,

Constraint pk Primary Key (sid), Constraint u1 Unique (login));

CREATE TABLE Courses (cid: Varchar2(20), name: varchar2(50), maxCredits : integer, graduateFlag: char(1) Default ‘Y’);

Create “Courses” relation

NOT NULL & DEFAULT constraints

Page 28: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Domain Values Constraint

28

CREATE TABLE Enrolled(sid: CHAR(20), cid: Varchar2(20), enrollDate: date, grade: CHAR(2),

Constraint pk Primary Key (sid, cid, enrollDate),Constraint gradeVal check (grade in (‘A+’, ‘A-’, ‘B+’, ‘B-’)) );

Create “Enrolled” relation

Domain constraint

Page 29: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

IC: Foreign Key Constraints(Referential Integrity )

29

Create “Students” relation

CREATE TABLE Students(sid: CHAR(20), name: CHAR(20), login: CHAR(10), age: INTEGER, gpa: REAL);

CREATE TABLE Courses (cid: Varchar2(20), name: varchar2(50), maxCredits : integer, graduateFlag: char(1));

Create “Courses” relation

CREATE TABLE Enrolled(sid: CHAR(20), cid: Varchar2(20), enrollDate: date, grade: CHAR(2));

Create “Enrolled” relationForeign key

Foreign key

Page 30: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Foreign Keys, Referential Integrity

Foreign key : Set of fields in one relation that "refer" to a tuple in another relation (like a pointer)

Foreign key : FK in referencing relation must match PK of referenced relation. Match = same number of columns, compatible data types (column names can be

different) The relationship is many-to-one from the “referencing” to the “referenced”

sid name login age gpa

53666 Jones jones@cs 18 3.453688 Smith smith@eecs 18 3.253650 Smith smith@math 19 3.8

sid cid grade53666 Carnatic101 C53666 Reggae203 B53650 Topology112 A53666 History105 B

Enrolled (referencing relation)Students (referenced relation)

Foreign Key Primary Key

30

Page 31: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Foreign Keys in SQL

31

Create “Students” relation

CREATE TABLE Students(sid: CHAR(20) Primary Key, name: CHAR(20), login: CHAR(10), age: INTEGER, gpa: REAL);

CREATE TABLE Courses (cid: Varchar2(20) Primary Key, name: varchar2(50), maxCredits : integer, graduateFlag: char(1));

Create “Courses” relation

CREATE TABLE Enrolled(sid: CHAR(20) Foreign Key References Students (sid), cid: Varchar2(20), enrollDate: date, grade: CHAR(2),

Constraint fk_cid Foreign Key (cid) References Courses (cid));

Create “Enrolled” relation

Two ways to define the FK constrain while creating a table

Alter Table Enrolled Add Constraints fk_cid Foreign Key cid References Courses(cid));

That is a third way

Page 32: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Foreign Keys in SQL

32

Create “Students” relation

CREATE TABLE Students(sid: CHAR(20) Primary Key, name: CHAR(20), login: CHAR(10), age: INTEGER, gpa: REAL);

CREATE TABLE Courses (cid: Varchar2(20) Primary Key, name: varchar2(50), maxCredits : integer, graduateFlag: char(1));

Create “Courses” relation

CREATE TABLE Enrolled(sid: CHAR(20) Foreign Key References Students (sid), cid: Varchar2(20), enrollDate: date, grade: CHAR(2),

Constraint fk_cid Foreign Key (cid) References Courses (cid));

Create “Enrolled” relation

Alter Table Enrolled Add Constraints fk_cid Foreign Key cid References Courses(cid));

sid & cid have to be already defined

as primary keys

Page 33: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

33

Violation of Foreign Key Constraints

DBMS will prevent foreign key values that does not exist in the primary key column(s)

sid name login age gpa

53666 Jones jones@cs 18 3.453688 Smith smith@eecs 18 3.253650 Smith smith@math 19 3.8

Enrolled (referencing relation) Students (referenced relation)

Foreign Key Primary Key

Will be rejected

Page 34: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Enforcing Referential Integrity

Deletion: What if an Enrolled tuple is deleted? No problem. It is allowed

34

Page 35: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Enforcing Referential Integrity (Cont’d)

Deletion: What if a Student tuple is deleted? Cascading -- Also delete all Enrolled tuples that refer to it

No Action -- Disallow deletion of a Students tuple since there are dependent tuples

Set Default -- Set sid in Enrolled tuples that refer to it to a default sid

Set Null -- Set sid in Enrolled tuples that refer to it to a special value null, denoting `unknown’ (Not always applicable)

Same rules apply when updating Students.sid

The two most common actions are: Cascading or No Action

35

Page 36: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Referential Integrity in SQL

SQL/99 supports all 4 options on deletes & updates:

CREATE TABLE Enrolled(sid: CHAR(20) Foreign Key References Students

(sid), cid: Varchar2(20), enrollDate: date, grade: CHAR(2),

Constraints fk_cid Foreign Key cid References Courses (cid) ON DELETE CASCADE ON UPDATE NO ACTION);

36

Page 37: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Cyclic Dependencies What if cyclic dependencies between two tables exists?

Table R has a foreign key to Table S (Say R.a references S.b) Table S has a foreign key to Table R (Say S.c references R.d)

At insertion time: When insert into R will be rejected because S.b does not yet exits When insert into S will be rejected because R.d does not yet exits

Solution (Many) – One option: Disable the constraint on one table, say S Insert the tuple into S, then insert into R Enable the constraint on S again

Another solution Group the insertions in one transaction

Begin Transaction <the inserts>

End Transaction

Alter Table S Disable Constraint <name>; Alter Table S Enable Constraint <name>;

Constraints are checked at the end of the transaction

37

Page 38: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Where do ICs Come From? ICs are based upon semantics of real-world enterprise being

described in database relations.

We can check a database instance to see if an IC is violated ? In typical cases, DBMS should make sure all constraints are enforced

Given an instance, can we tell what are the ICs? No, NEVER ! An IC is a statement about all possible instances! They need to be checked from the schema definition not from a given

instance

38

Page 39: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

39

Relational Model: Summary

Structure Relations (Tables) Attributes (Columns, Fields)

Constraints + Constraint Enforcement Domain, Default, and Not Null Constraint Key Constraint

Primary key, candidate key (unique) Foreign Key Constraint

SQL DDL commands

Page 40: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

Inserting, Updating, Deleting Data This is performed using Data Manipulation

Language of SQL (DML)

Insertion Insert into Students values (‘1111’, …);

Deletion Delete from Students; Delete from Students Where sid = ‘1111’;

Update Update Students Set GPA = GPA + 0.4; Update Students Set GPA = GPA + 0.4 Where sid = ‘1111’;

40

Page 41: 1 The Relational Model Instructor: Mohamed Eltabakh meltabakh@cs.wpi.edu.

ExerciseFor Quiz 1 application (airline database), assume we use the following design… What are the relations (tables) that you can build?

41