Database Design

We are very comfortable dealing with data in both large and small amounts, mixing and matching different systems and manipulating information in whatever fashion is necessary to satisfy the business need. Whether you need an end-to-end data-critical application, or a one time migration to a new system, you can call us to help you out. Below is a list of database systems we have worked with in various capacities.

Paradox

In the late 1980s, we setup our first database for a cleaning supplies business and started learning how to build forms for simple data entry, provide customized reports, and manage the flow of a business's most valuable asset: information. That database was Paradox (now known as Paradox for DOS), with built-in scripting, form-building tools, tutorials, and easy-to-use reports. This database was ahead of it's time as far as ease of use and power and became one of the popular ones used with Delphi in the early Windows days. It did well as a desktop database for local applications, but lacked some of the transactional robustness provided by client/server engines.

FoxPro

In the 90's, we did some work for an educational company that had an information management system built in FoxPro for DOS. We helped them port it to FoxPro for Windows and FoxPro for Mac. Later, we also worked on a larger system used in a realtor office. FoxPro is a good another good desktop-based database program for getting screens and reports up quickly and organizing local information, and while it still exists, has been superseded by more powerful database engines which have dropped in price or are free.

InterBase/Firebird

In 2000, Borland (which formally switched it's name to Inprise for a few years), then publishers of Delphi, C++Builder, and a few database products, decided to make InterBase 6, open source. InterBase is a very solid database engine that has been around for a while. With InterBase open source, Delphi developers could get into the large client/server database market inexpensively. Immediately, there was a code fork by some of the original developers of InterBase who named it Firebird SQL. InterBase is once again proprietary, but Firebird has remained open source. Both products have had many improvements since then and are now two distinct products. (It's interesting to note, however, that a lot of Delphi components and third-party tools still support both.) I have done quite a bit of work with Firebird, including an Apache web module on Linux written in Free Pascal, one of the more interesting projects I've worked on.

DBISAM/ElevateDB

Elevate Software has been supporting Delphi (and now PHP, JavaScript, and .NET as well) with embedded database products for many years. In the late 90's, we wrote an application for a brokerage company to completely manage all aspects of their customer relations, sales, invoicing, and shipping business. It was based on Elevate's DBISAM and is still in use today. (One of the leading benefits of using DBISAM over other database products that came free with Delphi was not having to use the BDE (Borland Database Engine) with it's overhead and problems.) When we started another business management application for a steel parts import company in 2005, we again started on DBISAM, but soon moved up to a newer product by the same company, ElevateDB. This product has some very compelling features such as the ability to easily switch between a local desktop-type database and a client/server engine running on a network server or even in the cloud. It also features encryption and compression, stored procedures, triggers, and of course, transaction support.

MySQL

The most ubiquitous database system for web sites is MySQL. We've built several web sites either in PHP using MySQL directly, or PHP-frameworks that use it as part of their underlying database. We've ported tables, built complex queries, synchronized online shopping carts with desktop point-of-sale systems, and migrated whole databases from one server to another.

SQL Server

Over the years, SQL Server has become much more prominent and we've worked with both small databases in SQL Server Express and large company-wide systems with multiple DBAs managing the infrastructure. While we leave heavy-duty administration and high-level optimization to experts that eat and sleep in the data center, we are quite comfortable setting setting up foreign-key relationships, drawing complex diagrams, and writing stored procedures in nearly any SQL dialect. There seem to be more tools for SQL Server than other databases, so sometimes we start our design for a new application in SQL Server, then port it to a smaller niche product as the design solidifies and we start to develop.

Oracle

As our involvement with Retail Pro 9 over the last decade has increased, we have also dealt with the nuances of Oracle's database engine, calling stored procedures and running complex queries to pull out data for integration projects.

SQLite

More recently, as we are developing tablet and phone applications that also need to store data, SQLite is becoming the logical choice because it is small and nimble, yet still has many features formerly found only in larger systems. The SQLite libraries are open-source and available on virtually every computing device today; you'd have a difficult time finding a language that doesn't interface with it. With previous experience in a plethora of database languages and tools, getting familiar with this simple yet capable database has proven to be quite painless.

Other

There are other databases we've naturally had experience with including dBASE and Microsoft Access, but not every set of data we deal with comes in a nice database. The bulk of our experience is integrating disparate systems. Often this involves mapping fields from one table structure to another through a custom application that talks to both ends. Sometimes it involves talking to a web service. Sometimes we get spreadsheets and need to parse the rows and columns from the XML file. We've dealt with CSV (comma-separated values) files on multiple occasions and have dealt with record-based flat files from old Unix servers. Basically, we can take nearly any formatted data and break it down to process it as meaningful information.