New on the database-centric software application development radar this season is dbiScript. With maverick claims of a tenfold productivity increase for custom-designed database apps, this software aims to address traditional issues associated with large teams of developers working inside the relational model.
Where traditionally it can take hundreds of revisions to an entity-relationship diagram before an application even reaches the development stage, dbiScript offers a "relational engine" that accommodates what are allegedly "easy" (so says its makers) application skeleton creation and post-delivery changes.
"We've also put a lot of effort into making dbiScript easy for developers to learn by creating a comprehensive and easy to follow dbiScript Programmer's Reference Guide," says Brien R. Givens, founder and CEO of Cyberaxiom, the company behind the product.
Givens explains that he created the relational engine to simplify the complex process of transitioning an entity-relationship (ER) diagram into a working application. "In fact, I want to make ER diagrams obsolete as I feel they're a huge waste of time and money. I felt the only way to do that was to create a programming language flexible enough to automatically adapt to any relational model. That's what I've delivered with dbiScript."
Instead of spending an inordinate amount of time gathering requirements and producing a specification, a consultant-developer can immediately begin to create an application. The application grows as tables are added to it. dbiScript dynamically adapts the GUI as tables are added. It also dynamically adapts the GUI whenever the developer changes any relationship between tables in the application. The application can literally be developed in front of the end-user(s).
Givens explains that dbiScript runs on IIS and is compatible with Oracle, MySQL, SQL Server, DB2, MS Access, PostgreSQL, and SQL Anywhere. A dbiScript application GUI renders in a browser and delivers a "virtually-identical" user experience in Google Chrome, Microsoft Internet Explorer, Mozilla Firefox, Apple Safari, and Opera.
NOTE: dbiScript is free to download and free for development; one imagines that a pricing plan for commercial development exists in the normal fashion.
"All communication between the front-end and middle layer (.NET DLL) is handled with Ajax. The browser's history never builds up within a dbiScript application. The middle-layer here is capable of running several dbiScript applications simultaneously. For deployed applications (i.e., not in development mode), the middle layer retains information about each application (data structure and cache) and user to speed up requests. If the web server is reset, it seamlessly rebuilds the retained information," said Givens.
dbiScript's "relationally-aware" nature also affects one-to-many rows. One-to-many rows are displayed in the child page frame of the parent row. If a one-to-many row is edited (or created) and its table is the child table of a one-to-many relationship where a child row is required, the parent row cannot be saved until the user creates the required child row (and also any required grandchild row, great-grandchild row, etc.). All this is handled automatically by dbiScript; the developer only needs to specify the relationships.
The "relationally-aware" nature of dbiScript also affects how rows are displayed and edited in the GUI. When a row is selected in the grid, its drilldown fields are displayed beneath the inline row, followed by any rows in a one-to-one relationship with the parent row. When the row is edited (by clicking on any field in the row), all the related one-to-one rows also switch to edit mode.
Any optional one-to-one rows that do not exist in the database will have a blank row created (and properly displayed) for the row. When the row is saved, all related one-to-one rows are also saved. Any existing optional one-to-one row that has been cleared of data (single-click button provided for this) will be deleted from the database. If there are required one-to-one rows that have been cleared of data, an error message will be displayed and the row won't be saved.