FileMaker Entities And Attributes

From Dwayne Wright PMP
Certified FileMaker Developer

WEB: www.dwaynewright.com
EMAIL: info@dwaynewright.com
TWITTER: dwaynewright
YOUTUBE: FileMakerThoughts

In larger ( non FileMaker ) database engines, you may see the terms of Entities and Attributes. An entity is a digital place for stored data and the FileMaker equivalent is usually a table within a FileMaker file or an individual FileMaker file. Even in the case of an external file, the entity information resides in a table within that file. So we really can say, for simplicity sake, that each entity in FileMaker should be in it’s own table.

As you know, entities should be organized so that the data within them fits into a specific purpose such as people in a people table, places in a places table and events in an event table. An entity is made up of small areas that define the data within it. Again in the larger databases, these small areas are called attributes. In FileMaker, we call these attributes fields. So an entity is defined by the attributes within it as a FileMaker table is defined by the fields within it.

People ( Entity / Table ) would like have attributes / fields such as first name, last name, gender, birth date and the like. The combination of data in fields defines one record from another.

Now you might be saying to yourself, “Hey, wait a minute, you have an attribute that should be in it’s own entity!”

You may be thinking that a birth date does not define a person, it defines an event. As an event, it should have it’s own entity and therefore be placed in it’s own table. This would be a valid point but not necessary true based upon the way your database is setup.

A birth date, as an attribute, can be used to calculate the age of the person for each record. In a case such as this, the birth date describes the person entity. This is also true if you don’t use the birth date attribute as an event.

A birth date, as an entity, could be used to mark an event in history. The birth date of famous person in history might be an event, just like any of the remarkable things that person did during their lifetime.

Since, I’m making this discussion as confusing as possible, let’s take it up another notch. I’m doing this because relational design isn’t always black and white. It’s not the fact that I find it amusing to have your reread this discussion multiple times ( well maybe a little ).

I could have the birth date of a famous person as it’s own entity and still use that data to calculate the age of the famous person. If the two entities of people and events are joined or linked in such a way as I can see the birthday event from the person entity ... then ... I can use simple math to determine the age.

For example, I'm 45 years old as I write this. If I had each birthday of my 45 years as a separate record in an events table, I can simply count them all to get my age in years. If I only have the one birthday event and I know what the current day and time is ... I would be able to calculate my age in years, months, days, hours, minutes and even seconds.

Is is possible to link different entities to do something as crazy as this? Yes, it is and it is called a relationship!

=
More info about the author and FileMaker in general, contact me at info@dwaynewright.com.

© 2007 - Dwayne Wright - dwaynewright.com

The material on this document is offered AS IS. There is NO REPRESENTATION OR WARRANTY, expressed or implied, nor does any other contributor to this document. WARRANTIES OF MERCHANT ABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY DISCLAIMED. Consequential and incidental damages are expressly excluded. FileMaker Pro is the registered trademark of FileMaker Inc.