Exploring Relation and Object Database Mechanics

A great investment in understanding indexed relational and object database systems. Clear explanations and useful a code base.


If you’re looking for a better understanding of how database systems operate, this book and related code base will entertain and teach you a lot. The more that 900 pages in Java Database Development by Martin Rinehart build on basic text and binary file access, toward relational and object database structures and indexing, developing code and a set of tools for handling many of the needs of a local database application. If you need to understand how database systems work, develop specialized solutions that build on these basic technologies or just leverage some of the code presented here, this is a good investment.

The book is well organized. Chapter 1 lays a foundation by covering where local, single-user database systems fit in this client/server, multi-user, distributed world. Having explained the scope of what he hopes to accomplish, Rinehart sets about building the technology in subsequent chapters. Chapter 2 start by developing a set of classes for viewing data. Chapters 3 and 4 cover text and binary file formats and build a foundation for subsequent development. The author extends a few string and pointer handling functions in Chapter 5 before moving on to databases.

Chapter 6: Using Database Files implements a set of classes that work with relational databases supporting the DBF format. This is the now famous dBase II format first invented at NASA’s JPL in the 1970’s and used across platforms, most widely on PCs in the 80’s. There’s much more in the way of database format variety on the landscape today, but the DBF format is typically supported by most systems, even if sometimes only for database import/export. DBF files are a still reasonable choice in many circumstances, even if the files are expected to grow quite large.

The author’s goals of building a Java database toolkit evolve further through subsequent chapters. Chapters 7 and 8, for example, cover additional user interface elements and Chapter 9 and 10 take a closer look at the JDB classes from more of a usage/configuration point of view. Chapter 11 is interesting for its exploration of object database designs. Combined with Chapter 17, which covers variable length storage, and chapter 22, looking at object oriented database performance, the object database coverage is pretty good.

If performance is a major concern for you, the indexing coverage is of special interest. Chapters 18 to 20 explain the mechanics and develops a set of classes for handling file-based B-tree indexing. Chapter 21 goes on to extend the viewing interface to support index-based scrolling. This mix of database engine and user interface elements permeates the book, without introducing unnecessary coupling between these elements. The resulting code is good, potentially quite useful, and the view classes provide an easy way to explore the effects of changes on the underlying database engine components.

If you want to understand how databases function or need some useful code to implement a specialized solution, this book is likely to be an excellent choice for you. If you’re looking for something that explores JDBC or provides information on using Oracle, Sybase or Access databases, you’ll need to look elsewhere. If you’re like me and have a compelling need to understand how everything works, this is an entertaining, well crafted book that explores a practical domain with useful code and fluid explanations.