![Page 1: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/1.jpg)
Introduction to Database Systems CSE 414
Lecture 16: Constraints
CSE 414 - Spring 2015 1
![Page 2: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/2.jpg)
Announcements
• Reminders: – Web quiz due Monday night – XML homework due Wednesday night
• Today: Constraints (7.1, 7.2, 7.4)
CSE 414 - Spring 2015 2
![Page 3: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/3.jpg)
Where We Are?
We are learning about database design • How to design a database schema? • Last time: Real world -> E/R Diagrams -> Relations Next, we will learn more about good schemas • Today: Constraints and data integrity • Next time: Schema normalization, then Views
CSE 414 - Spring 2015 3
![Page 4: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/4.jpg)
Integrity Constraints Motivation
• ICs help prevent entry of incorrect information • How? DBMS enforces integrity constraints
– Allows only legal database instances (i.e., those that satisfy all constraints) to exist
– Ensures that all necessary checks are always performed and avoids duplicating the verification logic in each application
CSE 414 - Spring 2015 4
An integrity constraint is a condition specified on a database schema that restricts the data that can be stored in an instance of the database.
![Page 5: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/5.jpg)
Constraints in E/R Diagrams
Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person. Single-value constraints: a person can have only one father. Referential integrity constraints: if you work for a company, it must exist in the database. Other constraints: peoples’ ages are between 0 and 150.
CSE 414 - Spring 2015 5
![Page 6: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/6.jpg)
Keys in E/R Diagrams
address name ssn
Person
Product
name category
price
No formal way to specify multiple keys in E/R diagrams
Underline:
6
![Page 7: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/7.jpg)
Single Value Constraints
makes
makes
vs.
CSE 414 - Spring 2015 7
![Page 8: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/8.jpg)
Referential Integrity Constraints
Company Product makes
Company Product makes
Each product made by at most one company. Some products made by no company
Each product made by exactly one company. CSE 414 - Spring 2015 8
![Page 9: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/9.jpg)
Other Constraints
Company Product makes <100
CSE 414 - Spring 2015 9
Q: What does this mean ? A: A Company entity cannot be connected by relationship to more than 99 Product entities
![Page 10: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/10.jpg)
10
Constraints in SQL
Constraints in SQL: • Keys, foreign keys • Attribute-level constraints • Tuple-level constraints • Global constraints: assertions
• The more complex the constraint, the harder it is to check and to enforce
simplest
Most complex
CSE 414 - Spring 2015
![Page 11: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/11.jpg)
11
Key Constraints
OR:
CREATE TABLE Product ( name CHAR(30) PRIMARY KEY, category VARCHAR(20))
CREATE TABLE Product ( name CHAR(30), category VARCHAR(20),
PRIMARY KEY (name))
Product(name, category)
CSE 414 - Spring 2015
![Page 12: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/12.jpg)
12
Keys with Multiple Attributes
CREATE TABLE Product ( name CHAR(30), category VARCHAR(20), price INT,
PRIMARY KEY (name, category))
Name Category Price
Gizmo Gadget 10
Camera Photo 20
Gizmo Photo 30
Gizmo Gadget 40
Product(name, category, price)
CSE 414 - Spring 2015
![Page 13: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/13.jpg)
Other Keys
CSE 414 - Spring 2015 13
CREATE TABLE Product ( productID CHAR(10),
name CHAR(30), category VARCHAR(20), price INT,
PRIMARY KEY (productID), UNIQUE (name, category))
There is at most one PRIMARY KEY; there can be many UNIQUE
![Page 14: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/14.jpg)
Foreign Key Constraints
CSE 414 - Spring 2015 14
CREATE TABLE Purchase ( prodName CHAR(30) REFERENCES Product(name),
date DATETIME)
prodName is a foreign key to Product(name) name must be a key in Product
Referential integrity
constraints
May write just Product
if name is PK
![Page 15: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/15.jpg)
15
Name Category
Gizmo gadget
Camera Photo
OneClick Photo
ProdName Store
Gizmo Wiz
Camera Ritz
Camera Wiz
Product Purchase
CSE 414 - Spring 2015
Foreign Key Constraints
CREATE TABLE Purchase ( prodName CHAR(30) REFERENCES Product(name),
date DATETIME)
![Page 16: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/16.jpg)
Foreign Key Constraints
• Example with multi-attribute primary key
• (name, category) must be a KEY in Product
CSE 414 - Spring 2015 16
CREATE TABLE Purchase ( prodName CHAR(30), category VARCHAR(20),
date DATETIME, FOREIGN KEY (prodName, category) REFERENCES Product(name, category)
![Page 17: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/17.jpg)
17
Name Category
Gizmo gadget
Camera Photo
OneClick Photo
ProdName Store
Gizmo Wiz
Camera Ritz
Camera Wiz
Product Purchase
What happens during updates ?
Types of updates: • In Purchase: insert/update • In Product: delete/update
CSE 414 - Spring 2015
![Page 18: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/18.jpg)
18
What happens during updates ?
• SQL has three policies for maintaining referential integrity:
• Reject violating modifications (default) • Cascade: after delete/update do delete/update • Set-null set foreign-key field to NULL
CSE 414 - Spring 2015
![Page 19: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/19.jpg)
Maintaining Referential Integrity
CSE 414 - Spring 2015 19
CREATE TABLE Purchase ( prodName CHAR(30), category VARCHAR(20),
date DATETIME, FOREIGN KEY (prodName, category) REFERENCES Product(name, category)
ON UPDATE CASCADE ON DELETE SET NULL )
![Page 20: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/20.jpg)
Constraints on Attributes and Tuples
• Constraints on attributes: NOT NULL -- obvious meaning... CHECK condition -- any condition !
• Constraints on tuples CHECK condition
CSE 414 - Spring 2015 20
![Page 21: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/21.jpg)
Constraints on Attributes and Tuples
CSE 414 - Spring 2015 21
CREATE TABLE R ( A int NOT NULL, B int CHECK (B > 50 and B < 100), C varchar(20),
D int, CHECK (C >= 'd' or D > 0))
![Page 22: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/22.jpg)
Constraints on Attributes and Tuples
CSE 414 - Spring 2015 22
CREATE TABLE Product ( productID CHAR(10),
name CHAR(30), category VARCHAR(20), price INT CHECK (price > 0),
PRIMARY KEY (productID), UNIQUE (name, category))
![Page 23: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/23.jpg)
23
CREATE TABLE Purchase ( prodName CHAR(30) CHECK (prodName IN
(SELECT Product.name FROM Product), date DATETIME NOT NULL)
CSE 414 - Spring 2015
Constraints on Attributes and Tuples
What is the difference from
Foreign-Key ?
What does this constraint do?
![Page 24: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/24.jpg)
24
General Assertions
CREATE ASSERTION myAssert CHECK (NOT EXISTS(
SELECT Product.name FROM Product, Purchase WHERE Product.name = Purchase.prodName GROUP BY Product.name HAVING count(*) > 200) )
CSE 414 - Spring 2015
But most DBMSs do not implement assertions Because it is hard to support them efficiently Instead, they provide triggers
![Page 25: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/25.jpg)
Database Triggers
• Event-Condition-Action rules • Event
– Can be insertion, update, or deletion to a relation
• Condition – Can be expressed on DB state before or after event
• Action – Perform additional DB modifications
CSE 414 - Spring 2015 25
![Page 26: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/26.jpg)
More About Triggers
• Row-level trigger – Executes once for each modified tuple
• Statement-level trigger – Executes once for all tuples that are modified in a
SQL statement
CSE 414 - Spring 2015 26
![Page 27: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/27.jpg)
Database Triggers Example
CSE 414 - Spring 2015 27
CREATE TRIGGER ProductCategories AFTER UPDATE OF price ON Product REFERENCING OLD ROW AS OldTuple NEW ROW AS NewTuple FOR EACH ROW WHEN (OldTuple.price > NewTuple.price)
UPDATE Product SET category = ‘On sale’ WHERE productID = OldTuple.productID
When Product.price is updated, if it is decreased then set Product.category = ‘On sale’
![Page 28: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/28.jpg)
SQL Server Example
CSE 414 - Spring 2015 28
CREATE TRIGGER ProductCategory ON Product AFTER UPDATE AS BEGIN UPDATE Product SET category=‘sale’ WHERE productID IN (SELECT i.productID from inserted i, deleted d WHERE i.productID = d.productID AND i.price < d.price) END
![Page 29: Introduction to Database Systems CSE 414 · Finding constraints is part of the modeling process. Commonly used constraints: Keys: social security number uniquely identifies a person](https://reader034.vdocuments.net/reader034/viewer/2022050208/5f5b07b9a28b0b786f2ade7f/html5/thumbnails/29.jpg)
Discussion
• Both constraints and triggers are tools that help us keep the database consistent
• What are their pros and cons?
CSE 414 - Spring 2015 29