Preface . vii
PART I PRELIMINARIES
Chapter 1 Background and Overview
The Third Manifesto
Back to the relational future
Some guiding principles
Some crucial logical differences
Concluding remarks
Exercises
Chapter 2 A Survey of the Relational Model
The running example
Tuples
Relations
Relation variables
Relvars, relations, and predicates
Integrity constraints
Relational operators
Virtual relvars
The relational model
Exercises
Chapter 3 Toward a Theory of Types
Values are typed
Types vs. representations
Scalar vs. nonsealar types
Possible representations
Selectors and THE_ operators
System-defined types
Operators
Type generators
Concluding remarks
Exercises
PART II FORMAL SPECIFICATIONS
Chapter 4 The Third Manifesto
RM Prescriptions
RM Proscriptions
OO Prescriptions
OO Proscriptions
RM Very Strong Suggestions
OO Very Strong Suggestions
Recent Manifesto changes
Chapter 5 Tutorial D
Common constructs
Scalar definitions
Tuple definitions
Relational definitions
S alara operations
Tuple operations
Relational operations
Relations and arrays
Statements
Recent language changes
A remark on syntax
Exercises
PART III INFORMAL DISCUSSIONS AND EXPLANATIONS
Chapter 6 RM Prescriptions
RM Prescription 1: Scalar types
RM Pres ription 2: Scalar values are typed
RM Pres ription 3: Read-only vs. update operators
RM Pres ription 4: Physical vs. possible representations
RM Pres ription 5: Expose possible representations
RM Pres ription 6: Type generator TUPLE
RM Pres ription 7: Type generator RELATION
RM Pres ription 8: Equality
RM Pres ription 9: Tuples
RM Pres ription 10: Relations
RM Pres ription 11: Scalar variables
RM Pres ription 12: Tuple variables
RM Pres ription 13: Relation variables (relvars)
RM Pres ription 14: Kinds of relvars
RM Pres ription 15: Candidate keys
RM Pres ription 16: Databases
RM Pres ription 17: Transa tions
RM Pres ription 18: Relational algebra
RM Pres ription 19: Relvar names, relation selectors, and recursion
RM Pres ription 20: User-defined tuple and relational operators
RM Pres ription 21: Assignments
RM Pres ription 22: Comparisons
RM Pres ription 23: Integrity constraints
RM Pres ription 24: Total database constraints
RM Pres ription 25: Catalog
RM Pres ription 26: Language design
Exercises
Chapter 7 RM Proscriptions
RM Proscription 1: No attribute ordering
RM Proscription 2: No tuple ordering
RM Proscription 3: No duplicate tuples
RM Proscription 4: No nulls
RM Proscription 5: No nullologi at mistakes
RM Proscription 6: No internal-level constru ts
RM Prosciption 7: No tuple-level coperations
RM Proscription 8: No composite attributes
RM Proscription 9: No domain check override
RM Proscription 10: Not SQL
Exercises
Chapter 8 OO Prescriptions
OO Prescription 1: Compile-time type checking
OO Prescription 2: Type inheritance (conditional)
OO Prescription 3: Computational completeness
OO Prescription 4: Explicit transaction boundaries
OO Prescription 5: Nested transactions
OO Prescription 6: Aggregate operators and empty sets
Exercises
Chapter 9 OO Proscriptions
OO Proscription 1: Relvars are not domains
OO Proscription 2: No object IDs
Exercises
Chapter 10 RM Very Strong Suggestions
RM Very Strong Suggestion 1: System keys
RM Very Strong Suggestion 2: Foreign keys
RM Very Strong Suggestion 3: Candidate key inferen e
RM Very Strong Suggestion 4: Transition constraints
RM Very Strong Suggestion 5: Quota queries
RM Very Strong Suggestion 6: Generalized transitive closure
RM Very Strong Suggestion 7: User-defined generi operators
RM Very Strong Suggestion 8: SQL migration
Exercises ..
Chapter 11 OO Very Strong Suggestions
OO Very Strong Suggestion 1: Type inheritance
OO Very Strong Suggestion 2: Types and operators unbundled
OO Very Strong Suggestion 3: Single-level store
Exercises
PART IV SUBTYPING AND INHERITANCE
Chapter 12 Preliminaries
Toward a type inheritance model
Single vs. multiple inheritance
Scalars, tuples, and relations
The running example
Concluding remarks
Exercises
Chapter 13 The Inheritan e Model
IM Prescriptions
Recent inheritan e model changes
Chapter 14 Single Inheritan e with Scalar Types
IM Prescription 1: Types are sets
IM Prescription 2: Subtypes are subsets
IM Prescription 3: "Subtype of" is reflexive
IM Prescription 4: Proper subtypes
IM Prescription 5: "Subtype of" is transitive
IM Prescription 6: Immediate subtypes
IM Prescription 7: Root types disjoint
IM Prescription 8: Scalar values with inheritance
IM Prescription 9: Scalar variables With inheritance
IM Prescription 10: Specialization by constraint
IM Prescription 11: Assignment with inheritance
IM Prescription 12: Bquality etc . with inheritance
IM Prescription 13: Join etc . with inheritanc e
IM Prescription 14: TREAT
IM Prescription 15: Type testing
IM Prescription 16: Read-only operator inheritanc e and value substitutability
IM Prescription 17: Operator signatures
IM Prescription 18: Read-only parameters to update operators
IM Prescription 19: Update operator inheritan e and variable substitutability
IM Prescription 20: Union, dummy, and maximal and minimal types
Exerc ises
Chapter 15 Multiple Inheritance with Scalar Types
An introductory example
Type graphs
Least specifi types unique
Most specifi types unique
Remarks on operator inheritance
Exercises
Chapter 16 Inheritance with Tuple and Relation Types
IM Prescription 21: Tuple/relation subtypes and supertypes
IM Prescription 22: Tuple/relation values with inheritance
IM Prescription 23: Maximal and minimal tuple/relation types
IM Prescription 24: Tuple/relation most spe ifi types
IM Prescription 25: Tuple/relation variables with inheritance
Some implications of IM Prescriptions 21-25
Exercises
APPENDIXES
Appendix A A New Relational Algebra
Motivation and justification
REMOVE, RENAME, and COMPOSE
Treating operators as relations
Formal definitions
How Tutorial D builds on A
Appendix B A Design Dilemma?
Encapsulation
Discussion
Further considerations
Appendix C Types and Units
Type definition
Selectors
THE_ operators
Computational operators
Display operators
Type constraints
A more complex example
Appendix D What Is a Database?
Updating the database
Databases vs. tuples
Appendix E View Updating
Date's appoa h
Assumptions and notation
A loser look at relational assignment
A model of updating
A loser look at constraints
Updating restrictions
Updating intersections
Updating unions
Updating differences
Nested updates
Updating extensions
Updating joins
Updating projections
Some remarks on orthogonality
A remark on multiple assignment
Summary
Darwen's approach
Appendix F A Closer Look at Specialization by Constraint
The 3 out of 4 "rule"
What does inheritance really mean?
Benefits of S by C
What about objects?
Implementation considerations
Appendix G A Closer Look at Structural Inheritance
An introductory example
Tuple types, values, and variables
Subtables and supertables
Scalar types revisited
Structural inheritance with fewer tears
Appendix H A Comparison with SQL
RM Prescriptions
RM Proscriptions
OO Prescriptions
OO Proscriptions
RM Very Strong Suggestions
OO Very Strong Suggestions
IM Pres riptions
Appendix I A Grammar for Tutorial D
Appendix J References and Bibliography
Index