Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lecture 06: SQL Monday, October 11, 2004.

Similar presentations


Presentation on theme: "Lecture 06: SQL Monday, October 11, 2004."— Presentation transcript:

1 Lecture 06: SQL Monday, October 11, 2004

2 Outline Two Examples Views (6.7) Constraints (Chapter 7)
We begin E/R diagrams (Chapter 2)

3 Two Examples Store(sid, sname) Product(pid, pname, price, sid)
Find all stores that sell only products with price > 100 (Equivalent formulation: find all stores s.t. all their products have price > 100)

4 SELECT Store.name FROM Store, Product WHERE Store.sid = Product.sid GROUP BY Store.sid, Store.name HAVING 100 < min(Product.price) SELECT Store.name FROM Store WHERE < ALL (SELECT Product.price FROM product WHERE Store.sid = Product.sid) Your pick… SELECT Store.name FROM Store WHERE Store.sid NOT IN (SELECT Product.sid FROM Product WHERE Product.price <= 100)

5 Two Examples Store(sid, sname) Product(pid, pname, price, sid)
For each store, find the Product ID of its most expensive product

6 Two Examples This is easy but doesn’t do what we want:
SELECT Store.name, max(Product.price) FROM Store, Product WHERE Store.sid = Product.sid GROUP BY Store.sid Better: SELECT Store.name, x.pid FROM Store, Product x WHERE Store.sid = x.sid and x.price >= ALL (SELECT y.price FROM Product y WHERE Store.sid = y.sid) But may return multiple pids

7 Two Examples Finally, choose some pid arbitrarily, if there are many with highest price: SELECT Store.name, max(x.pid) FROM Store, Product x WHERE Store.sid = x.sid and x.price >= ALL (SELECT y.price FROM Product y WHERE Store.sid = y.sid) GROUP BY Store.name

8 Defining Views Views 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”

9 Example Person(name, city) Purchase(buyer, seller, product, store)
Product(name, maker, category) We have a new virtual table: Seattle-view(buyer, seller, product, store) CREATE VIEW Seattle-view AS SELECT buyer, seller, product, store FROM Person, Purchase WHERE Person.city = “Seattle” AND Person.name = Purchase.buyer

10 We can later use the view:
SELECT name, store FROM Seattle-view, Product WHERE Seattle-view.product = Product.name AND Product.category = “shoes”

11 What Happens When We Query a View ?
SELECT name, Seattle-view.store FROM Seattle-view, Product WHERE Seattle-view.product = Product.name AND Product.category = “shoes” SELECT name, Purchase.store FROM Person, Purchase, Product WHERE Person.city = “Seattle” AND Person.name = Purchase.buyer AND Purchase.poduct = Product.name AND Product.category = “shoes”

12 Types of Views Virtual views: Materialized 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

13 Updating Views How can I insert a tuple into a table that doesn’t exist? Employee(ssn, name, department, project, salary) CREATE VIEW Developers AS SELECT name, project FROM Employee WHERE department = “Development” If we make the following insertion: INSERT INTO Developers VALUES(“Joe”, “Optimizer”) INSERT INTO Employee(ssn, name, department, project, salary) VALUES(NULL, “Joe”, NULL, “Optimizer”, NULL) It becomes:

14 Non-Updatable Views Person(name, city)
Purchase(buyer, seller, product, store) CREATE VIEW City-Store AS SELECT Person.city, Purchase.store FROM Person, Purchase WHERE Person.name = Purchase.buyer How can we add the following tuple to the view? (“Seattle”, “Nine West”) We don’t know the name of the person who made the purchase; cannot set to NULL (why ?)

15 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

16 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

17 Keys OR: CREATE TABLE Product ( name CHAR(30) PRIMARY KEY,
category VARCHAR(20)) OR: CREATE TABLE Product ( name CHAR(30), category VARCHAR(20) PRIMARY KEY (name))

18 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 30 40

19 Other Keys 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

20 Foreign Key Constraints
Referential integrity constraints 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

21 Product Purchase Name Category Gizmo gadget Camera Photo OneClick
ProdName Store Gizmo Wiz Camera Ritz

22 Foreign Key Constraints
(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)

23 What happens during updates ?
Types of updates: In Purchase: insert/update In Product: delete/update Product Purchase Name Category Gizmo gadget Camera Photo OneClick ProdName Store Gizmo Wiz Camera Ritz

24 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

25 Constraints on Attributes and Tuples
Constraints on attributes: NOT NULL -- obvious meaning... CHECK condition -- any condition ! Constraints on tuples CHECK condition

26 What is the difference from Foreign-Key ?
CREATE TABLE Purchase ( prodName CHAR(30) CHECK (prodName IN SELECT Product.name FROM Product), date DATETIME NOT NULL)

27 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)

28 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

29 Database Design Why do we need it? Consider issues such as:
Agree on structure of the database before deciding on a particular implementation. Consider issues such as: What entities to model How entities are related What constraints exist in the domain How to achieve good designs

30 Database Design Formalisms
1. Object Definition Language (ODL): Closer in spirit to object-oriented models Will not cover in class 2. Entity/Relationship model (E/R): More relational in nature. Very widely used Both can be translated (semi-automatically) to relational schemas ODL to OO-schema: direct transformation (C++ or Smalltalk based system).

31 Entity / Relationship Diagrams
Objects entities Classes entity sets Attributes are like in ODL. Relationships: like in ODL except - first class citizens (not associated with classes) - not necessarily binary Product address buys

32 name category name price makes Company Product stockprice buys employs Person name ssn address

33 Keys in E/R Diagrams Every entity set must have a key name category
price Product

34 What is a Relation ? A mathematical definition:
if A, B are sets, then a relation R is a subset of A  B A={1,2,3}, B={a,b,c,d}, A  B = {(1,a),(1,b), . . ., (3,d)} R = {(1,a), (1,c), (3,b)} - makes is a subset of Product  Company: 1 2 3 a b c d A= B= makes Company Product

35 Multiplicity of E/R Relations
one-one: many-one many-many 1 2 3 a b c d 1 2 3 a b c d 1 2 3 a b c d

36 name category name price makes Company Product stockprice What does this say ? buys employs Person name ssn address

37 Multi-way Relationships
How do we model a purchase relationship between buyers, products and stores? Purchase Product Person Store Can still model as a mathematical set (how ?)

38 Arrows in Multiway Relationships
Q: what does the arrow mean ? A: if I know the store, person, invoice, I know the movie too Rental VideoStore Person Movie Invoice

39 Arrows in Multiway Relationships
Q: what do these arrow mean ? A: store, person, invoice determines movie and store, invoice, movie determines person Invoice VideoStore Rental Movie Person

40 Arrows in Multiway Relationships
Q: how do I say: “invoice determines store” ? A: no good way; best approximation: Q: Why is this incomplete ? Rental VideoStore Person Movie Invoice


Download ppt "Lecture 06: SQL Monday, October 11, 2004."

Similar presentations


Ads by Google