Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member
Once we've gone through the process of determining which key fields we're going to need in our database in order to create our relationships, the next step is going to be to go in and define those fields inside of the FileMaker databases. So if we open up our Exercise File/04_ 04, we see that under File and Manage > Database, we've got our four different tables created. So let's start first with defining all the primary keys in the tables that are going to act as Parents, and if we look back at our list, we determine that the tables that are going to have primary keys are going to be Customers, Invoices, and Products.
So let's start with Customers. First, in your Manage Database window, you'll notice that under the Tables tab, if you select a Table and double-click on it, it's going to navigate you over to the Fields tab. And normally there will be a list of all the fields, but since we haven't defined any yet, we see that we've got a blank list. Our cursor is down in the Field Name, and like we would define any field inside of a FileMaker database, we are going to first start and define our Primary Key field. What we need to do is decide on a name that we're going to give our field, and for key fields it's usually a good idea to follow some kind of naming convention so that later you can easily go into your field list and quickly find a key field.
And there are various different types of naming conventions to use, and none of them are right or wrong. The convention that I like to use though is to add a prefix to the name of the field that indicates whether it's a key and what type of key it is. So in the case of primary keys ,I'd like to use pk, but I also like to have my key fields appear at the top of my field list. When we have a bunch of different fields here, they are going to be organized sometimes alphabetically, sometimes by creation order, as you see here, but traditionally when organized alphabetically, I want my key fields to show up on top.
So one way I can do that is to add underscores; here is a single underscore that I can add to the prefix of my Field Name, which will always make it show up on top and in alpha sort. But since it's a Primary Key, I wanted to show up even above any other type of key, like a Foreign Key, so I am going to give it two underscores. So basically here the naming convention in file name for a Primary Key is __pk, and pk stands for Primary Key. Finally, I'd like to end the key field with the name of the table, with the word ID after it.
So in this case CustomerID, and we'll keep it as text, and I'll hit Create. In the Comment field, I am going to say primary key, and I am going to hit Change and we see that that gets stored with the field. Comments don't have any change on functionality whatsoever. It doesn't make it a Primary Key. That's just a note to me as I'm flipping through fields in the future to help me identify which one of these serves as the Primary Key. We can leave this field as text, even though it's going to count up numbers for us, so it really won't matter either way, but one important thing that we are going to want to do is make sure that this field is unique and also make sure that it gets an unique number every time a new record is created, because remember the requirement for a Primary Key is that they are to be unique and not empty, and ideally, they shouldn't be modifiable.
So in order to do that, we are going to hit the Options button to set these different properties inside of our Primary Key field. We'll talk about these options later in the Fields chapter, but specifically for the use of a Primary Key, we're going to go under the Auto-Enter tab and hit Serial number. And in general what's happening here is on the creation of a new record, a value will be placed inside of the FileMaker field, and the FileMaker application will ensure that it never gives the same number to more than one record inside any given table, therefore verifying the uniqueness of this field.
So we are going to choose Serial number, and we are going to leave next value and increment by 1. So now when we create the first record in our Customer table, it will automatically put a 1 in there, and the second record a 2, third record, 3 and so on. Thus this will ensure that these records are not empty and that they have a unique value, all in one setting. Now we also don't want any users changing these because then a user could go in and change it to a value and thus either delete the value, which would make it empty, or enter in a duplicate value, which would of course make it non-unique.
So we are going to click this button down on the bottom here called Prohibit modification of value during data entry. Now our Primary Key value cannot be changed by a user, and it'll be unique and not empty. So let's hit OK, and now we see all this information show up inside of our Primary Key field: Invoices and Products. So we can switch to different tables through this dropdown and go to Invoice, and let's just file the same convention. We'll do this one a little bit quicker.
So we see __pkID, call it primary key for invoices, hit Create, hit Options, Serial number, Prohibit. Now I did those steps a little bit quickly because we reviewed them in detail prior. We'll hit OK. So now we have two out of our three primary keys. But if you look in your products, since we imported this in already, you'll see that we already have an _ pkProductID with these values already set.
So really now we're done defining the primary keys inside of our database. So since every relationship needs to have a Primary Key on the Parent side, and then it has to have a Foreign Key on the Child's side, that means that we have to define some foreign keys in to our tables here as well. So on our List we see that there are only two tables that are acting as a Child in the relationship: Invoice and Invoice line item. So we see that Invoice needs one Foreign Key, and Invoice line items needs two. So back in our Database, we'll go to Invoice, and we're going to define a Foreign Key, this time underscore, and we're going to use fk, but which one do we need? Well, if we look back at our relationship, Invoice acts as the Child in the Customer and Invoice relationship.
So that means it needs to have a Foreign Key that matches the Customer. So what we do to make this easier for us to follow is we will use the customer name inside the definition of the Foreign Key. So we are going to call it fkCustomerID. We'll just leave that as text as well and hit Create. As you'll see now because we used a single and double underscore, if we sort by the Field Name, we see that our Primary Key shows up on top and then our Foreign Key on the bottom. We don't have to have set any settings because if you remember the rule for a Foreign Key is it doesn't have to be unique, and it can contain duplicate values.
So we don't have any field options here, but we can enter fk for Customer. And again, comments don't affect any of the functionality. It's just there for us to be able to see if we click on Options or Comments, we can see what the role of these different fields are. Now we go into Invoice line items, and we know that we need two different foreign keys. Invoice line item acts as a Child in the Invoices to Invoice line item relationship and the Products to Invoice line item. So if we need two different keys and we need to name them after the Parent, that means that we need a Invoice ID Foreign Key and a Product ID Foreign Key.
So let's define those. Create a new one. We'll say fk for Product Invoice ID. Now we have all our key fields set up, and we can hit the OK button to close the window. Now our next step is to create links between these tables now that we have the hooks, otherwise known as keys, already in place inside of our tables.
Get unlimited access to all courses for just $25/month.Become a member
82 Video lessons · 90727 Viewers
80 Video lessons · 137983 Viewers
59 Video lessons · 56768 Viewers
52 Video lessons · 70387 Viewers
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.