{"id":8551,"date":"2015-02-24T05:20:02","date_gmt":"2015-02-24T13:20:02","guid":{"rendered":"http:\/\/www.seedcode.com\/?p=8551"},"modified":"2023-08-08T16:31:40","modified_gmt":"2023-08-08T16:31:40","slug":"filemaker-data-modeling-with-selector-connector","status":"publish","type":"post","link":"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/","title":{"rendered":"FileMaker Data Modeling with Selector Connector"},"content":{"rendered":"<h2>Overview<\/h2>\n<p>The Selector-Connector is a data model for organizing your FileMaker table occurrence graph. It is something we&#8217;ve been loosely collaborating on with our friend and colleague <a title=\"Todd Geist\" href=\"https:\/\/www.geistinteractive.com\/\" target=\"_blank\" rel=\"noopener\">Todd Geist<\/a>. I say loosely, because during the evolution of the model, we never really reviewed each others work, but talked in very general terms about our progress. The fact that we ended up with something so functionally similar makes me think that we&#8217;re actually onto something! Todd has a great post and video on his approach\u00a0<a title=\"here\" href=\"https:\/\/www.geistinteractive.com\/2014\/11\/21\/filemaker-selector-connector-video\/\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/p>\n<div class=\"lightbox\">\n<figure id=\"attachment_7847\" aria-describedby=\"caption-attachment-7847\" style=\"width: 1275px\" class=\"wp-caption alignnone\"><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-7847 size-full\" src=\"https:\/\/seedcode.com\/wp-content\/uploads\/2014\/12\/home1.jpg\" alt=\"\" width=\"1275\" height=\"909\" srcset=\"https:\/\/seedcode.com\/wp-content\/uploads\/2014\/12\/home1.jpg 1275w, https:\/\/seedcode.com\/wp-content\/uploads\/2014\/12\/home1-300x214.jpg 300w, https:\/\/seedcode.com\/wp-content\/uploads\/2014\/12\/home1-1024x730.jpg 1024w, https:\/\/seedcode.com\/wp-content\/uploads\/2014\/12\/home1-768x548.jpg 768w\" sizes=\"(max-width: 1275px) 100vw, 1275px\" \/><figcaption id=\"caption-attachment-7847\" class=\"wp-caption-text\">The new SeedCode Complete template<\/figcaption><\/figure>\n<\/div>\n<p>We&#8217;re also using\u00a0Selector-Connector as\u00a0the data model for the new\u00a0\u00a0<a href=\"\/complete-filemaker-template\/\" target=\"_blank\" rel=\"noopener\">SeedCode Complete<\/a> and it is one of the primary reasons we feel\u00a0Complete is working so well; seeing how\u00a0Selector-Connector is letting folks extend and modify Complete also\u00a0tells us this approach is being validated.<\/p>\n<p>The most important thing to me about the Selector-Connector model is that the techniques themselves are not new new at all. It uses powerful, native techniques that have been around since FileMaker 7&#8211;like global keys and cross-joins&#8211;but it organizes them as a pattern\u00a0that we can describe, much like we can describe the Anchor-Buoy pattern.<\/p>\n<h2>FileMaker Data Models: Extending Anchor-Buoy<\/h2>\n<p>The Selector-Connector should be seen as\u00a0an extension of the currently predominant data model, <a href=\"http:\/\/www.kevinfrank.com\/anchor-buoy.html\" target=\"_blank\" rel=\"noopener\">Anchor-Buoy<\/a>. Anchor-Buoy is arguably the most widely adopted FileMaker standard in the development community, and there are two very good reasons for that.<\/p>\n<ol>\n<li>It organizes the graph very clearly with a small set of rules<\/li>\n<li>It has a great name that is very visually descriptive.<\/li>\n<\/ol>\n<p>We want to make sure we don&#8217;t lose either of those things \u00a0if we&#8217;re going to tinker with the model. In general terms, Selector-Connector keeps the current Anchor-Buoy model but builds &#8220;on top of it.&#8221; We&#8217;re just going to &#8220;bend&#8221; its rules a little bit.<\/p>\n<p>A very basic interpretation of the Anchor-Buoy rules would be:<\/p>\n<ol>\n<li>All layouts must reference Anchor Table Occurrences<\/li>\n<li>Interacting with Buoys is only done from the context of their Anchor<\/li>\n<li>Anchor Table Occurrences\u00a0cannot be related to each other.<\/li>\n<\/ol>\n<p>By sticking to these rules, the Anchor-Buoy model forces us to be aware of context and it also limits the chance of us doing an operation out of context, like picking the wrong table occurrence for a portal; very important things in FileMaker and generally these benefits have outweighed the draw-backs of Anchor-Buoy, and that&#8217;s why it&#8217;s the standard.<\/p>\n<div class=\"lightbox\">\n<figure id=\"attachment_2402\" aria-describedby=\"caption-attachment-2402\" style=\"width: 830px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/02\/ab.png\"><img decoding=\"async\" class=\"wp-image-2402 size-full\" src=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/02\/ab.png\" alt=\"FileMaker Data Modeling: the Anchor-Buoy model in action\" width=\"830\" height=\"749\" \/><\/a><figcaption id=\"caption-attachment-2402\" class=\"wp-caption-text\">Typical Anchor-Buoy model in action<\/figcaption><\/figure>\n<\/div>\n<h2>The Pop-Over Cometh<\/h2>\n<p>As I mentioned above, there&#8217;s nothing technically new to the Selector-Connector model. So what\u00a0changed to start us down this road? For me, it was the introduction of the Pop-Over in FileMaker 13. Here was a great new object that would be a light weight alternative to pop-up windows and dialogs. <!--more--><\/p>\n<p>It would be great for picking records from a portal, and for editing and creating records. And, using the new slide panels, selecting, creating, and editing, could be done all in one place! FileMaker Inc. seemed to have a similar thing in mind as the demo files that came with 13 had a nice example of this &#8220;all in one place&#8221; behavior: bring up a pop-over with a portal and filter for the record you&#8217;re looking for. If you can&#8217;t find it, then hit new and &#8220;slide&#8221; to a new record form right in the same pop-over&#8230;very slick! We were starting to work on the new <a title=\"SeedCode Complete\" href=\"http:\/\/www.seedcode.com\/complete-filemaker-template\/\" target=\"_blank\" rel=\"noopener\">SeedCode Complete<\/a>\u00a0and I saw a great design pattern taking shape.<\/p>\n<div class=\"lightbox\">\n<figure id=\"attachment_2434\" aria-describedby=\"caption-attachment-2434\" style=\"width: 675px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/02\/pop-overs.png\"><img decoding=\"async\" class=\"wp-image-2434 size-full\" src=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/02\/pop-overs.png\" alt=\"FileMaker Pop-Overs using the Selector-Connector Data Model\" width=\"675\" height=\"534\" \/><\/a><figcaption id=\"caption-attachment-2434\" class=\"wp-caption-text\">A simple Pop-Over with Picker Panel and then a New Contact Panel<\/figcaption><\/figure>\n<\/div>\n<p>However, when I started exploring this, I realized (obviously) that these pop-overs would have to be done as single purpose objects: even though both Projects and\u00a0Invoices would need to pick Contacts, I wouldn&#8217;t be able to use the same pop-over as it would be bound to the context of the Project or Invoice layout. Even if I was using a <a href=\"http:\/\/www.seedcode.com\/virtual-list\/\">virtual list<\/a> for my Contact Picker, the portals would each <em>still<\/em> need their own buoys attached to Projects and Invoices. This suddenly seemed like madness, and I was determined to find a way to copy and paste my pop-overs from Anchor to Anchor and have them work with very little modification.<\/p>\n<h2>Universal Context<\/h2>\n<p>If we\u00a0wanted the pop-overs to work universally, then there was no way around it, we would need to have a context for them to work in, and the idea of Universal Context was born. For a long time, Todd and I were both using this description of the model as the Selector itself hadn&#8217;t taken form. Here&#8217;s a representation of our first pass.<\/p>\n<div class=\"lightbox\">\n<figure id=\"attachment_2407\" aria-describedby=\"caption-attachment-2407\" style=\"width: 830px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/02\/uc.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2407 size-full\" src=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/02\/uc.png\" alt=\"The early Universal Context Data Model\" width=\"830\" height=\"1024\" \/><\/a><figcaption id=\"caption-attachment-2407\" class=\"wp-caption-text\">Early Connector Model, aka Universal Context Model<\/figcaption><\/figure>\n<\/div>\n<p>We decided to &#8220;compromise&#8221; on the Anchor-Buoy rule of Anchors being related to each other. We still don&#8217;t want them directly related to each other, or even interacting directly with each other. However, we do want them all to be able to access the Universal Context table occurrences of Home and Virtual List Rows. This way, any Anchor layout\u00a0can all use the same portal on our Pop-Over Selector. Not only can they use the same portal, but the scripts that reference the portal can also be generic: and we&#8217;re a little closer to having the\u00a0portable\u00a0pop-over we&#8217;re after!<\/p>\n<h2>What about Record Locking?<\/h2>\n<p>The idea of the above graph is that I can set the RowsToShowGlob global field in Home and control the contents of my virtual list (setting a list of contacts to select from, for example). But what if another user\u00a0is trying to do the same thing? This isn&#8217;t a\u00a0<a href=\"https:\/\/www.geistinteractive.com\/2014\/12\/10\/filemaker-session-model-video\/\" target=\"_blank\" rel=\"noopener\">Session Model<\/a>, and we don&#8217;t want to have to manage multiple records in Home to prevent record locking, so how can we get around that? It turns out that if the Home table only has global fields in it, you&#8217;ve, in essence, made it a global table that multiple people can interact with without locking. This was really a critical milestone in the process. By having a central\/single TO that we could connect through, we could enforce\u00a0a similar, although slightly looser, model as Anchor-Buoy.<\/p>\n<p>It&#8217;s important to note\u00a0that we are interacting with the Home\u00a0and the Virtual List Rows from the context one of the Anchors, and when doing this the central TO does not lock. However, if you create a layout in the context of the Home layout, and open a related record from there, then you do lock that central table preventing another user from doing the same. Working with the &#8220;universal context&#8221; tables from the Anchor causes the Anchor record to be opened, and not Home, which is the behavior we want.\u00a0So, this is a rule from Anchor Buoy that needs to be maintained for this model to work: All user layouts should still be in the context of an &#8220;Anchor.&#8221;<\/p>\n<h2>Create From Anywhere<\/h2>\n<p>The model above solved my problem of being able to use a\u00a0Contact Picker Pop-Over from any of my layouts, but I also wanted to be able to create new contacts right from my pop-over. Since we&#8217;ve already extended the Anchor-Buoy model for our Virtual List, we&#8217;ll extend it a little bit further and create\u00a0a dedicated TO for contact creation. So now you&#8217;ll see a table occcurence called CreateContacts hanging off our Home table occurrence below.<\/p>\n<div class=\"lightbox\">\n<figure id=\"attachment_2418\" aria-describedby=\"caption-attachment-2418\" style=\"width: 731px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/02\/create.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2418 size-full\" src=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/02\/create.png\" alt=\"Creation-Relationships in the FileMaker Data Model\" width=\"731\" height=\"443\" \/><\/a><figcaption id=\"caption-attachment-2418\" class=\"wp-caption-text\">Adding a Table Occurrence for creating contacts<\/figcaption><\/figure>\n<\/div>\n<p>We can create new Contacts through this relationship. If the relationship between Home and CreateContacts is a creation relationship and the ContactIdGlob in home is empty, we can create a new Contact simply by typing into a field in the CreateContacts table occurrence. The Contact id is an auto-generate field and this value for the new record will be pushed back into the global. This behavior may seem a little strange, but has existed for as long as I can remember in FileMaker and is referred to as the &#8220;pop-back&#8221; or &#8220;<a href=\"http:\/\/filemakerhacks.com\/2011\/07\/31\/magic-key-and-check-box-reporting\/\" target=\"_blank\" rel=\"noopener\">magic key<\/a>.&#8221; For us it allows us to create a new Contact from anywhere by creating a temporary &#8220;parent&#8221; in Home, and we no longer need to go to a Contact layout to do this. We can use our Pop-Over Contact Picker on any layout to both pick and create contacts! Problem Solved and our graph is not a mess.<\/p>\n<h2>The Selector<\/h2>\n<p>Soon after we got this part working, we began to realize that there was more we could do with this model. If we&#8217;re using this Universal Context to create records from anywhere, then we can also very easily use this same model to view and edit records from anywhere. <a href=\"http:\/\/www.modularfilemaker.org\/module\/master-detail\/\" target=\"_blank\" rel=\"noopener\">Master Detail<\/a> or Selection Portals are very common in FileMaker, and we soon realized that the Universal Context would work great for them.<\/p>\n<p>Typically an Anchor would\u00a0need two Buoys to a related table to do a proper Master Detail view. Normally we&#8217;d\u00a0click on a portal row of our first Buoy to get the id of the record we clicked. We would then set that id to a global to set up a relationship to the second Buoy where we would see additional data about the selected record. With Selector-Connector we can now set that global in our central Home Table Occurrence and use the relationship to CreateContact for our detail view. This means we can get rid of that second Buoy for the detail, and more importantly, <strong>any<\/strong> Anchor that wants to see Contact details can use that same Table Occurrence.<\/p>\n<p>This is really the birth of the Selector. The central table is now no longer called Home, but the &#8220;Selector&#8221;. The table occurrences to its right are the &#8220;Selected&#8221;, and they&#8217;re also the relationships that let us create new records. We&#8217;ve now consolidated, pickers, creation and master-detail into a single &#8220;component&#8221; of the graph instead of a bunch of similar Buoys attached to each of your\u00a0Anchors.<\/p>\n<div class=\"lightbox\">\n<figure id=\"attachment_2419\" aria-describedby=\"caption-attachment-2419\" style=\"width: 830px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/02\/screen-shot-2015-02-23-at-2-26-12-pm.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2419 size-full\" src=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/02\/screen-shot-2015-02-23-at-2-26-12-pm.png\" alt=\"The Selector component of the FileMaker Data Model\" width=\"830\" height=\"683\" \/><\/a><figcaption id=\"caption-attachment-2419\" class=\"wp-caption-text\">The Selector Model Takes Shape<\/figcaption><\/figure>\n<\/div>\n<h2>\u00a0The Connector<\/h2>\n<p>As we started working with this new model, there was this great sense of relief that we weren&#8217;t &#8220;fighting&#8221; with FileMaker like we have in the past. Context\u00a0and Layouts were still tied to the Anchors, and it was living up to the promise of being the best of both worlds! In addition, we\u00a0started to see\u00a0some residual\u00a0benefits.\u00a0\u00a0For one, since most of the global keys were being moved to the Selector, we didn&#8217;t need them in actual data tables anymore.\u00a0In SeedCode Complete, we were able to remove virtually all global fields from our the data tables. This keeps them much easier to work with, particularly if integrating with another data source or doing imports as you don&#8217;t need to wade through all the globals. This led to the idea of the Connector.<\/p>\n<p>For me, the Connector is about modeling\u00a0the graph to not just symbolize what&#8217;s a layout and what isn&#8217;t, but the different logical components of the graph. Initially we were thinking we had just two\u00a0components, the Anchor-Buoy component and the Selector component, but once you adopt that model, it can be taken a little further. Really, the Selector is different than the Virtual List, so we decided to\u00a0make our graph represent that. We also\u00a0now have a place where we can keep indexed values available to all Anchors as well. Things like settings or graphics can also be cross-joined to our central Connector and <strong>accessed from anywhere<\/strong>. These things working together is the full Selector-Connector model.<\/p>\n<div class=\"lightbox\">\n<figure id=\"attachment_2423\" aria-describedby=\"caption-attachment-2423\" style=\"width: 830px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/02\/screen-shot-2015-02-23-at-3-02-53-pm.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2423 size-full\" src=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/02\/screen-shot-2015-02-23-at-3-02-53-pm.png\" alt=\"The Finished Data Model for FileMaker Pro: Selector-Connector\" width=\"830\" height=\"850\" \/><\/a><figcaption id=\"caption-attachment-2423\" class=\"wp-caption-text\">The Selector Connector<\/figcaption><\/figure>\n<\/div>\n<p>In conclusion, I&#8217;d like to remind you of this great Picasso quote my mother recited to\u00a0me for as long as I can remember, and how I think it applies here.<\/p>\n<h2>&#8220;Learn the rules like a pro, so you can break them like an artist.&#8221;<\/h2>\n<p>-Pablo Picasso<\/p>\n<p>After going through this exercise, I believe that Anchor Buoy was not necessarily what the developers of the graph had in mind, but it was an absolutely critical step in our collective development. The idea of approaching something like the Selector-Connector without a complete and thorough understanding of FileMaker Context would be daunting and probably fruitless. The only reason we can use, or even talk about, a model like this is because of what Anchor-Buoy has taught us, and I want to re-emphasize the idea that the Selector-Connector (as I see it) is an extension and\/or continuation of Anchor-Buoy. We&#8217;ve worked hard to learn and honor its rules, so we might be ready for a little artistry.<\/p>\n<p>Need more? Checkout &#8220;<a href=\"http:\/\/www.seedcode.com\/filemaker-selector-connector-basics\/\">Selector-Connector: the basics<\/a>&#8220;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Overview The Selector-Connector is a data model for organizing your FileMaker table occurrence graph. It is something we&#8217;ve been loosely collaborating on with our friend and colleague Todd Geist. I say loosely, because during the evolution of the model, we never really reviewed each others work, but talked in very general terms about our progress. The fact that we ended up with something so functionally similar makes me think that we&#8217;re actually onto something! Todd has a great post and video on his approach\u00a0here. We&#8217;re also using\u00a0Selector-Connector as\u00a0the data model for the new\u00a0\u00a0SeedCode Complete and it is one of the primary reasons we feel\u00a0Complete is working so well; seeing how\u00a0Selector-Connector is letting folks extend and modify Complete also\u00a0tells us this approach is being validated. The most important thing to me about the Selector-Connector model is that the techniques themselves are not new new at all. It uses powerful, native techniques that have been around since FileMaker 7&#8211;like global keys and cross-joins&#8211;but it organizes them as a pattern\u00a0that we can describe, much like we can describe the Anchor-Buoy pattern. FileMaker Data Models: Extending Anchor-Buoy The Selector-Connector should be seen as\u00a0an extension of the currently predominant data model, Anchor-Buoy. Anchor-Buoy is arguably the most widely adopted FileMaker standard in the development community, and there are two very good reasons for that. It organizes the graph very clearly with a small set of rules It has a great name that is very visually descriptive. We want to make sure we don&#8217;t lose either of those things \u00a0if we&#8217;re going to tinker with the model. In general terms, Selector-Connector keeps the current Anchor-Buoy model but builds &#8220;on top of it.&#8221; We&#8217;re just going to &#8220;bend&#8221; its rules a little bit. A very basic interpretation of the Anchor-Buoy rules would be: All layouts must reference Anchor Table Occurrences Interacting with Buoys is only done from the context of their Anchor Anchor Table Occurrences\u00a0cannot be related to each other. By sticking to these rules, the Anchor-Buoy model forces us to be aware of context and it also limits the chance of us doing an operation out of context, like picking the wrong table occurrence for a portal; very important things in FileMaker and generally these benefits have outweighed the draw-backs of Anchor-Buoy, and that&#8217;s why it&#8217;s the standard. The Pop-Over Cometh As I mentioned above, there&#8217;s nothing technically new to the Selector-Connector model. So what\u00a0changed to start us down this road? For me, it was the introduction of the Pop-Over in FileMaker 13. Here was a great new object that would be a light weight alternative to pop-up windows and dialogs.<\/p>\n","protected":false},"author":3,"featured_media":8574,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[7,30],"class_list":["post-8551","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-filemaker-13","tag-seedcode-complete"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>FileMaker Data Modeling, Selector-Connector &amp; Anchor-Buoy<\/title>\n<meta name=\"description\" content=\"A refinement to the Anchor-Buoy pattern for FileMaker&#039;s relationship graph, the Selector-Connector data model may offer more portability &amp; less redundancy.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FileMaker Data Modeling, Selector-Connector &amp; Anchor-Buoy\" \/>\n<meta property=\"og:description\" content=\"A refinement to the Anchor-Buoy pattern for FileMaker&#039;s relationship graph, the Selector-Connector data model may offer more portability &amp; less redundancy.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/\" \/>\n<meta property=\"og:site_name\" content=\"SeedCode\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/seedcoder\" \/>\n<meta property=\"article:published_time\" content=\"2015-02-24T13:20:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-08T16:31:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"109\" \/>\n\t<meta property=\"og:image:height\" content=\"110\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"jasonchryoung\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dayback\" \/>\n<meta name=\"twitter:site\" content=\"@dayback\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"jasonchryoung\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/\"},\"author\":{\"name\":\"jasonchryoung\",\"@id\":\"https:\/\/seedcode.com\/#\/schema\/person\/21c8e63200786c642eb068377e428ebd\"},\"headline\":\"FileMaker Data Modeling with Selector Connector\",\"datePublished\":\"2015-02-24T13:20:02+00:00\",\"dateModified\":\"2023-08-08T16:31:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/\"},\"wordCount\":2155,\"commentCount\":36,\"publisher\":{\"@id\":\"https:\/\/seedcode.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png\",\"keywords\":[\"FileMaker 13\",\"SeedCode Complete\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/\",\"url\":\"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/\",\"name\":\"FileMaker Data Modeling, Selector-Connector & Anchor-Buoy\",\"isPartOf\":{\"@id\":\"https:\/\/seedcode.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png\",\"datePublished\":\"2015-02-24T13:20:02+00:00\",\"dateModified\":\"2023-08-08T16:31:40+00:00\",\"description\":\"A refinement to the Anchor-Buoy pattern for FileMaker's relationship graph, the Selector-Connector data model may offer more portability & less redundancy.\",\"breadcrumb\":{\"@id\":\"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#primaryimage\",\"url\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png\",\"contentUrl\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png\",\"width\":109,\"height\":110},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/seedcode.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FileMaker Data Modeling with Selector Connector\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/seedcode.com\/#website\",\"url\":\"https:\/\/seedcode.com\/\",\"name\":\"SeedCode\",\"description\":\"Build the Software You&#039;ve Always Wanted\",\"publisher\":{\"@id\":\"https:\/\/seedcode.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/seedcode.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/seedcode.com\/#organization\",\"name\":\"SeedCode\",\"url\":\"https:\/\/seedcode.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/seedcode.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2022\/12\/SeedCodeLogo.png\",\"contentUrl\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2022\/12\/SeedCodeLogo.png\",\"width\":595,\"height\":189,\"caption\":\"SeedCode\"},\"image\":{\"@id\":\"https:\/\/seedcode.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/seedcoder\",\"https:\/\/x.com\/dayback\",\"https:\/\/www.linkedin.com\/company\/seedcode\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/seedcode.com\/#\/schema\/person\/21c8e63200786c642eb068377e428ebd\",\"name\":\"jasonchryoung\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/seedcode.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"caption\":\"jasonchryoung\"},\"url\":\"https:\/\/seedcode.com\/author\/jasonchryoung\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"FileMaker Data Modeling, Selector-Connector & Anchor-Buoy","description":"A refinement to the Anchor-Buoy pattern for FileMaker's relationship graph, the Selector-Connector data model may offer more portability & less redundancy.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/","og_locale":"en_US","og_type":"article","og_title":"FileMaker Data Modeling, Selector-Connector & Anchor-Buoy","og_description":"A refinement to the Anchor-Buoy pattern for FileMaker's relationship graph, the Selector-Connector data model may offer more portability & less redundancy.","og_url":"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/","og_site_name":"SeedCode","article_publisher":"https:\/\/www.facebook.com\/seedcoder","article_published_time":"2015-02-24T13:20:02+00:00","article_modified_time":"2023-08-08T16:31:40+00:00","og_image":[{"width":109,"height":110,"url":"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png","type":"image\/png"}],"author":"jasonchryoung","twitter_card":"summary_large_image","twitter_creator":"@dayback","twitter_site":"@dayback","twitter_misc":{"Written by":"jasonchryoung","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#article","isPartOf":{"@id":"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/"},"author":{"name":"jasonchryoung","@id":"https:\/\/seedcode.com\/#\/schema\/person\/21c8e63200786c642eb068377e428ebd"},"headline":"FileMaker Data Modeling with Selector Connector","datePublished":"2015-02-24T13:20:02+00:00","dateModified":"2023-08-08T16:31:40+00:00","mainEntityOfPage":{"@id":"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/"},"wordCount":2155,"commentCount":36,"publisher":{"@id":"https:\/\/seedcode.com\/#organization"},"image":{"@id":"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#primaryimage"},"thumbnailUrl":"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png","keywords":["FileMaker 13","SeedCode Complete"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/","url":"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/","name":"FileMaker Data Modeling, Selector-Connector & Anchor-Buoy","isPartOf":{"@id":"https:\/\/seedcode.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#primaryimage"},"image":{"@id":"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#primaryimage"},"thumbnailUrl":"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png","datePublished":"2015-02-24T13:20:02+00:00","dateModified":"2023-08-08T16:31:40+00:00","description":"A refinement to the Anchor-Buoy pattern for FileMaker's relationship graph, the Selector-Connector data model may offer more portability & less redundancy.","breadcrumb":{"@id":"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#primaryimage","url":"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png","contentUrl":"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png","width":109,"height":110},{"@type":"BreadcrumbList","@id":"https:\/\/seedcode.com\/filemaker-data-modeling-with-selector-connector\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/seedcode.com\/"},{"@type":"ListItem","position":2,"name":"FileMaker Data Modeling with Selector Connector"}]},{"@type":"WebSite","@id":"https:\/\/seedcode.com\/#website","url":"https:\/\/seedcode.com\/","name":"SeedCode","description":"Build the Software You&#039;ve Always Wanted","publisher":{"@id":"https:\/\/seedcode.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/seedcode.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/seedcode.com\/#organization","name":"SeedCode","url":"https:\/\/seedcode.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/seedcode.com\/#\/schema\/logo\/image\/","url":"https:\/\/seedcode.com\/wp-content\/uploads\/2022\/12\/SeedCodeLogo.png","contentUrl":"https:\/\/seedcode.com\/wp-content\/uploads\/2022\/12\/SeedCodeLogo.png","width":595,"height":189,"caption":"SeedCode"},"image":{"@id":"https:\/\/seedcode.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/seedcoder","https:\/\/x.com\/dayback","https:\/\/www.linkedin.com\/company\/seedcode\/"]},{"@type":"Person","@id":"https:\/\/seedcode.com\/#\/schema\/person\/21c8e63200786c642eb068377e428ebd","name":"jasonchryoung","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/seedcode.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","caption":"jasonchryoung"},"url":"https:\/\/seedcode.com\/author\/jasonchryoung\/"}]}},"_links":{"self":[{"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/posts\/8551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/comments?post=8551"}],"version-history":[{"count":0,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/posts\/8551\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/media\/8574"}],"wp:attachment":[{"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/media?parent=8551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/categories?post=8551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/tags?post=8551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}