Preface |
|
xi | |
Acknowledgements |
|
xv | |
|
|
1 | (16) |
|
1.1 Brief History of Database Technology |
|
|
2 | (2) |
|
1.2 The Relational Approach |
|
|
4 | (6) |
|
1.2.1 The Relational Application Program Interface |
|
|
8 | (2) |
|
1.3 Data-Intensive Application Domains |
|
|
10 | (6) |
|
1.3.1 Traditional Data-Intensive Applications |
|
|
11 | (1) |
|
1.3.2 New Data-Intensive Applications |
|
|
11 | (5) |
|
1.4 Requirements of New Data-Intensive Applications |
|
|
16 | (1) |
|
2 Overview Of Recent Evolution In Database Technology |
|
|
17 | (97) |
|
|
17 | (2) |
|
2.2 Functional Data Models |
|
|
19 | (1) |
|
|
20 | (2) |
|
2.4 Extended Relational Databases |
|
|
22 | (22) |
|
2.4.1 The Extended Relational Paradigm |
|
|
23 | (5) |
|
2.4.2 Query Languages for the Nested Relational Model |
|
|
28 | (1) |
|
2.4.3 Nested Relational Algebra |
|
|
29 | (7) |
|
|
36 | (2) |
|
2.4.5 Storage Structures and Optimization Techniques |
|
|
38 | (4) |
|
2.4.6 Extended Relational Languages and Systems |
|
|
42 | (2) |
|
|
44 | (27) |
|
2.5.1 The Deductive Paradigm |
|
|
45 | (4) |
|
|
49 | (4) |
|
2.5.3 Mapping Datalog into Relational Algebra |
|
|
53 | (2) |
|
2.5.4 Computing and Optimizing Datalog Programs |
|
|
55 | (2) |
|
2.5.5 Extending Pure Datalog |
|
|
57 | (5) |
|
2.5.6 Architectural Solutions: Coupling and Integration |
|
|
62 | (6) |
|
2.5.7 Deductive Database Prototypes |
|
|
68 | (2) |
|
|
70 | (1) |
|
2.6 Object-Oriented Databases |
|
|
71 | (28) |
|
2.6.1 Essential Concepts of the Database Object-Oriented Paradigm |
|
|
73 | (9) |
|
2.6.2 Extended Object-Oriented Database Facilities |
|
|
82 | (10) |
|
2.6.3 Object-Oriented Database Systems |
|
|
92 | (4) |
|
2.6.4 Standardization of Object-Oriented Databases |
|
|
96 | (2) |
|
|
98 | (1) |
|
|
99 | (15) |
|
2.7.1 The Active Paradigm |
|
|
101 | (2) |
|
2.7.2 Executing Active Rules |
|
|
103 | (3) |
|
2.7.3 Implementing an Active Database System |
|
|
106 | (3) |
|
2.7.4 Developing an Active Database Application |
|
|
109 | (1) |
|
2.7.5 Active Database Systems and Prototypes |
|
|
110 | (2) |
|
|
112 | (2) |
|
3 Theory Of The Nested Relational Model |
|
|
114 | (38) |
|
3.1 The Relational Data Model |
|
|
114 | (2) |
|
|
116 | (4) |
|
|
117 | (1) |
|
|
117 | (1) |
|
|
117 | (1) |
|
|
118 | (1) |
|
3.2.5 Set Theoretic Operations |
|
|
118 | (1) |
|
|
118 | (2) |
|
|
120 | (3) |
|
3.4 Nested Relational Data Model |
|
|
123 | (3) |
|
3.5 Extended Relational Algebra |
|
|
126 | (10) |
|
3.5.1 Extension of Set Operations |
|
|
126 | (1) |
|
|
126 | (2) |
|
3.5.3 Operators Requiring a Predicate |
|
|
128 | (1) |
|
3.5.4 Extended Projection, Set Theoretic Operations, and Selection |
|
|
129 | (5) |
|
|
134 | (2) |
|
3.6 Equivalence of Extended Relational Algebra Expressions |
|
|
136 | (4) |
|
3.6.1 A Minimal Set of Operators for ERA |
|
|
136 | (1) |
|
3.6.2 Equivalence of Expressions in ERA |
|
|
136 | (3) |
|
3.6.3 Distributivity of Binary Operators in Nest and Unnest |
|
|
139 | (1) |
|
3.7 Extended Relational Calculus |
|
|
140 | (1) |
|
3.8 Expressive Power: Comparing Algebra and Calculus |
|
|
141 | (3) |
|
3.9 Taxonomy of Nested Relations |
|
|
144 | (4) |
|
3.9.1 Nested flat relations |
|
|
145 | (1) |
|
3.9.2 Permutable nested relations |
|
|
146 | (1) |
|
3.9.3 Partitioned Normal Form Relations |
|
|
147 | (1) |
|
3.10 Further Extensions to the Nested Relational Model |
|
|
148 | (4) |
|
3.10.1 Further Extensions to the Data Model |
|
|
148 | (3) |
|
3.10.2 Further Extensions to Relational Algebra |
|
|
151 | (1) |
|
4 Algres, An Extended Relational Database Programming Language |
|
|
152 | (53) |
|
|
152 | (49) |
|
4.1.1 The University Support System |
|
|
153 | (26) |
|
4.1.2 The Industrial Map System |
|
|
179 | (8) |
|
4.1.3 Other Relevant Features of Algres |
|
|
187 | (14) |
|
4.2 Rationale of Algres Design |
|
|
201 | (4) |
|
|
205 | (89) |
|
5.1 Constants, Identifiers, and Objects |
|
|
205 | (5) |
|
|
205 | (1) |
|
|
206 | (1) |
|
|
207 | (1) |
|
|
207 | (1) |
|
5.1.5 Definition of Objects |
|
|
207 | (3) |
|
5.2 Groups and Persistency |
|
|
210 | (7) |
|
5.2.1 Creating Groups and Persistent Objects |
|
|
212 | (1) |
|
5.2.2 Virtual Group and Transactions |
|
|
212 | (2) |
|
5.2.3 Destroying Persistent Objects and Groups |
|
|
214 | (1) |
|
5.2.4 Manipulating Persistent Objects Using Transactions |
|
|
214 | (3) |
|
|
217 | (40) |
|
|
217 | (4) |
|
5.3.2 Classic Unary Operations |
|
|
221 | (8) |
|
5.3.3 Quantifier Operations |
|
|
229 | (2) |
|
5.3.4 Operations of Schema Manipulation |
|
|
231 | (1) |
|
5.3.5 Classic binary operations |
|
|
232 | (3) |
|
5.3.6 Type Transformation |
|
|
235 | (3) |
|
|
238 | (5) |
|
5.3.8 Conditional Expression |
|
|
243 | (1) |
|
5.3.9 Nesting and Unnesting |
|
|
244 | (5) |
|
5.3.10 Closure (Fixed Point Operation) |
|
|
249 | (2) |
|
|
251 | (1) |
|
5.3.12 Aggregate Functions |
|
|
252 | (3) |
|
5.3.13 Functional Expressions |
|
|
255 | (2) |
|
|
257 | (1) |
|
5.4 The Quantification Mechanism |
|
|
257 | (10) |
|
5.4.1 Algres as Functional Language |
|
|
257 | (1) |
|
|
258 | (2) |
|
5.4.3 The Consistency Rules |
|
|
260 | (2) |
|
|
262 | (4) |
|
5.4.5 The external Quantification |
|
|
266 | (1) |
|
|
267 | (5) |
|
|
268 | (2) |
|
|
270 | (2) |
|
5.6 Control structures and blocks |
|
|
272 | (3) |
|
|
275 | (6) |
|
|
277 | (1) |
|
|
278 | (3) |
|
|
281 | (5) |
|
|
286 | (6) |
|
|
287 | (1) |
|
|
287 | (1) |
|
|
288 | (1) |
|
|
288 | (1) |
|
|
289 | (1) |
|
|
289 | (1) |
|
|
290 | (1) |
|
|
290 | (2) |
|
|
292 | (2) |
|
6 Alice, The Application Program Interface Of Algres |
|
|
294 | (28) |
|
|
294 | (10) |
|
6.2 Guidelines for Writing Alice Programs |
|
|
304 | (18) |
|
6.2.1 The Transparency Principle |
|
|
304 | (1) |
|
6.2.2 The Homogeneity Principle |
|
|
305 | (1) |
|
6.2.3 The Program Instance Principle |
|
|
306 | (2) |
|
6.2.4 The Virtual Interpreter Principle |
|
|
308 | (3) |
|
6.2.5 The Constant Principle |
|
|
311 | (1) |
|
6.2.6 The Identifier Principle |
|
|
312 | (1) |
|
6.2.7 The Algebraic Principle |
|
|
313 | (3) |
|
6.2.8 The Functional Principle |
|
|
316 | (2) |
|
6.2.9 The Full Parameterization Principle |
|
|
318 | (1) |
|
6.2.10 The Algres to C Data Mapping Principle |
|
|
318 | (2) |
|
6.2.11 Flexibility of GETOBJ |
|
|
320 | (2) |
|
6.2.12 The C to Algres Data Mapping Principle |
|
|
322 | (1) |
|
|
322 | (9) |
|
6.3.1 Summary of Guidelines |
|
|
323 | (1) |
|
|
324 | (1) |
|
6.3.3 Virtual Interpreter Operators |
|
|
324 | (2) |
|
6.3.4 Full Parameterization Operator |
|
|
326 | (1) |
|
6.3.5 Algres to C Mapping Operator |
|
|
326 | (3) |
|
6.3.6 C to Algres Mapping Operator |
|
|
329 | (2) |
|
7 Algraph, The Graphical Interface Of Algres |
|
|
331 | (25) |
|
|
331 | (5) |
|
7.1.1 Communication Panel |
|
|
332 | (2) |
|
|
334 | (1) |
|
|
335 | (1) |
|
|
336 | (5) |
|
|
336 | (1) |
|
|
337 | (1) |
|
|
337 | (4) |
|
7.3 Motif Interface for Input-Output |
|
|
341 | (4) |
|
|
342 | (1) |
|
|
343 | (1) |
|
7.3.3 Filtering Instance Files |
|
|
343 | (2) |
|
|
345 | (11) |
|
|
345 | (1) |
|
|
345 | (1) |
|
|
345 | (11) |
|
APPENDIX A SYNTAX OF ALGRES |
|
|
356 | (5) |
|
APPENDIX B SYNTAX OF ALICE OPERATORS |
|
|
361 | (2) |
|
APPENDIX C ALGRES AND ALICE KEYWORDS |
|
|
363 | (3) |
|
APPENDIX D INSTALLING AND USING THE ALGRES SYSTEM |
|
|
366 | (7) |
|
Getting a Free Copy of the Algres System |
|
|
366 | (1) |
|
|
366 | (2) |
|
|
368 | (1) |
|
Compiling and Executing Algres Programs |
|
|
369 | (1) |
|
Compiling and Executing Alice Applications |
|
|
370 | (1) |
|
|
371 | (2) |
Bibliography |
|
373 | (18) |
Index |
|
391 | |