lecture 06 data modeling: e/r diagrams
DESCRIPTION
Lecture 06 Data Modeling: E/R Diagrams. Wednesday, January 18, 2006. Outline. Data Definition Language (6.6) Views (6.7) Constraints (Chapter 7) We begin E/R diagrams (Chapter 2). Data Definition in SQL. So far we have see the Data Manipulation Language , DML - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/1.jpg)
1
Lecture 06Data Modeling: E/R Diagrams
Wednesday, January 18, 2006
![Page 2: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/2.jpg)
2
Outline
• Data Definition Language (6.6)
• Views (6.7)
• Constraints (Chapter 7)
• We begin E/R diagrams (Chapter 2)
![Page 3: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/3.jpg)
3
Data Definition in SQLSo far we have see the Data Manipulation Language, DMLNext: Data Definition Language (DDL)
Data types: Defines the types.
Data definition: defining the schema.
• Create tables• Delete tables• Modify table schema
Indexes: to improve performance
![Page 4: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/4.jpg)
4
Creating Tables
CREATE TABLE Person(
name VARCHAR(30), social-security-number INT, age SHORTINT, city VARCHAR(30), gender BIT(1), Birthdate DATE
);
CREATE TABLE Person(
name VARCHAR(30), social-security-number INT, age SHORTINT, city VARCHAR(30), gender BIT(1), Birthdate DATE
);
![Page 5: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/5.jpg)
5
Deleting or Modifying a TableDeleting:
ALTER TABLE Person ADD phone CHAR(16);
ALTER TABLE Person DROP age;
ALTER TABLE Person ADD phone CHAR(16);
ALTER TABLE Person DROP age;
Altering: (adding or removing an attribute).
What happens when you make changes to the schema?
Example:
DROP Person; DROP Person; Example: Exercise with care !!
![Page 6: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/6.jpg)
6
Default Values
Specifying default values:
CREATE TABLE Person( name VARCHAR(30), social-security-number INT, age SHORTINT DEFAULT 100, city VARCHAR(30) DEFAULT ‘Seattle’, gender CHAR(1) DEFAULT ‘?’, Birthdate DATE
CREATE TABLE Person( name VARCHAR(30), social-security-number INT, age SHORTINT DEFAULT 100, city VARCHAR(30) DEFAULT ‘Seattle’, gender CHAR(1) DEFAULT ‘?’, Birthdate DATE
The default of defaults: NULL
![Page 7: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/7.jpg)
7
IndexesREALLY important to speed up query processing time.
Suppose we have a relation
Person (name, age, city)
Sequential scan of the file Person may take long
SELECT *FROM PersonWHERE name = “Smith”
SELECT *FROM PersonWHERE name = “Smith”
![Page 8: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/8.jpg)
8
• Create an index on name:
Indexes
Adam Betty Charles …. Smith ….
B+ trees have fan-out of 100s: max 4 levels !Will discuss in the second half of this course
![Page 9: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/9.jpg)
9
Creating Indexes
CREATE INDEX nameIndex ON Person(name)CREATE INDEX nameIndex ON Person(name)
Syntax:
![Page 10: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/10.jpg)
10
Creating Indexes
Indexes can be useful in range queries too:
B+ trees help in:
Why not create indexes on everything?
CREATE INDEX ageIndex ON Person (age)CREATE INDEX ageIndex ON Person (age)
SELECT * FROM Person WHERE age > 25 AND age < 28
SELECT * FROM Person WHERE age > 25 AND age < 28
![Page 11: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/11.jpg)
11
Creating IndexesIndexes can be created on more than one attribute:
SELECT * FROM Person WHERE age = 55 AND city = “Seattle”
SELECT * FROM Person WHERE age = 55 AND city = “Seattle”
Helps in:
SELECT * FROM Person WHERE city = “Seattle”
SELECT * FROM Person WHERE city = “Seattle”
But not in:
CREATE INDEX doubleindex ON Person (age, city)
CREATE INDEX doubleindex ON Person (age, city)
Example:
SELECT * FROM Person WHERE age = 55
SELECT * FROM Person WHERE age = 55
and even in:
![Page 12: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/12.jpg)
12
The Index Selection Problem
• Why not build an index on every attribute ? On every pair of attributes ? Etc. ?
• The index selection problem is hard: balance the query cost v.s. the update cost, in a large application workload
![Page 13: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/13.jpg)
13
Defining ViewsViews are relations, except that they are not physically stored.
For presenting different information to different users
Employee(ssn, name, department, project, salary)
Payroll has access to Employee, others only to Developers
CREATE VIEW Developers AS SELECT name, project FROM Employee WHERE department = “Development”
CREATE VIEW Developers AS SELECT name, project FROM Employee WHERE department = “Development”
![Page 14: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/14.jpg)
14
Person(name, city)Purchase(buyer, seller, product, store)Product(name, maker, price, category)
CREATE VIEW Seattle-Purchase AS
SELECT y.buyer, y.seller, y.product, y.store FROM Person x, Purchase y WHERE x.city = ‘Seattle’ AND x.name = y.buyer
CREATE VIEW Seattle-Purchase AS
SELECT y.buyer, y.seller, y.product, y.store FROM Person x, Purchase y WHERE x.city = ‘Seattle’ AND x.name = y.buyer
Example
Seattle-Purchase(buyer, seller, product, store) “virtual table”
![Page 15: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/15.jpg)
15
SELECT v.name, u.storeFROM Seattle-Purchase u, Product vWHERE u.product = v.name AND v.category = ‘shoes’
SELECT v.name, u.storeFROM Seattle-Purchase u, Product vWHERE u.product = v.name AND v.category = ‘shoes’
We can later use the view:
![Page 16: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/16.jpg)
16
What Happens When We Query a View ?
SELECT v.name, y.storeFROM Person x, Purchase y, Product vWHERE x.city = ‘Seattle’ AND x.name = y.buyer AND y.product = v.name AND v.category = ‘shoes’
SELECT v.name, y.storeFROM Person x, Purchase y, Product vWHERE x.city = ‘Seattle’ AND x.name = y.buyer AND y.product = v.name AND v.category = ‘shoes’
SELECT v.name, u.storeFROM Seattle-Purchase u, Product vWHERE u.product = v.name AND v.category = ‘shoes’
SELECT v.name, u.storeFROM Seattle-Purchase u, Product vWHERE u.product = v.name AND v.category = ‘shoes’
![Page 17: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/17.jpg)
17
Types of Views
• Virtual views:– Used in databases– Computed only on-demand – slow at runtime– Always up to date
• Materialized views– Used in data warehouses– Pre-computed offline – fast at runtime– May have stale data
![Page 18: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/18.jpg)
18
Purchase(buyer, seller, product, store)Product(name, maker, price, category)
CREATE VIEW Expensive-Product AS SELECT name, maker FROM Product WHERE price > 100
CREATE VIEW Expensive-Product AS SELECT name, maker FROM Product WHERE price > 100
Updating Views: Part 1
INSERT INTO Expensive-Product VALUES(‘Gizmo’, ‘Gadgets INC.’)
INSERT INTO Expensive-Product VALUES(‘Gizmo’, ‘Gadgets INC.’)
INSERT INTO Product VALUES(‘Gizmo’, ‘Gadgets INC.’, NULL, NULL)
INSERT INTO Product VALUES(‘Gizmo’, ‘Gadgets INC.’, NULL, NULL)
![Page 19: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/19.jpg)
19
CREATE VIEW Toy-Product AS SELECT name, maker FROM Product WHERE category = ‘Toys’
CREATE VIEW Toy-Product AS SELECT name, maker FROM Product WHERE category = ‘Toys’
Updating Views: Part 2
INSERT INTO Toy-Product VALUES(‘Gizmo’, ‘Gadgets INC.’)
INSERT INTO Toy-Product VALUES(‘Gizmo’, ‘Gadgets INC.’)
INSERT INTO Product VALUES(‘Gizmo’, ‘Gadgets INC.’, NULL, NULL)
INSERT INTO Product VALUES(‘Gizmo’, ‘Gadgets INC.’, NULL, NULL)
Notethis
Purchase(buyer, seller, product, store)Product(name, maker, price, category)
![Page 20: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/20.jpg)
20
CREATE VIEW Buyer-Maker AS SELECT x.buyer, y.maker FROM Purchase x, Product y WHERE x.product = y.name
CREATE VIEW Buyer-Maker AS SELECT x.buyer, y.maker FROM Purchase x, Product y WHERE x.product = y.name
Updating Views: Part 3
INSERT INTO Buyer-Maker VALUES(‘John Smith’, ‘Gadgets INC.’)
INSERT INTO Buyer-Maker VALUES(‘John Smith’, ‘Gadgets INC.’)
? ? ? ? ?? ? ? ? ?
Non-updateableview
Purchase(buyer, seller, product, store)Product(name, maker, price, category)
Most views arenon-updateable
![Page 21: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/21.jpg)
21
Constraints in SQL
• A constraint = a property that we’d like our database to hold
• The system will enforce the constraint by taking some actions:– forbid an update– or perform compensating updates
![Page 22: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/22.jpg)
22
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
Mostcomplex
![Page 23: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/23.jpg)
23
Keys
OR:
CREATE TABLE Product (name CHAR(30) PRIMARY KEY,category VARCHAR(20))
CREATE TABLE Product (name CHAR(30) PRIMARY KEY,category VARCHAR(20))
CREATE TABLE Product (name CHAR(30),category VARCHAR(20)
PRIMARY KEY (name))
CREATE TABLE Product (name CHAR(30),category VARCHAR(20)
PRIMARY KEY (name))
Product(name, category)
![Page 24: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/24.jpg)
24
Keys with Multiple Attributes
CREATE TABLE Product (name CHAR(30),category VARCHAR(20),price INT,
PRIMARY KEY (name, category))
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)
![Page 25: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/25.jpg)
25
Other Keys
CREATE TABLE Product ( productID CHAR(10),
name CHAR(30),category VARCHAR(20),price INT,
PRIMARY KEY (productID), UNIQUE (name, category))
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 26: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/26.jpg)
26
Foreign Key Constraints
CREATE TABLE Purchase (prodName CHAR(30)
REFERENCES Product(name), date DATETIME)
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
Referentialintegrity
constraints
May writejust Product
(why ?)
![Page 27: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/27.jpg)
27
Name Category
Gizmo gadget
Camera Photo
OneClick Photo
ProdName Store
Gizmo Wiz
Camera Ritz
Camera Wiz
Product Purchase
![Page 28: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/28.jpg)
28
Foreign Key Constraints
• OR
• (name, category) must be a PRIMARY KEY
CREATE TABLE Purchase (prodName CHAR(30),category VARCHAR(20),
date DATETIME, FOREIGN KEY (prodName, category) REFERENCES Product(name, category)
CREATE TABLE Purchase (prodName CHAR(30),category VARCHAR(20),
date DATETIME, FOREIGN KEY (prodName, category) REFERENCES Product(name, category)
![Page 29: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/29.jpg)
29
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
![Page 30: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/30.jpg)
30
What happens during updates ?
• SQL has three policies for maintaining referential integrity:
• Reject violating modifications (default)• Cascade: after a delete/update do a
delete/update• Set-null set foreign-key field to NULL
READING ASSIGNEMNT: 7.1.5, 7.1.6
![Page 31: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/31.jpg)
31
Constraints on Attributes and Tuples
• Constraints on attributes:NOT NULL -- obvious meaning...CHECK condition -- any condition !
• Constraints on tuplesCHECK condition
![Page 32: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/32.jpg)
32
CREATE TABLE Purchase (prodName CHAR(30)
CHECK (prodName IN SELECT Product.name FROM Product), date DATETIME NOT NULL)
CREATE TABLE Purchase (prodName CHAR(30)
CHECK (prodName IN SELECT Product.name FROM Product), date DATETIME NOT NULL)
Whatis the difference from
Foreign-Key ?
![Page 33: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/33.jpg)
33
General Assertions
CREATE ASSERTION myAssert CHECK NOT EXISTS(
SELECT Product.nameFROM Product, PurchaseWHERE Product.name = Purchase.prodNameGROUP BY Product.nameHAVING count(*) > 200)
CREATE ASSERTION myAssert CHECK NOT EXISTS(
SELECT Product.nameFROM Product, PurchaseWHERE Product.name = Purchase.prodNameGROUP BY Product.nameHAVING count(*) > 200)
![Page 34: Lecture 06 Data Modeling: E/R Diagrams](https://reader035.vdocuments.mx/reader035/viewer/2022062517/56813d06550346895da6ae6e/html5/thumbnails/34.jpg)
34
Final Comments on Constraints
• Can give them names, and alter later– Read in the book !!!
• We need to understand exactly when they are checked
• We need to understand exactly what actions are taken if they fail