The Backend Database

Because traditional relationship databases do not hold information that is critical for BOND to work, like how objects relate to each other, BOND requires an application object orientated server.

At the moment BOND talks directly to PostgreSQL. In the future support for GnomeDB will probably be added. Within PostgreSQL you can create views to your tables that describe the fields you want on a window form. This is then picked up by BOND and translated into information to work out which widgets are data-aware and what their data source is. Views also need to be created in PostgreSQL to define the relationships between objects. BOND will only work with PostgreSQL version 7.0 and higher; future supported databases will have to be similarly compatible.

These notes are in regard to bond 0.4.x

When I design database applications I do it in two parts: I design the database backend of how the objects relate to each other and what is contained in each of those class objects; then I design the user interface of how the forms interact and the user processes flow, using tools like Glade or Borland Builder.

Traditionally after this is done I do all the coding to make the forms I have developed work with the database backend and implement such things as searching, drop down boxes, loading of forms, etc.

The central idea behind BOND is that we can skip that development phase and just design the front and back end and let BOND do its magic stuff. Let it work out the those nasty relationships, handle that data retrieval, and build the drop down boxes etc. With BOND your source code files should be relatively small.


Bond 2.0.0 design notes

Simply because computers are stupid and the whole idea of unix is that things are done well by lots of small tasks I split bond again into 2 different application (1 yet to be started). One applications job was to build a xml file defining how everything fits together after it querys the database and reads the glade xml files. Another application takes that bond xml file and generates a user interface based on that.