The Technical Manifesto

The project "ApricotDB" is a result of almost three decades of my working experience with the relational databases. I've been a developer of the business logic (Java EE) and a seasonal DB designer.

I always needed a tool which would clearly represent a logical structure of a relational database (the DB's of all major types, i.e. SQL Server, Oracle, MySQL, H2 and so on), plus provide some important functions described below.

An important function of the "Apricot DB" tool is a quick reverse engineering. The tool have been reading the metadata of the target Database into the project local storage. It keeps the entities and relationships between them in the form of ERD (Entity/Relationship diagram). There has to be an option to compare the latest structure of the database with the one stored in the project repository.

The reverse engineering functionality must include the reference data snapshots. Let's try and save the reference data in the project database. The reference data have to be comparable between different snapshots.

The direct DB- design is a second important function of this software. This is a process of design/drawing the new database structure from scratch, or alteration of the existing one. After the database structure is drawn/designed, a basic db- generation script can be created.

A representation of the logical structure includes a full database structure (includes all selected/created tables/views) as well as the logical fragments of the database structure.  if the database is too big (includes too many objects), it is important to be able to create a simplified logical views (don't confuse with the database view). These views represent the excerpts from the full list of the database objects, selected by user. It allows to analyze on the screen or print smaller logical pieces of the target database.

The "Apricot DB" have to store several versions of the same database structure - snapshots. Comparison of DB- structures between different snapshots have to be implemented. A DB- script might be generated for the differences found between snapshots (or the saved snapshot and the current condition of the target database). This script would allow to "align" one side of the comparison to another (let's say we need to compare and fix differences in the environment database structure without loosing any data).

Selection of the related tables: a relationship is chosen, show the related tables on it. A table is chosen, show all related tables and the relationships. Show relationships (if any) between two tables using the multi chain paths - whichever tables and relationships lead from one table to another.

Export database structure into the Excel sheet.

Generate "quick joins"- SQL- scripts to select from related/linked tables for selected fields.