chapter 10 application development with views. mcgraw-hill/irwin © 2004 the mcgraw-hill companies,...
TRANSCRIPT
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Outline Outline
BackgroundCreating views and using viewsProcessing queries that reference viewsUpdatable viewsData requirements for hierarchical formsData requirements for reports
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
What is a View?What is a View?
Derived tableBehaves like a base table (virtual)Stored query
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
View AdvantagesView Advantages
Reduce impact of database definition changes
Simplify database usageUnit of database securityCan be a performance penalty on complex
views
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Three Schema ArchitectureThree Schema Architecture
View 1 View 2 View n
ConceptualSchema
InternalSchema
ExternalLevel
ConceptualLevel
InternalLevel
External toConceptualMappings
Conceptualto InternalMappings
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
View Definition ExampleView Definition ExampleExample 1: Create a view consisting of offerings taught by faculty in the MS department.
CREATE VIEW MS_View AS SELECT OfferNo, Course.CourseNo, CrsUnits, OffTerm, OffYear, Offering.FacSSN, FacFirstName, FacLastName, OffTime, OffDays FROM Faculty, Course, Offering WHERE FacDept = 'MS' AND Faculty.FacSSN = Offering.FacSSN AND Offering.CourseNo = Course.CourseNo
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Column RenamingColumn RenamingExample 2: create a view containing offering data and the number of enrolled students.
CREATE VIEW Enrollment_View ( OfferNo, CourseNo, Term, Year, Instructor, NumStudents ) AS SELECT Offering.OfferNo, CourseNo, OffTerm, OffYear, FacLastName, COUNT(*) FROM Offering, Faculty, Enrollment WHERE Offering.FacSSN = Faculty.FacSSN AND Offering.OfferNo = Enrollment.OfferNo GROUP BY Offering.OfferNo, CourseNo, OffTerm, OffYear, FacFirstName, FacLastName
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Using ViewsUsing ViewsExample 3 SELECT OfferNo, CourseNo, FacFirstName, FacLastName, OffTime, OffDays FROM MS_View WHERE OffTerm = 'SPRING' AND OffYear = 2003
Example 4 SELECT OfferNo, Instructor, NumStudents, CrsUnits FROM Enrollment_View, Course WHERE Enrollment_View.CourseNo = Course.CourseNo AND NumStudents < 5
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Processing View QueriesProcessing View Queries
Materialization– Execute two queries
– Large overhead
– Preferred in static environments Modification
– Substitute view definition for view references
– Execute one query
– Incurs little overhead
– Not possible for all view queries
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Modification ExampleModification ExampleExample 5: Query using a view
SELECT OfferNo, CourseNo, FacLastName
FROM MS_View
WHERE OffYear = 2003
Example 6: Modified query
SELECT OfferNo, Course.CourseNo, FacLastName
FROM Faculty, Course, Offering
WHERE FacDept = 'MS' AND OffYear = 2003
AND Faculty.FacSSN = Offering.FacSSN
AND Offering.CourseNo = Course.CourseNo
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Single Table Updatable ViewsSingle Table Updatable Views
Support modification statementsRules for single table updatable views
– 1-1 correspondence between view rows and base table rows
– View includes PK of base table– View includes all required columns– View definition does not have GROUP BY or
DISTINCT
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Updatable View ExamplesUpdatable View Examples
Example 7: Single table updatable view CREATE VIEW Fac_View1 AS SELECT FacSSN, FacFirstName, FacLastName, FacRank, FacSalary, FacDept, FacCity, FacState, FacZipCode FROM Faculty WHERE FacDept = 'MS'
Example 8: View update UPDATE Fac_View1 SET FacSalary = FacSalary * 1.1 WHERE FacRank = 'ASST'
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
View Update with Side EffectsView Update with Side Effects
• Modify column used in the WHERE condition of a view definition
• Use WITH CHECK OPTION clause to prevent
Example 9: Change the department of rows in the Fac_View1 UPDATE Fac_View1 SET FacDept = 'FIN' WHERE FacSalary > 100000
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Multiple Table Updatable ViewsMultiple Table Updatable Views
No industry standardOnly recently supportedMore complex rules than single table
updatable viewsAccess supports flexible view updates for
multi-table viewsOracle rules in Appendix 10.B
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
1-M Updatable Queries1-M Updatable Queries Associated with 1-M relationships Join column of the parent table: primary key or
unique Determine updatable tables Child table updatable
– Primary key – Foreign key: must include in the query result– Required columns of the child table
Include primary key and required columns to support insert operations on the parent table
Use join operator style
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
1-M Updatable Query Example1-M Updatable Query Example
Example 10: Save as Course_Offering_View1 SELECT Course.CourseNo, CrsDesc, CrsUnits, Offering.OfferNo, OffTerm, OffYear, Offering.CourseNo, OffLocation, OffTime, FacSSN, OffDays FROM Course INNER JOIN Offering ON Course.CourseNo = Offering.CourseNo
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Usage of a 1-M Updatable QueryUsage of a 1-M Updatable Query
Example 11: Insert a row into the Course_Offering_View1.
INSERT INTO Course_Offering_View1 ( OfferNo, Offering.CourseNo, OffTerm, OffYear, OffLocation, OffTime, FacSSN, OffDays ) VALUES ( 7799, 'IS480', 'Spring', 2003, 'BLM201', #1:30PM#, '098-76-5432', 'MW' )
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Extensions to Multiple TablesExtensions to Multiple Tables
Apply rules to each 1-M relationshipFK of each child table in the query resultUsually only the lowest level child table is
updatableExamples
– Course-Offering, Faculty-Offering– Offering-Enrollment, Faculty-Offering
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Hierarchical FormsHierarchical Forms
Formatted window for data entry and displayMain formSubformProvide attractive interface for a 1-M
relationshipSpecification of data requirements is important
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Revised University DatabaseRevised University Database
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Example Hierarchical FormExample Hierarchical Form
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Analysis of Data RequirementsAnalysis of Data Requirements
Identify the 1-M relationshipIdentify the linking fieldsDetermine other tables in the main form and
the subformDetermine updatable tablesWrite queries for the main form and subform
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Data Requirements for the Data Requirements for the Registration FormRegistration Form1-M relationship: Registration-EnrollmentLinking fields: Registration.RegNo,
Enrollment.RegNoOther tables
– Main form: Student– Subform: Offering, Course, Faculty
Updatable tables: Registration, Enrollment
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Registration Main Form QueryRegistration Main Form Query
SELECT RegNo, RegTerm, RegYear, RegDate, Registration.StdSSN, Registration.StdSSN, RegStatus, StdFirstName, StdLastName, StdClass, StdCity, StdState FROM Registration INNER JOIN Student ON Registration.StdSSN = Student.StdSSN
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Registration Subform QueryRegistration Subform QuerySELECT RegNo, Enrollment.OfferNo, OffTime, Offering.CourseNo, OffLocation, OffTerm, OffYear, Offering.FacSSN, FacFirstName, FacLastName,
CrsDesc, CrsUnits FROM ( ( Enrollment INNER JOIN Offering ON Enrollment.OfferNo = Offering.OfferNo ) INNER JOIN Course ON Offering.CourseNo = Course.CourseNo ) LEFT JOIN Faculty ON Faculty.FacSSN = Offering.FacSSN
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Faculty Assignment FormFaculty Assignment Form
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Data Requirements for the Data Requirements for the Faculty Assignment FormFaculty Assignment Form
Step 1: Faculty (parent table), Offering (child table)
Step 2: Faculty.FacSSN, Offering.FacSSNStep 3: Course table in the subform Step 4: update Offering.FacSSN
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Faculty Assignment QueriesFaculty Assignment Queries
Main formSELECT FacSSN, FacFirstName, FacLastName, FacDept FROM Faculty
SubformSELECT OfferNo, Offering.CourseNo, FacSSN, OffTime, OffDays, OffLocation, CrsUnits FROM Offering INNER JOIN COURSE ON Offering.CourseNo = Course.CourseNo
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Hierarchical ReportsHierarchical Reports
Stylized presentation of data appropriate to a selected audience
Use nesting (or indentation) to provide a visually appealing layout
Vocabulary– Group: sorted field; usually indented– Detail line: innermost field
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Example Hierarchical ReportExample Hierarchical Report
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Summary Data in Detail LinesSummary Data in Detail Lines
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Query Formulation Skills for Query Formulation Skills for ReportsReports
Less difficult than skills for formsInspect report
– Match fields in the report to database columns– Determine the needed tables– Identify the join conditions
Determine the level of detail– Row data versus summary data– Query should provide data for the detail lines
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
Faculty Work Load QueryFaculty Work Load QuerySELECT Offering.OfferNo, FacFirstName, FacLastName, FacDept, OffTerm, CrsUnits, OffLimit, Count(Enrollment.RegNo) AS NumStds, NumStds/Offlimit AS PercentFull, (NumStds/Offlimit) < 0.25 AS LowEnrollment FROM Faculty, Offering, Course, Enrollment WHERE Faculty.FacSSN = Offering.FacSSN AND Course.CourseNo = Offering.CourseNo AND Offering.OfferNo = Enrollment.OfferNo AND ( ( Offering.OffTerm = 'Fall' AND Offering.OffYear = 2002 ) OR ( Offering.OffTerm = 'Winter' AND Offering.OffYear = 2003 ) OR ( Offering.OffTerm = 'Spring' AND Offering.OffYear = 2003 ) ) GROUP BY Offering.OfferNo, FacFirstName, FacLastName, FacDept, OffTerm, CrsUnits, OffLimit
McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved.
SummarySummary
Significant benefits with a modest performance penalty
Foundation of application data requirements
Updatable views important for hierarchical forms
Carefully analyze data requirements before developing forms and reports