Before we explore Data Driven Design and it's implications for your business, we need to go over some basic vocabulary.
You might be familiar with some or even all these terms, however, it is important to make sure we have the same definition in mind when we say website as opposed to web application, or a static website vs. a dynamic website. Additionally, it is a good idea to have some understanding of what a relational database is. This is not meant to be an thorough study of these topics, just a couple of simple definitions. Now we actually find these topics of great interest, however, we understand most people do not. But if you too find these topics of interest, there are some links at the bottom of this page where you can explore these topics in greater depth.
If you already have a firm grasp on these concepts, feel free to skip this page and proceedHERE.
Now let's take a look at some definitions so we can explore Data Driven Design with a common vocabulary.
A (Very) Brief History of the Web
Back in the beginning days of the web (way, way back in the 1990's), the internet was essentially a giant file server. People used their Internet browsers (remember netscape?) to request static pages from commercial sites and public sites. Most companies soon decided they needed to "establish a web presence", and proceeded to put a brochure about their business online. People would "browse" to the company's web site and request HTML files: Home, About Us, Contact Us and FAQ. Every visitor was presented with the same information, in the same way.
Fast forward a couple of years (the beginning, middle and end of the .com bubble, 1998-2000), active server pages (.asp) and java server pages are introduced and large businesses start to create dynamic websites, e-commerce sites and intranets (web applications). The implications for business of these new technologies is simply HUGE. However, the cost of developing these applications is exceedingly high and only enterprise level companies (and the new .com's, which will soon die, but currently have tons of cash) can afford to put these cool new technologies to use.
Now fast forward to today (this was titled "a [very] brief history of the internet). The .com bubble has burst and the mess has been cleaned up. With the introduction of RAD (rapid application development) languages/frameworks like Ruby/Rails and Coldfusion/Plum, the incredible benefits of the internet as a business platform, are now within reach of small businesses. Data Driven Design takes this process two or three steps further and makes creating custom software very affordable.
Some Basic Definitions
Static Web site-
a collection of static (non-changing) pages using html to display information. Most often, static web sites are used like a "brochure on the internet". There is no data collected from users and there is no opportunity for the user to retrieve information from a database. Each visitor to the website is presented with the same information.
Dynamic Web Site-
a web site that is marked by the ability to collect user input for insertion into a database and the ability for users to search for, and retrieve information, from a database. Dynamic websites use an application server (like coldfusion) and a database program to create pages "on the fly" specific to each user. When a website allows users to view their purchase history, or look up their last purchase or change their profile information, it is a dynamic website and the user is interacting with a database through a web application server.
Web Application-
Like a dynamic website, a web application uses an application server and a database server to collect user input for insertion into a database and to allow users to search for , and retrieve information from the database. The primary difference between the two is in the depth of interaction and the scope of activities. Whereas a dynamic website is primarily for filtering database queries and customizing information presentation (showing you what you bought last month, not what everyone bought all year), a web application uses the web as a platform to allow users (those users with the proper authorization), to start and conclude business processes from anywhere they have an internet connection.
Adding a new customer, preparing an estimate, checking your schedule, entering hours worked, sending messages, filling out an employment application, creating and displaying a calendar of jobs/events, assigning tasks, allowing employees to view job addresses/directions/job specs, preparing or viewing reports...the list of potential uses is limitless.
Relational Database-
A relational database is a type of database where data is stored in a collection of related tables. The basic idea is to have data only appear in one place (one row of one table) within the database. As an example, consider a receipt from a supply store. There is a receipt table within the database, but little of the information on the receipt is actually stored in the receipt table. For instance, the customer name and address is stored in the customer table, the product information is stored in the products table. In the receipt table, the only information about the customer, is the customer ID number, same with the product information. When the database is queried for information about the receipt, the database looks at the the customer ID number and gets the information about the customer from the customer table.
At first this might not seem like a bid idea, but data changes and gets updated over time. Think about what it would be like if the customer changed their address and someone had to go through 14,546,232 receipt records and find all the receipts for this customer and change the address. How long would it take, how many mistakes would be made? With a relational database, the information only need be changed in one row of the customer table.
Here is a visual representation of part of a relational database we recently completed
All the boxes represent the different tables and the lines represent the different relationships between the different tables. Notice the table highlighted with a red box. This is the contacts table for this company. Notice all the lines coming out of the Contacts table: The contacts table directly relates with over 45 other tables. If this was just one giant spreadsheet, and a contact's information changed, can you imagine what a nightmare it would be to hunt down all the places that contact's information might be? With a relational database, we change the contacts information located on one row in the contacts table and it changes everywhere.
Data Driven Design-
A method of web application development Availdata uses which allows the structure of an application's design to be dictated by the structure of the application's relational database. It begins with a simple diagram of the business processes the application will facilitate and then a relational database is created. Once the database is created, the forms that make up the application are created following the table structure and relationships between the different tables. This method creates well formed applications quickly and efficiently.