1
CHAPTER 4
THE RELATIONAL MODEL 3 – ADVANCED TOPICS
2
VIEWS
• MS ACCESS• SAVED QUERIES• SQL• VIEWS• QUERY• ANALYZED – RUN• VIEW• ANALYZED ONCE
3
VIEW
• SNAPSHOT OF DATA• REPORTS, CHARTS, FORMS• QUERIES
4
EXAMPLE – PETER’S WORLD
• ITEM CLASS “HW”• PART NUMBER• PART DESCRIPTION• UNITS ON HAND• UNIT PRICE
• VIEW
5
SQL SYNATX
• CREATE VIEW view name (col1, col2,..)• AS• SELECT STATEMENT;• CREATE VIEW Housewares AS• SELECT PartNum, Description, OnHand, Price• FROM Part• WHERE Class = ‘HW’;
6
Housewares View
7
Premiere Products Sample Data
8
CONCEPTUAL DATABASE VS. USER’S VIEW
• NO TEMPORARY TABLE• WINDOW
9
RUNNING QUERIES ON VIEW
• SELECT * • FROM Housewares• WHERE OnHand > 10;
• SELECT PartNum, Description, OnHand, Price• FROM Part• WHERE Class = ‘HW’ AND OnHand > 10;
10
RENAMING COLUMNS
• CREATE VIEW Housewares • (Pnum, Dsc, OnHd, Price) AS• SELECT PartNum, Description, OnHand,
Price• FROM Part• WHERE Class = ‘HW’;
11
VIEW ON JOINED TABLES
• CREATE VIEW SalesCust• (Cnum, Cname, Snum, Slast, Sfirst )• AS• SELECT CustomerNum, Customer.CustomerName, Rep.RepNum• Rep.LastName, Rep.FirstName• FROM Customer• INNER JOIN Rep• ON Customer.RepNum = Rep.RepNum;
12
Sales Cust View
13
ALL CUSTOMERS REPRESENTED BY SALES
REP 20• SELECT Cnum, Cname• FROM SalesCust• WHERE Snum = ’20’;• SELECT CustomerNumber,
Customer.CustomerName FROM Customer• INNER JOIN Rep• ON Customer.RepNum = Rep.RepNum • WHERE RepNum = ’20’;
14
ADVANTAGES OF USING VIEWS
• 1. SIMPLICITY FOR BUSINESS MANAGERS• COMPLEXITY & SIZE DISGUISED• JOIN TRANSPARENT• 2. SECURITY• OTHER DATA NOT ACCESSIBLE’• 3. USER PERSONALIZATION• 4. DATA INDEPENDENCE• DATABASE STRUCTURE MODIFICATION• EXTRA COLUMNS• RELATIONSHIP
15
INDEX
• FASTER ACCESS TO DATA• EXTRA COLUMN• RECORD NUMBER
16
Customer Table with Record Numbers
17
INDEX
• NATURAL INDEX• PRIMARY KEY
18
Index for Customer Table on Customer Number Column
19
NON PRIMARY KEY INDEX
• CRITERIA• CREDIT LIMIT• SALES REP
20
Indexes for Customer Table onCredit Limit and Sale Rep Number Columns
21
SQL to Create Index
CREATE INDEX CustomerNameON Customer (CustomerName);
22
SQL to Delete Index
DROP INDEX RepBal;
23
INDEX
• MULIPLE COLUMNS• FAST ACCESS ON MULIPLE CRITERIA• AUTOMATIC INDEXES BY DBMS• DISADVANTAGES• SPACE• OVERHEAD PROCESSING
24
WHEN TO USE INDEXES?
• TRADE-OFF• ADD AND DROP AT WILL• MS ACCESS• NO• YES – WITH DUPLICATES• YES – NO DUPLICATES
25
DATA RULES AND INTEGRITY RULES
• DATA INTEGRITY CONSTRAINT• ACCURACY• PRICE > 0• SALARY <= $100,000• DATE-HIRED > COMPANY-FOUNDING-
DATE• CONDITION ENFORCED – OPERTAION• CHANGE IN CONDITION• SET OF PREDEFINED OPTIONS• GENDER – MALE, FEMALE,
UNAVAILABLE• CREDIT LIMIT – 5000, 7500, 10000, 15000
26
DATA INTEGRITY CONSTRAINT
• ALTER TABLE Rep• MODIFY LastName NOT NULL;• ALTER TABLE Customer• ADD CreditLimit CHECK IN (5000, 7500,
10000,15000)’
27
ENTITY INTEGRI TY
• COLUMNS• ALLOW NULL• PRIMARY KEY• NULL NOT ALLOWED• RESTRICTION• ENTITY INTEGRITY RULE• COLUMN• PART OF PRIMARY KEY• NOT NULL
28
REFERENTIAL INTEGRITY
• CONSTRAINT• SALES REP NUMBER – SALES REP TABLE• SALES REP NUMBER – CUSTOMER• MATCHING COLUMN• NOT NECESSARILY – SAME NAME• MECHANISM – CONNECTING TABLES• CORRESPONDING COLUMN• MATCHING VALUE• FOREIGN KEY
29
FOREIGN KEY
• COLUMN(S)• PRIMARY KEY• - ANOTHER TABLE
30
REFERENTIAL INTEGRITY• FOREIGN KEY• CORRESPONDING PRIMARY KEY• IMPLEMENTATION – DBMS• - NO PROVISION• - INTERNALLY• - TRIGGERS• MS ACCESS• - AUTOMATIC• - DEFINE RELATIONSHIP• CONNECTING LINE• CASCADE DELETE• CASCADE UPDATE• CONSISTENCY
31
INTEGRITY IN SQL
• NO PROVISION IN ANSI• INTEGRITY ENHANCEMENT FEATURE
32
Integrity in SQL
• Integrity Enhancement Feature (IEF) provides three types of integrity support:– Legal values. CHECK – Primary keys. PRIMARY KEY – Foreign keys. FOREIGN KEY
33
SQL CODE
• CREATE TABLE Customer• ( CustomerNum CHAR(2),• CustomerName CHAR(15),• Street CHAR(15),• City CHAR(15),• State CHAR(2),• ZipCode CHAR(5),• Balance DECIMAL(7,2),• CreditLimit DECIMAL(3,20)• RepNum CHAR(2))• CHECK (CreditLimit IN (5000, 7500, 10000,15000))• PRIMARY KEY (CustomerNum),• FOREIGN KEY (RepNum) REFERENCES SalesRep);
34
CHANGING THE STRUCTURE OF A
RELATIONAL DATABASE• ALTER TABLE table name
ADD COLUMN column name data type (size)
DELETE / DROP COLUMN column name
CHANGE COLUMN column name data type (size);
• DROP TABLE (table name);
35
FOREIGN KEY CONSTRAINT• ALTER TABLE Customer• ADD FOREIGN KEY (RepNum)
REFERENCES Rep;• ALTER TABLE Parttable• ADD (Allfield DECIMAL (4,0));• ALTER TABLE Partable• MODIFY (Allfield CHAR(2));• ALTER TABLE Part• DROP COLUMN Allfield;
36
EXAMPLES
• ALTER TABLE Customer• ADD CustType CHAR (1)• (DEFAULT = ‘R’)• ALTER TABLE Customer• DELETE CustType;• ALTER TABLE Customer• CHANGE COLUMN CustName• TO CHAR (20)• DROP TABLE Part;
37
ORACLE STATEMENTS
• ALTER TABLE Customer• ADD Cust_Type CHAR(1);
• UPDATE Customer• SET Cust_Type = 'R';