myIdea Logo

My Filemaker Pro Programming Standards: Database Structure

This page is part of the internal FileMaker Pro programming standards of Lutz Pietschker. No claims of any sort can be derived from the description of these standards. In particular, no claim can be made that these standards are complete and without errors, and that any of my software projects follow to these standards in part or completely.
The page content was last revised on (ca. 2008)

Go to start page

Document Content

This document describes the files that make up a standard database, and their content and use; implicitly, this defines the structure of the database. Related Topics:


All databases adhere (more or less strictly) to the "Separation Model" described in the Filemaker White Papers. The basic principle is to separate the data from the ressources/business logic and the user interface (GUI).

Database Files

Each database shall consist of these files; the files marked in bold print are usually present in any database:

Filename Symbolic Name Function TO Colour
start.fp7 (none) Always the first file opened in the database (and therefore the only one with a file type extension). Initializes the application, shows splash screen, closes after startup is complete. (n/a)
gui $gui Holds all layouts for interactive use; may be combined into $app (see below) in small/simple databases; may hold global fields used for display/user interaction purposes. Home of all value lists. orange
applic $app Holds the main business logic (relations, scripts, calculations) red
applic_<...> $app_<...> Holds the business logic for special functions, in particular re-usable modules red
data $dat Holds the main data tables green
data_user $dat_usr Holds data tables user-specific data or data that requires user-specific access; has a special security/access schema. Note that this is not user-specific in the sense that one file exists per user; rather, data from all users is present, but special access privileges restrict access to data of other users. green
data_<...> $dat_<...> Holds data tables with special characteristics (static/reference data, data re-usable for other databases, no-backup data) green
system $sys Holds data that is read-only for all users and that is defined by the developer (common globals etc.) blue
lang $lng Holds language resources that are actually used (layout and message texts plus language-dependent graphics); may be omitted if no language switching is required. violet
lang_<code> $lng_<code> Holds language resources in a particular language; <code> = ISO 639 2-letter-name. These files hold additional languages to add to the solution. violet
transfer $trans Holds generic table to enable data import/export for all purposes, in particular for update operations turquoise
report $rep Holds all layouts and functions for reporting (i.e. presentation in external data format or print) purposes; may be combined into $app in simple databases.
Data stored in report files is always considered temporary data.
history $hist Holds the history of the database usage pink
rollback $roll Holds records that enable a rollback of database actions light blue

"Static" tables (tables with reference or slow-changing content only) may get a darker hue of colour than tables with fast-changing data. See the naming conventions for other notes about TO Colouring.

File References

For rules about table references (aka relationships or relations) see the chapter about indexes and relations.

All file references are named using the symbolic name from the table above (for example: $app). Usually, the reference to each file shall be given in this form:

file: <filename>.<extension>
file: <filename>
fmnet: /*/<filename>

,where <extension> is not fp7, but a project-specific extension that may be used for special purposes; the second line is optional and used only where needed.

This rule makes sure that the file is found with our without a project-specific extension (note that the second reference line implicitly includes a reference to <filename>.fp7), and that the file is found whether available locally or on a FileMaker server.

If necessary for performance reasons, the fmnet:/* reference to the server may be replaced by fmnet: /<ip_address>.

This page is copyrighted by the author according to the copyright note.
All rights reserved. Lutz Pietschker, Berlin/Germany, 2011 ff.

, last change 2011-03-12