Constraints. Local and Global Constraints Triggers

Similar documents
Constraints and Triggers

Databases 1. Defining Tables, Constraints

From E/R Diagrams to Relations

Chapter 7: Constraints and Triggers. Foreign Keys Local and Global Constraints Triggers

CS 464/564 Introduction to Database Management System Instructor: Abdullah Mueen

Design Techniques. 1. Avoid redundancy 2. Limit the use of weak entity sets 3. Don t use an entity set when an attribute will do

CS54100: Database Systems

SQL DATA DEFINITION LANGUAGE

SQL: Data Definition Language

A tuple is dangling if it doesn't join with any

SQL DATA DEFINITION LANGUAGE

SQL DATA DEFINITION LANGUAGE

Introduction to SQL. Multirelation Queries Subqueries. Slides are reused by the approval of Jeffrey Ullman s

Outerjoins, Constraints, Triggers

Chapter 2 The relational Model of data. Relational model introduction

Introduction to SQL. Select-From-Where Statements Multirelation Queries Subqueries. Slides are reused by the approval of Jeffrey Ullman s

Introduction to SQL. Select-From-Where Statements Multirelation Queries Subqueries

SQL Continued! Outerjoins, Aggregations, Grouping, Data Modification

Creating Tables, Defining Constraints. Rose-Hulman Institute of Technology Curt Clifton

Databases-1 Lecture-01. Introduction, Relational Algebra

Introduction to SQL SELECT-FROM-WHERE STATEMENTS SUBQUERIES DATABASE SYSTEMS AND CONCEPTS, CSCI 3030U, UOIT, COURSE INSTRUCTOR: JAREK SZLICHTA

Chapter 6 The database Language SQL as a tutorial

EXTENDED RELATIONAL ALGEBRA OUTERJOINS, GROUPING/AGGREGATION INSERT/DELETE/UPDATE

Chapter 6 The database Language SQL as a tutorial

Where Are We? Next Few Lectures. Integrity Constraints Motivation. Constraints in E/R Diagrams. Keys in E/R Diagrams

More SQL. Extended Relational Algebra Outerjoins, Grouping/Aggregation Insert/Delete/Update

Subqueries. Must use a tuple-variable to name tuples of the result

Database Design and Programming

Why SQL? SQL is a very-high-level language. Database management system figures out best way to execute query

CS W Introduction to Databases Spring Computer Science Department Columbia University

CSCI3030U Database Models

Constraints, Views & Indexes. Running Example. Kinds of Constraints INTEGRITY CONSTRAINTS. Keys Foreign key or referential integrity constraints

CSC 343 Winter SQL: Aggregation, Joins, and Triggers MICHAEL LIUT

Views, Indexes, Authorization. Views. Views 8/6/18. Virtual and Materialized Views Speeding Accesses to Data Grant/Revoke Priviledges

Introduction to Database Systems CSE 414

Introduction to Data Management CSE 344

CS145 Introduction. About CS145 Relational Model, Schemas, SQL Semistructured Model, XML

CS 317/387. A Relation is a Table. Schemas. Towards SQL - Relational Algebra. name manf Winterbrew Pete s Bud Lite Anheuser-Busch Beers

SQL: Part III. Announcements. Constraints. CPS 216 Advanced Database Systems

SQL: Data Manipulation Language

Introduction to Data Management CSE 344

Interpretation is not exactly ëmissing value." There could be many reasons why no value is

Announcements (September 18) SQL: Part II. Solution 1. Incomplete information. Solution 3? Solution 2. Homework #1 due today (11:59pm)

SQL: Part II. Announcements (September 18) Incomplete information. CPS 116 Introduction to Database Systems. Homework #1 due today (11:59pm)

SQL: Data Definition Language. csc343, Introduction to Databases Diane Horton Fall 2017

Chapter 7 Constraints and Triggers. Spring 2011 Instructor: Hassan Khosravi

SQL Functionality SQL. Creating Relation Schemas. Creating Relation Schemas

Databases 1. SQL/PSM and Oracle PL/SQL

SQL: Part II. Introduction to Databases CompSci 316 Fall 2018

Transactions, Views, Indexes. Controlling Concurrent Behavior Virtual and Materialized Views Speeding Accesses to Data

Contains slides made by Naci Akkøk, Pål Halvorsen, Arthur M. Keller, Vera Goebel

COMP102: Introduction to Databases, 20

Database Management System Dr. S. Srinath Department of Computer Science & Engineering Indian Institute of Technology, Madras Lecture No.

Summary Modifications. Database Construction (and Usage) Explicit attribute lists. Insertions with queries. Quiz. Default values

DATA AND SCHEMA MODIFICATIONS CHAPTERS 4,5 (6/E) CHAPTER 8 (5/E)

Relational Query Languages

Relational Algebra and SQL. Basic Operations Algebra of Bags

Relational Algebra. Algebra of Bags

Introduction to Data Management CSE 344

Databases 2012 Constraints, Triggers, and Views

Chapter 10 Advanced topics in relational databases

Chapter 4. Basic SQL. Copyright 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

Integrity Constraints (Reminder)

Chapter 2 The relational Model of data. Relational algebra

CS2300: File Structures and Introduction to Database Systems

Relational Algebra BASIC OPERATIONS DATABASE SYSTEMS AND CONCEPTS, CSCI 3030U, UOIT, COURSE INSTRUCTOR: JAREK SZLICHTA

EGCI 321: Database Systems. Dr. Tanasanee Phienthrakul

The Relational Model. Relational Data Model Relational Query Language (DDL + DML) Integrity Constraints (IC)

Comp 5311 Database Management Systems. 4b. Structured Query Language 3

SQL: A COMMERCIAL DATABASE LANGUAGE. Complex Constraints

The Relational Model of Data (ii)

user specifies what is wanted, not how to find it

SQL: Concepts. Todd Bacastow IST 210: Organization of Data 2/17/ IST 210

SQL: A COMMERCIAL DATABASE LANGUAGE. Data Change Statements,

Module 9: Managing Schema Objects

Real SQL Programming Persistent Stored Modules (PSM)

The Relational Data Model. Functional Dependencies. Example. Functional Dependencies

Relational data model

Chapter 4. Basic SQL. SQL Data Definition and Data Types. Basic SQL. SQL language SQL. Terminology: CREATE statement

Data Modelling and Databases. Exercise Session 7: Integrity Constraints

CSCD43: Database Systems Technology. Lecture 4

Advanced Constraints SQL. by Joe Celko copyright 2007

Running Example Tables name location

Copyright 2016 Ramez Elmasri and Shamkant B. Navathe

CSCI 127 Introduction to Database Systems

SQL DATA DEFINITION: KEY CONSTRAINTS. CS121: Relational Databases Fall 2017 Lecture 7

Beersèname, manfè. Likesèdrinker, beerè. Sellsèbar, beer, priceè. Frequentsèdrinker, barè

Full file at

Lecture 08. Spring 2018 Borough of Manhattan Community College

Basic SQL. Basic SQL. Basic SQL

Slides by: Ms. Shree Jaswal

SQL. The Basics Advanced Manipulation Constraints Authorization 1. 1

e e Conceptual design begins with the collection of requirements and results needed from the database (ER Diag.)

SQL Constraints and Triggers. Week 11

CSC 261/461 Database Systems Lecture 6. Fall 2017

DATABASE TECHNOLOGY - 1MB025 (also 1DL029, 1DL300+1DL400)

SQL: Data De ni on. B0B36DBS, BD6B36DBS: Database Systems. h p:// Lecture 3

Design Theory for Relational Databases

Domain Constraints Referential Integrity Assertions Triggers. Authorization Authorization in SQL

CSE 344 MAY 14 TH ENTITIES

Transcription:

Constraints Foreign Keys Local and Global Constraints Triggers 1

Constraints and Triggers A constraint is a relationship among data elements that the DBMS is required to enforce. Example: key constraints. Triggers are only executed when a specified condition occurs, e.g., insertion of a tuple. Easier to implement than complex constraints. 2

Kinds of Constraints Keys. Foreign-key, or referential-integrity. Value-based constraints. Constrain values of a particular attribute. Tuple-based constraints. Relationship among components. Assertions: any SQL boolean expression. 3

Review: Single-Attribute Keys Place PRIMARY KEY or UNIQUE after the type in the declaration of the attribute. Example: CREATE TABLE Beers ( name CHAR(20) UNIQUE, ); manf CHAR(20) 4

Review: Multiattribute Key The bar and beer together are the key for Sells: CREATE TABLE Sells ( bar CHAR(20), ); beer VARCHAR(20), price REAL, PRIMARY KEY (bar, beer) 5

Foreign Keys Values appearing in attributes of one relation must appear together in certain attributes of another relation. Example: in Sells(bar, beer, price), we might expect that a beer value also appears in Beers.name. 6

Expressing Foreign Keys Use keyword REFERENCES, either: 1. After an attribute (for one-attribute keys). 2. As an element of the schema: FOREIGN KEY (<list of attributes>) REFERENCES <relation> (<attributes>) Referenced attributes must be declared PRIMARY KEY or UNIQUE. 7

Example: With Attribute CREATE TABLE Beers ( name CHAR(20) PRIMARY KEY, manf CHAR(20) ); CREATE TABLE Sells ( bar CHAR(20), beer CHAR(20) REFERENCES Beers(name), price REAL ); 8

Example: As Schema Element CREATE TABLE Beers ( name CHAR(20) PRIMARY KEY, manf CHAR(20) ); CREATE TABLE Sells ( bar CHAR(20), beer CHAR(20), price REAL, FOREIGN KEY(beer) REFERENCES Beers(name)); 9

Enforcing Foreign-Key Constraints If there is a foreign-key constraint from relation R to relation S, two violations are possible: 1. An insert or update to R introduces values not found in S. S 2. A deletion or update to S causes some tuples of R to dangle. 10

Actions Taken --- (1) Example: suppose R = Sells, S = Beers. An insert or update to Sells that introduces a nonexistent beer must be rejected. A deletion or update to Beers that removes a beer value found in some tuples of Sells can be handled in three ways (next slide). 11

Actions Taken --- (2) 1. Default : Reject the modification. 2. Cascade : Make the same changes in Sells. Deleted beer: delete Sells tuple. Updated beer: change value in Sells. 3. Set NULL : Change the beer to NULL. 12

Example: Cascade Delete the Bud tuple from Beers: Then delete all tuples from Sells that have beer = Bud. Update p the Bud tuple by changing g Bud to Budweiser : Then change all Sells tuples with beer = Bud to beer = Budweiser. 13

Example: Set NULL Delete the Bud tuple from Beers: Change all tuples of Sells that have beer = Bud to have beer = NULL. Update p the Bud tuple by changing g Bud to Budweiser : Same change as for deletion. 14

Choosing a Policy When we declare a foreign key, we may choose policies SET NULL or CASCADE independently for deletions and updates. Follow the foreign-key declaration by: ON [UPDATE, DELETE][SET NULL, CASCADE] Two such clauses may be used. Otherwise, the default (reject) is used. 15

Example: Setting Policy CREATE TABLE Sells ( bar CHAR(20), beer CHAR(20), price REAL, FOREIGN KEY(beer) REFERENCES Beers(name) ON DELETE SET NULL ON UPDATE CASCADE ); 16

Attribute-Based Checks Constraints on the value of a particular attribute. Add CHECK(<condition>) to the declaration for the attribute. The condition may use the name of the attribute, te but any other relation or attribute name must be in a subquery. 17

Example: Attribute-Based Check CREATE TABLE Sells ( bar CHAR(20), beer CHAR(20) CHECK ( beer IN (SELECT name FROM Beers)), price REAL CHECK ( price <= 5.00 ) ); 18

Timing of Checks Attribute-based checks are performed only when a value for that attribute is inserted or updated. Example: CHECK (price <= 5.00) checks every new price and rejects the modification (for that tuple) if the price is more than $5. Example: CHECK (beer IN (SELECT name FROM Beers)) not checked if a beer is deleted from Beers (unlike foreign-keys). 19

Tuple-Based Checks CHECK (<condition>) may be added as a relation-schema element. The condition may refer to any attribute of the relation. But other attributes or relations require a subquery. Checked on insert or update only. 20

Example: Tuple-Based Check Only Joe s Bar can sell beer for more than $5: CREATE TABLE Sells ( bar CHAR(20), ); beer CHAR(20), price REAL, CHECK (bar = Joe s Bar OR price <= 5.00) 21

Assertions These are database-schema elements, like relations or views. Defined by: CREATE ASSERTION <name> CHECK (<condition>); Condition may refer to any relation or attribute in the database schema. 22

Example: Assertion In Sells(bar, beer, price), no bar may charge an average of more than $5. CREATE ASSERTION NoRipoffBars CHECK ( NOT EXISTS ( SELECT bar FROM Sells above $5 GROUP BY bar HAVING 5.00 < AVG(price) )); Bars with an average price 23

Example: Assertion In Drinkers(name, addr, phone) and Bars(name, addr, license), there cannot be more bars than drinkers. CREATE ASSERTION FewBar CHECK ( (SELECT COUNT(*) FROM Bars) <= (SELECT COUNT(*) FROM Drinkers) ); 24

Timing of Assertion Checks In principle, we must check every assertion after every modification to any relation of the database. A clever system can observe that only certain changes could cause a given assertion to be violated. Example: No change to Beers can affect FewBar. Neither can an insertion to Drinkers. 25

Triggers: Motivation Assertions are powerful, but the DBMS often can t tell when they need to be checked. Attribute- and tuple-based checks are checked at known times, but are not powerful. Triggers let the user decide when to checkforanycondition condition. 26

Event-Condition-Action Rules Another name for trigger is ECA rule, or event-condition-action rule. Event : typically a type of database modification, e.g., insert on Sells. Condition : Any SQL boolean-valued expression. Action : Any SQL statements. 27

Preliminary Example: A Trigger Instead of using a foreign-key constraint and rejecting insertions into Sells(bar, beer, price) with unknown beers, a trigger can add that beer to Beers, with a NULL manufacturer. 28

Example: Trigger Definition CREATE TRIGGER BeerTrig The event AFTER INSERT ON Sells REFERENCING NEW ROW AS NewTuple FOR EACH ROW WHEN (NewTuple.beer NOT IN (SELECT name FROM Beers)) INSERT INTO Beers(name) VALUES(NewTuple.beer); The condition The action 29

Options: CREATE TRIGGER CREATE TRIGGER <name> Or: CREATE OR REPLACE TRIGGER <name> Useful if there is a trigger with that name and you want to modify df the trigger. 30

Options: The Event AFTER can be BEFORE. Also, INSTEAD OF, if the relation is a view. A clever way to execute view modifications: have triggers translate them to appropriate modifications on the base tables. INSERT can be DELETE or UPDATE. And UPDATE can be UPDATE... ON a particular attribute. 31

Options: FOR EACH ROW Triggers are either row-level or tt statement-level. tl l FOR EACH ROW indicates row-level; its absence indicates statement-level. Row level triggers : execute once for each modified tuple. Statement-level triggers : execute once for a SQL statement, regardless of how many tuples are modified. 32

Options: REFERENCING INSERT statements imply a new tuple (for row-level) l) or new table (for statement-level). The table is the set of inserted tuples. DELETE implies an old tuple or table. UPDATE implies both. Refer to these by [NEW OLD][TUPLE TABLE] AS <name> 33

Options: The Condition Any boolean-valued condition. Evaluated on the database as it would exist before or after the triggering event, depending on whether BEFORE or AFTER is used. But always before the changes take effect. Access the new/old tuple/table through the names in the REFERENCING clause. 34

Options: The Action There can be more than one SQL statement in the action. Surround by BEGIN... END if there is more than one. But queries make no sense in an action, so we are really limited to modifications. 35

Another Example Using Sells(bar, beer, price) and a unary relation RipoffBars(bar), maintain a list of bars that raise the price of any beer by more than $1. 36

The Trigger The event CREATE TRIGGER PriceTrig AFTER UPDATE OF price ON Sells REFERENCING OLD ROW AS ooo NEW ROW AS nnn FOR EACH ROW WHEN(nnn.price > ooo.price + 1.00) INSERT INTO RipoffBars VALUES(nnn.bar); Updates let us talk about old and new tuples We need to consider each price change only changes to prices Condition: a raise in price > $1 When the price change is great enough, add the bar to RipoffBars 37