Type inheritance is that phenomenon according to which we can say, for example, that every square is also a rectangle, and so properties that apply to rectangles in general apply to squares in particular. In other words, squares are a subtype of rectangles, and rectangles are a supertype of squares. Recognizing and acting upon such subtype / supertype relationships provides numerous benefits: Certainly it can help in data modeling, and it can also provide for code reuse in applications. For these reasons, many languages, including the standard database language SQL, have long supported such relationships. However, there doesn’t seem to be any consensus in the community at large on a formal, rigorous, and abstract model of inheritance. This book proposes such a model, one that enjoys several advantages over other approaches, not the least of which it is that it’s fully compatible with the well known relational model of data.
Topics the model covers include:
- Both single and multiple inheritance
- Scalar, tuple, and relation inheritance
- Type lattices and union and intersection types
- Polymorphism and substitutability
- Compile time and run time binding
All of these topics are described in detail in the book, with numerous illustrative examples, exercises, and answers. The book also discusses several alternative approaches. In particular, it includes a detailed discussion and analysis of inheritance as supported in the SQL standard.
Table of Contents
PART I PRELIMINARIES
Chapter 1 Background
Chapter 2 Types without Inheritance
Chapter 3 Types with Inheritance
Chapter 4 The Inheritance Model
PART II SCALAR TYPES, SINGLE INHERITANCE
Chapter 5 Basic Definitions
Chapter 6 Scalar Values with Inheritance
Chapter 7 Scalar Variables with Inheritance
Chapter 8 Specialization by Constraint etc.
Chapter 9 Equality Comparisons etc.
Chapter 10 Treating and Type Testing
Chapter 11 Substitutability
Chapter 12 Union and Dummy Types
Chapter 13 Interlude: The S by C Controversy
PART III SCALAR TYPES, MULTIPLE INHERITANCE
Chapter 14 An Overview of Multiple Inheritance
Chapter 15 IM Prescriptions 8 - 9 Revisited
Chapter 16 IM Prescriptions 10 - 20 Revisited
PART IV TUPLE AND RELATION INHERITANCE
Chapter 17 Tuple / Relation Values with Inheritance
Chapter 18 Tuple / Relation Values with Inheritance (cont.)
Chapter 19 Tuple / Relation Maximal and Minimal Types etc.
Chapter 20 Tuple / Relation Variables with Inheritance
PART V OTHER APPROACHES
Chapter 21 Structural Inheritance
Chapter 22 Inheritance in SQL
Appendix A Encapsulation Is a Red Herring
Appendix B Persistence Not Orthogonal to Type
Appendix C Glossary of Terms