Kevin Frank's Anchor-Buoy Presentation Long

235
Grappling with 7 (part 2) Kevin Frank 8/16/05

Transcript of Kevin Frank's Anchor-Buoy Presentation Long

Page 1: Kevin Frank's Anchor-Buoy Presentation Long

Grappling with 7(part 2)

Kevin Frank8/16/05

Page 2: Kevin Frank's Anchor-Buoy Presentation Long

Grappling with 7(part 2)

Kevin Frank8/16/05

Page 3: Kevin Frank's Anchor-Buoy Presentation Long

Grappling with 7(part 2)

Kevin Frank8/16/05

Page 4: Kevin Frank's Anchor-Buoy Presentation Long

Grappling with 7(part 2)

Kevin Frank8/16/05

Page 5: Kevin Frank's Anchor-Buoy Presentation Long
Page 6: Kevin Frank's Anchor-Buoy Presentation Long
Page 7: Kevin Frank's Anchor-Buoy Presentation Long

Arcata, CA

Page 8: Kevin Frank's Anchor-Buoy Presentation Long

How Many Of You...

Page 9: Kevin Frank's Anchor-Buoy Presentation Long

How Many Of You...

• Have built and deployed one or more FM7 solutions?

Page 10: Kevin Frank's Anchor-Buoy Presentation Long

How Many Of You...

• Have built and deployed one or more FM7 solutions?

• Have converted and deployed one or more FM7 solutions?

Page 11: Kevin Frank's Anchor-Buoy Presentation Long

How Many Of You...

• Have built and deployed one or more FM7 solutions?

• Have converted and deployed one or more FM7 solutions?

• Are currently building a FM7 solution?

Page 12: Kevin Frank's Anchor-Buoy Presentation Long

How Many Of You...

• Have built and deployed one or more FM7 solutions?

• Have converted and deployed one or more FM7 solutions?

• Are currently building a FM7 solution?

• Are sticking with FM6 until they pry it from your cold, dead fingers?

Page 13: Kevin Frank's Anchor-Buoy Presentation Long

If you have questions...

Page 14: Kevin Frank's Anchor-Buoy Presentation Long

If you have questions...Please interrupt me

and ask them.

Page 15: Kevin Frank's Anchor-Buoy Presentation Long

If you have questions...

I don’t mind...

Please interrupt meand ask them.

Page 16: Kevin Frank's Anchor-Buoy Presentation Long

If you have questions...

I don’t mind...(at all).

Please interrupt meand ask them.

Page 17: Kevin Frank's Anchor-Buoy Presentation Long

I only have one request...

Page 18: Kevin Frank's Anchor-Buoy Presentation Long

I only have one request...

Page 19: Kevin Frank's Anchor-Buoy Presentation Long

Violators willface thewrath

of

Page 20: Kevin Frank's Anchor-Buoy Presentation Long
Page 21: Kevin Frank's Anchor-Buoy Presentation Long
Page 22: Kevin Frank's Anchor-Buoy Presentation Long

< a.k.a. >< a.k.a. >

Page 23: Kevin Frank's Anchor-Buoy Presentation Long
Page 24: Kevin Frank's Anchor-Buoy Presentation Long
Page 25: Kevin Frank's Anchor-Buoy Presentation Long

Let’s start with a simple example

Page 26: Kevin Frank's Anchor-Buoy Presentation Long

Let ( [VL = "Header";L = ValueListItems ( Get ( FileName ) ;VL);X = PatternCount(L;"¶")+1;N = 1+Mod(X+gScriptParameter;X);E = MiddleWords(L;N;1);T = MiddleWords(FieldType (Get ( FileName ) ;E);2;1);P = gScriptParameter;G = GetField(E)];

Choose(P>2;Case(T="Number";Right("00000000"&G;8);G);Case(T="Number";1/(G+2);T="Date";Date(12;12;3000)-G;T="Hour";Time(23;59;59)- G;T="Text";Substitute( Upper(G); ["A"; "z"]; ["B"; "y"]; ["C"; "x"]; ["D"; "w"]; ["E"; "v"]; ["F"; "u"] ; ["G"; "t"]; ["H"; "s"]; ["I"; "r"]; ["J"; "q"]; ["K"; "p"]; ["L"; "o"]; ["M"; "n"]; ["N"; "m"]; ["O"; "l"]; ["P"; "k"]; ["Q"; "j"]; ["R"; "i"]; ["S"; "h"]; ["T"; "g"]; ["U"; "f"]; ["V"; "e"]; ["W"; "d"]; ["X"; "c"]; ["Y"; "b"]; ["Z"; "a"] ) )))

Page 27: Kevin Frank's Anchor-Buoy Presentation Long

( just kidding )

Page 28: Kevin Frank's Anchor-Buoy Presentation Long

Main Presentation:

Anchor/Buoy

A FM7 Relational Graph Design Approach

Page 29: Kevin Frank's Anchor-Buoy Presentation Long

What is A/B ?

Page 30: Kevin Frank's Anchor-Buoy Presentation Long

What is A/B ?

• A layout-centric approach to the RG

Page 31: Kevin Frank's Anchor-Buoy Presentation Long

What is A/B ?

• A layout-centric approach to the RG

• that restores the simplicity of 6-style relationships

Page 32: Kevin Frank's Anchor-Buoy Presentation Long

What is A/B ?

• A layout-centric approach to the RG

• that restores the simplicity of 6-style relationships

• without sacrificing the power of 7-style relationships

Page 33: Kevin Frank's Anchor-Buoy Presentation Long

What is A/B ?

• A layout-centric approach to the RG

• that restores the simplicity of 6-style relationships

• without sacrificing the power of 7-style relationships

• [ a brain child of Soliant Consulting ]

Page 34: Kevin Frank's Anchor-Buoy Presentation Long

XX

6

7

Page 35: Kevin Frank's Anchor-Buoy Presentation Long

A Primary Goal of Anchor/Buoy…

Page 36: Kevin Frank's Anchor-Buoy Presentation Long

A Primary Goal of Anchor/Buoy…

Is to make TO’s Is to make TO’s manageable inmanageable inscrolling listsscrolling lists

Page 37: Kevin Frank's Anchor-Buoy Presentation Long

e.g.e.g.

Page 38: Kevin Frank's Anchor-Buoy Presentation Long
Page 39: Kevin Frank's Anchor-Buoy Presentation Long
Page 40: Kevin Frank's Anchor-Buoy Presentation Long

etc.etc.

Page 41: Kevin Frank's Anchor-Buoy Presentation Long
Page 42: Kevin Frank's Anchor-Buoy Presentation Long

One of the biggest areas of confusion for developers making the transition

from FM 6 to FM 7 is…

Page 43: Kevin Frank's Anchor-Buoy Presentation Long

One of the biggest areas of confusion for developers making the transition

from FM 6 to FM 7 is…

Page 44: Kevin Frank's Anchor-Buoy Presentation Long

One of the biggest areas of confusion for developers making the transition

from FM 6 to FM 7 is…

The RelationalThe RelationalGraph (RG)Graph (RG)

Page 45: Kevin Frank's Anchor-Buoy Presentation Long

For one thing… it sometimes superficially resembles an…

Page 46: Kevin Frank's Anchor-Buoy Presentation Long

For one thing… it sometimes superficially resembles an…

Entity-Relationship DiagramEntity-Relationship Diagram

Page 47: Kevin Frank's Anchor-Buoy Presentation Long

But despite the superficial resemblance…

Page 48: Kevin Frank's Anchor-Buoy Presentation Long

But despite the superficial resemblance…

RG RG ERD ERD

Page 49: Kevin Frank's Anchor-Buoy Presentation Long

Of the three Database “Layers”...

Page 50: Kevin Frank's Anchor-Buoy Presentation Long

Data

Of the three Database “Layers”...

Page 51: Kevin Frank's Anchor-Buoy Presentation Long

Data

Business

Of the three Database “Layers”...

Page 52: Kevin Frank's Anchor-Buoy Presentation Long

Data

Business

Presentation

Of the three Database “Layers”...

Page 53: Kevin Frank's Anchor-Buoy Presentation Long

Data

ERDs only describe this layer...

Page 54: Kevin Frank's Anchor-Buoy Presentation Long

Data

Business

Presentation

The RG is essential toall three layers

Page 55: Kevin Frank's Anchor-Buoy Presentation Long

But despite the superficial resemblance…

<digression><digression>

Page 56: Kevin Frank's Anchor-Buoy Presentation Long

This is an ERDThis is an ERD

Page 57: Kevin Frank's Anchor-Buoy Presentation Long
Page 58: Kevin Frank's Anchor-Buoy Presentation Long

FileMaker 7FileMaker 7is a great toolis a great tool

Page 59: Kevin Frank's Anchor-Buoy Presentation Long

……but it’s not the but it’s not the right tool forright tool formaking ERDsmaking ERDs

Page 60: Kevin Frank's Anchor-Buoy Presentation Long

RG RG ERD ERD

Page 61: Kevin Frank's Anchor-Buoy Presentation Long

RG RG ERD ERD…nor does it needto resemble one(even remotely)

Page 62: Kevin Frank's Anchor-Buoy Presentation Long

But despite the superficial resemblance…

</digression></digression>

Page 63: Kevin Frank's Anchor-Buoy Presentation Long

Another reason developers may find the FM7 RG confusing...

Page 64: Kevin Frank's Anchor-Buoy Presentation Long

Another reason developers may find the FM7 RG confusing...

Page 65: Kevin Frank's Anchor-Buoy Presentation Long

Another reason developers may find the FM7 RG confusing...

AND THAT’S PUTTING IT MILDLYAND THAT’S PUTTING IT MILDLY

Page 66: Kevin Frank's Anchor-Buoy Presentation Long
Page 67: Kevin Frank's Anchor-Buoy Presentation Long
Page 68: Kevin Frank's Anchor-Buoy Presentation Long
Page 69: Kevin Frank's Anchor-Buoy Presentation Long
Page 70: Kevin Frank's Anchor-Buoy Presentation Long
Page 71: Kevin Frank's Anchor-Buoy Presentation Long
Page 72: Kevin Frank's Anchor-Buoy Presentation Long
Page 73: Kevin Frank's Anchor-Buoy Presentation Long

=

Page 74: Kevin Frank's Anchor-Buoy Presentation Long

=

Page 75: Kevin Frank's Anchor-Buoy Presentation Long

In FM6: we named these...

Page 76: Kevin Frank's Anchor-Buoy Presentation Long

In FM7: we name these...

Page 77: Kevin Frank's Anchor-Buoy Presentation Long

Some Basic Terminology

Page 78: Kevin Frank's Anchor-Buoy Presentation Long

Some Basic Terminology

Table = “a unique set of records and fields”

Page 79: Kevin Frank's Anchor-Buoy Presentation Long

Some Basic Terminology

Table = “a unique set of records and fields”

a.k.a. Base Table

Page 80: Kevin Frank's Anchor-Buoy Presentation Long

Some Basic Terminology

Table = “a unique set of records and fields”

a.k.a. Base Table

TO = table occurrence

Page 81: Kevin Frank's Anchor-Buoy Presentation Long

Some Basic Terminology

Table = “a unique set of records and fields”

a.k.a. Base Table

TO = table occurrenceMike Harris: TO Table

Page 82: Kevin Frank's Anchor-Buoy Presentation Long

Some Basic Terminology

Table = “a unique set of records and fields”

a.k.a. Base Table

TO = table occurrenceMike Harris: TO Table

TOG = table occurrence group

Page 83: Kevin Frank's Anchor-Buoy Presentation Long

Some Basic Terminology

Table = “a unique set of records and fields”

a.k.a. Base Table

TO = table occurrenceMike Harris: TO Table

TOG = table occurrence groupA discrete collection of TOs

Page 84: Kevin Frank's Anchor-Buoy Presentation Long

Tables

Page 85: Kevin Frank's Anchor-Buoy Presentation Long

TOs

Page 86: Kevin Frank's Anchor-Buoy Presentation Long

TOGs

Page 87: Kevin Frank's Anchor-Buoy Presentation Long

Some Benefits of theFM7 Relational Model

Page 88: Kevin Frank's Anchor-Buoy Presentation Long

• You can access data that is many “hops” away

Some Benefits of theFM7 Relational Model

Page 89: Kevin Frank's Anchor-Buoy Presentation Long

• You can access data that is many “hops” away• Context determines what you see when you look

at related data

Some Benefits of theFM7 Relational Model

Page 90: Kevin Frank's Anchor-Buoy Presentation Long

• You can access data that is many “hops” away• Context determines what you see when you look

at related data• Relationships can be based on multiple

predicates

Some Benefits of theFM7 Relational Model

Page 91: Kevin Frank's Anchor-Buoy Presentation Long

• You can access data that is many “hops” away• Context determines what you see when you look

at related data• Relationships can be based on multiple

predicates• Relational operators are no longer limited to “=”

Some Benefits of theFM7 Relational Model

Page 92: Kevin Frank's Anchor-Buoy Presentation Long

• You can access data that is many “hops” away• Context determines what you see when you look

at related data• Relationships can be based on multiple

predicates• Relational operators are no longer limited to “=”• Developer has great leeway in terms of

relational architecture

Some Benefits of theFM7 Relational Model

Page 93: Kevin Frank's Anchor-Buoy Presentation Long

Benefits, shmenefits!

Page 94: Kevin Frank's Anchor-Buoy Presentation Long

Benefits, shmenefits!

In the good old days...

Page 95: Kevin Frank's Anchor-Buoy Presentation Long

Benefits, shmenefits!

In the good old days...

• I always knew what to call a relationship

Page 96: Kevin Frank's Anchor-Buoy Presentation Long

Benefits, shmenefits!

In the good old days...

• I always knew what to call a relationship• I always knew where to put a relationship

Page 97: Kevin Frank's Anchor-Buoy Presentation Long

Benefits, shmenefits!

In the good old days...

• I always knew what to call a relationship• I always knew where to put a relationship• I could do these things in my sleep!

Page 98: Kevin Frank's Anchor-Buoy Presentation Long

Some Potentially Confusing Aspects of the FM7 Relational Model

Page 99: Kevin Frank's Anchor-Buoy Presentation Long

• Relationships are automatically bi-directional

Some Potentially Confusing Aspects of the FM7 Relational Model

Page 100: Kevin Frank's Anchor-Buoy Presentation Long

• Relationships are automatically bi-directional

– This is great for “data level” (a.k.a. “structural”) relationships, but...

Some Potentially Confusing Aspects of the FM7 Relational Model

Page 101: Kevin Frank's Anchor-Buoy Presentation Long

• Relationships are automatically bi-directional

– This is great for “data level” (a.k.a. “structural”) relationships, but...

– Since most FileMaker relationships are not structural, this is not only undesirable...

Some Potentially Confusing Aspects of the FM7 Relational Model

Page 102: Kevin Frank's Anchor-Buoy Presentation Long

• Relationships are automatically bi-directional

– This is great for “data level” (a.k.a. “structural”) relationships, but...

– Since most FileMaker relationships are not structural, this is not only undesirable...

– But frequently impossible (because a relationship cannot flow in both directions if any of its keys are unstored).

Some Potentially Confusing Aspects of the FM7 Relational Model

Page 103: Kevin Frank's Anchor-Buoy Presentation Long

For example: In a typical FM6 solutiontracking donors and donations...

ID#_Donor

Date

Payment_Type

Amount

ID#

First_Name

Last_Name

< etc. >

Page 104: Kevin Frank's Anchor-Buoy Presentation Long

These are mutually bi-directional

10 relationships from Donors to Donations:

3 relationships from Donations to Donors:

Page 105: Kevin Frank's Anchor-Buoy Presentation Long

These can only be resolved in one direction

10 relationships from Donors to Donations:

3 relationships from Donations to Donors:

Page 106: Kevin Frank's Anchor-Buoy Presentation Long

• Relationships are automatically bi-directional• Since TOs can be approached from either

direction, naming them can be problematic

Some Potentially Confusing Aspects of the FM7 Relational Model

Page 107: Kevin Frank's Anchor-Buoy Presentation Long

• Relationships are automatically bi-directional• Since TOs can be approached from either

direction, naming them can be problematic• You continually need to think about context

Some Potentially Confusing Aspects of the FM7 Relational Model

Page 108: Kevin Frank's Anchor-Buoy Presentation Long

Where am I?Where am I?

Page 109: Kevin Frank's Anchor-Buoy Presentation Long

Where am I starting from?Where am I starting from?

Page 110: Kevin Frank's Anchor-Buoy Presentation Long

Where am I starting from?Where am I starting from?

Where am I going to?Where am I going to?

Page 111: Kevin Frank's Anchor-Buoy Presentation Long
Page 112: Kevin Frank's Anchor-Buoy Presentation Long
Page 113: Kevin Frank's Anchor-Buoy Presentation Long
Page 114: Kevin Frank's Anchor-Buoy Presentation Long

It’s easy to see where you’re going in FM7…

Context is determined by where you start from

Page 115: Kevin Frank's Anchor-Buoy Presentation Long

It’s easy to see where you’re going in FM7…

Context is determined by where you start from

Page 116: Kevin Frank's Anchor-Buoy Presentation Long

Contextual Food for Thought

Page 117: Kevin Frank's Anchor-Buoy Presentation Long

Contextual Food for Thought

What determines “context”?

Page 118: Kevin Frank's Anchor-Buoy Presentation Long

Contextual Food for Thought

What determines “context”?The active TO

Page 119: Kevin Frank's Anchor-Buoy Presentation Long

Contextual Food for Thought

What determines “context”?The active TO

What determines the active TO?

Page 120: Kevin Frank's Anchor-Buoy Presentation Long

Contextual Food for Thought

What determines “context”?The active TO

What determines the active TO?1. The current layout

Page 121: Kevin Frank's Anchor-Buoy Presentation Long
Page 122: Kevin Frank's Anchor-Buoy Presentation Long

Contextual Food for Thought

What determines “context”?The active TO

What determines the active TO?1. The current layout

2. Evaluate this calculation from the context of in Specify Calculation

Page 123: Kevin Frank's Anchor-Buoy Presentation Long
Page 124: Kevin Frank's Anchor-Buoy Presentation Long

Contextual Food for Thought

What determines “context”?The active TO

What determines the active TO?1. The current layout

2. Evaluate this calculation from the context of in Specify Calculation

3. The starting from drop-down in a related value list

Page 125: Kevin Frank's Anchor-Buoy Presentation Long
Page 126: Kevin Frank's Anchor-Buoy Presentation Long

Contextual Food for Thought

What determines “context”?The active TO

What determines the active TO?1. The current layout

2. Evaluate this calculation from the context of in Specify Calculation

3. The starting from drop-down in a related value list

4. The starting with table drop-down in a lookup

Page 127: Kevin Frank's Anchor-Buoy Presentation Long
Page 128: Kevin Frank's Anchor-Buoy Presentation Long

Contextual Food for Thought

What determines “context”?The active TO

What determines the active TO?1. The current layout

2. Evaluate this calculation from the context of in Specify Calculation

3. The starting from drop-down in a related value list

4. The starting with table drop-down in a lookup

Page 129: Kevin Frank's Anchor-Buoy Presentation Long

• Relationships are automatically bi-directional• Since TOs can be approached from either

direction, naming them can be problematic• You continually need to think about context• You will see all related TOs whether they are

relevant or not

Some Potentially Confusing Aspects of the FM7 Relational Model

Page 130: Kevin Frank's Anchor-Buoy Presentation Long
Page 131: Kevin Frank's Anchor-Buoy Presentation Long
Page 132: Kevin Frank's Anchor-Buoy Presentation Long

• Relationships are automatically bi-directional• Since TOs can be approached from either

direction, naming them can be problematic• You continually need to think about context• You will see all related TOs whether they are

relevant or not• The “great leeway in terms of RG architecture”

(which I mentioned previously as a benefit) can cause a decrease in developer productivity...

Some Potentially Confusing Aspects of the FM7 Relational Model

Page 133: Kevin Frank's Anchor-Buoy Presentation Long

• Relationships are automatically bi-directional• Since TOs can be approached from either direction,

naming them can be problematic• You continually need to think about context• You will see all related TOs whether they are relevant

or not• The “great leeway in terms of RG architecture”

(which I mentioned previously as a benefit) can cause a decrease in developer productivity… and or sanity

Some Potentially Confusing Aspects of the FM7 Relational Model

Page 134: Kevin Frank's Anchor-Buoy Presentation Long
Page 135: Kevin Frank's Anchor-Buoy Presentation Long
Page 136: Kevin Frank's Anchor-Buoy Presentation Long
Page 137: Kevin Frank's Anchor-Buoy Presentation Long
Page 138: Kevin Frank's Anchor-Buoy Presentation Long

Initially, a feeling of vertigo, or even existential nausea, is to be expected.

-- Mike Harris, March 2004

Page 139: Kevin Frank's Anchor-Buoy Presentation Long

Hmm… For every TO, I have to decide...

Page 140: Kevin Frank's Anchor-Buoy Presentation Long

Hmm… For every TO, I have to decide...

• What do I call it?

Page 141: Kevin Frank's Anchor-Buoy Presentation Long

Hmm… For every TO, I have to decide...

• What do I call it?• Where do I put it?

Page 142: Kevin Frank's Anchor-Buoy Presentation Long

Hmm… For every TO, I have to decide...

• What do I call it?• Where do I put it?• What color should I make it?

Page 143: Kevin Frank's Anchor-Buoy Presentation Long

I wonder when we’regoing to start

learning about...

???

Page 144: Kevin Frank's Anchor-Buoy Presentation Long

But despite the superficial resemblance…

< now >< now >

Page 145: Kevin Frank's Anchor-Buoy Presentation Long

A/B in a Nutshell

Page 146: Kevin Frank's Anchor-Buoy Presentation Long

• Relational Graph (RG) is divided into TOGs

A/B in a Nutshell

Page 147: Kevin Frank's Anchor-Buoy Presentation Long
Page 148: Kevin Frank's Anchor-Buoy Presentation Long

• Relational Graph (RG) is divided into TOGs• Each TOG consists of one “Anchor” at the left

and any number of “Buoys” strung off rightward

A/B in a Nutshell

Page 149: Kevin Frank's Anchor-Buoy Presentation Long

AnchorsAnchors

BuoysBuoys

Page 150: Kevin Frank's Anchor-Buoy Presentation Long

• Relational Graph (RG) is divided into TOGs• Each TOG consists of one “Anchor” at the left

and any number of “Buoys” strung off rightward• As a general rule, the RG will have one Anchor

per base table

A/B in a Nutshell

Page 151: Kevin Frank's Anchor-Buoy Presentation Long

1 Anchor1 Anchorper baseper base

tabletable

Page 152: Kevin Frank's Anchor-Buoy Presentation Long

• Relational Graph (RG) is divided into TOGs• Each TOG consists of one “Anchor” at the left

and any number of “Buoys” strung off rightward• As a general rule, the RG will have one Anchor

per base table• Layouts are only attached to Anchors

A/B in a Nutshell

Page 153: Kevin Frank's Anchor-Buoy Presentation Long

LayoutsLayoutsXNo LayoutsNo Layouts

Page 154: Kevin Frank's Anchor-Buoy Presentation Long

• Relational Graph (RG) is divided into TOGs• Each TOG consists of one “Anchor” at the left

and any number of “Buoys” strung off rightward• As a general rule, the RG will have one Anchor

per base table• Layouts are only attached to Anchors• RG is restricted to one page in width, but is

allowed to grow as tall as necessary

A/B in a Nutshell

Page 155: Kevin Frank's Anchor-Buoy Presentation Long

Page 1 Page 2

< etc. >

Page 156: Kevin Frank's Anchor-Buoy Presentation Long

• Relational Graph (RG) is divided into TOGs• Each TOG consists of one “Anchor” at the left and any

number of “Buoys” strung off rightward• As a general rule, the RG will have one Anchor per

base table• Layouts are only attached to Anchors• RG is restricted to one page in width, but is allowed to

grow as tall as necessary• Color coding and TO naming conventions are an

integral component of this methodology

A/B in a Nutshell

Page 157: Kevin Frank's Anchor-Buoy Presentation Long

• Relational Graph (RG) is divided into TOGs• Each TOG consists of one “Anchor” at the left and any

number of “Buoys” strung off rightward• As a general rule, the RG will have one Anchor per

base table• Layouts are only attached to Anchors• RG is restricted to one page in width, but is allowed to

grow as tall as necessary• Color coding and TO naming conventions are an

integral component of this methodology

A/B in a Nutshell

Most A/B-ers agree Most A/B-ers agree

on these points...on these points...

Page 158: Kevin Frank's Anchor-Buoy Presentation Long

• Relational Graph (RG) is divided into TOGs• Each TOG consists of one “Anchor” at the left and any

number of “Buoys” strung off rightward• As a general rule, the RG will have one Anchor per

base table• Layouts are only attached to Anchors• RG is restricted to one page in width, but is allowed to

grow as tall as necessary• Color coding and TO naming conventions are an

integral component of this methodology

A/B in a Nutshell

But have minorBut have minor

differences re: differences re:

Page 159: Kevin Frank's Anchor-Buoy Presentation Long

• Relational Graph (RG) is divided into TOGs• Each TOG consists of one “Anchor” at the left and any

number of “Buoys” strung off rightward• As a general rule, the RG will have one Anchor per

base table• Layouts are only attached to Anchors• RG is restricted to one page in width, but is allowed to

grow as tall as necessary• Color coding and TO naming conventions are an

integral component of this methodology

A/B in a Nutshell

But have minorBut have minor

differences re: differences re:

Page 160: Kevin Frank's Anchor-Buoy Presentation Long

Color Coding &Color Coding &TO NamingTO Naming

ConventionsConventions

Page 161: Kevin Frank's Anchor-Buoy Presentation Long

Legend at the top of the RG

Page 162: Kevin Frank's Anchor-Buoy Presentation Long

Legend at the top of the RG

• Color-coded TOs based on a “null” table

Page 163: Kevin Frank's Anchor-Buoy Presentation Long

Legend at the top of the RG

• Color-coded TOs based on a “null” table• Anchors and Buoys colored as per above

Page 164: Kevin Frank's Anchor-Buoy Presentation Long

Legend at the top of the RG

• Color-coded TOs based on a “null” table• Anchors and Buoys colored as per above• Underlying table names spelled out in full

Page 165: Kevin Frank's Anchor-Buoy Presentation Long

Anchor Name

Page 166: Kevin Frank's Anchor-Buoy Presentation Long

• Anchor name is CAPITALIZED

Anchor Name

Page 167: Kevin Frank's Anchor-Buoy Presentation Long

• Anchor name is CAPITALIZED• Anchor name = corresponding base table name

e.g., APPEALS_EVENTS… however...

Anchor Name

Page 168: Kevin Frank's Anchor-Buoy Presentation Long

• Anchor name is CAPITALIZED• Anchor name = corresponding base table name

e.g., APPEALS_EVENTS… however...• Anchor name usually abbreviated, e.g., APPEV

(for a reason that will soon become apparent)

Anchor Name

Page 169: Kevin Frank's Anchor-Buoy Presentation Long

• Anchor name is CAPITALIZED• Anchor name = corresponding base table name

e.g., APPEALS_EVENTS… however...• Anchor name usually abbreviated, e.g., APPEV

(for a reason that will soon become apparent)

Anchor Name

Page 170: Kevin Frank's Anchor-Buoy Presentation Long

• Anchor name is CAPITALIZED• Anchor name = corresponding base table name

e.g., APPEALS_EVENTS… however...• Anchor name usually abbreviated, e.g., APPEV

(for a reason that will soon become apparent)• Confused?

Anchor Name

Page 171: Kevin Frank's Anchor-Buoy Presentation Long

• Anchor name is CAPITALIZED• Anchor name = corresponding base table name

e.g., APPEALS_EVENTS… however...• Anchor name usually abbreviated, e.g., APPEV

(for a reason that will soon become apparent)• Confused? You can always consult the legend...

Anchor Name

Page 172: Kevin Frank's Anchor-Buoy Presentation Long

Buoy Name

Page 173: Kevin Frank's Anchor-Buoy Presentation Long

Buoy Name

Page 174: Kevin Frank's Anchor-Buoy Presentation Long

• First the Anchor name in all lower-case, followed by “_”, e.g., appev_

Buoy Name

Page 175: Kevin Frank's Anchor-Buoy Presentation Long

• First the Anchor name in all lower-case, followed by “_”, e.g., appev_

• Followed by base table abbreviations for any intervening buoys (each separated by an “_”)

Buoy Name

Page 176: Kevin Frank's Anchor-Buoy Presentation Long

• First the Anchor name in all lower-case, followed by “_”, e.g., appev_

• Followed by base table abbreviations for any intervening buoys (each separated by an “_”)

• Followed by the base table name in all CAPS,e.g., appev_don_CON (where CON = Contacts)

Buoy Name

Page 177: Kevin Frank's Anchor-Buoy Presentation Long

If you need to clarify the Buoy name

Page 178: Kevin Frank's Anchor-Buoy Presentation Long

• Append two underscores: “__”

If you need to clarify the Buoy name

Page 179: Kevin Frank's Anchor-Buoy Presentation Long

• Append two underscores: “__”• Followed by a lower-case explanation

If you need to clarify the Buoy name

Page 180: Kevin Frank's Anchor-Buoy Presentation Long

• Append two underscores: “__”• Followed by a lower-case explanation• E.g., I wanted to indicate that this particular

buoy was linked via a field called “Country”

If you need to clarify the Buoy name

Page 181: Kevin Frank's Anchor-Buoy Presentation Long

• Append two underscores: “__”• Followed by a lower-case explanation• E.g., I wanted to indicate that this particular

buoy was linked via a field called “Country”

• And this buoy was used to filter a value list

If you need to clarify the Buoy name

Page 182: Kevin Frank's Anchor-Buoy Presentation Long

Abbreviated Anchor Names...

Page 183: Kevin Frank's Anchor-Buoy Presentation Long

Abbreviated Anchor Names...

Page 184: Kevin Frank's Anchor-Buoy Presentation Long

Abbreviated Anchor Names...

…ensure that an anchor precedes its buoys in sortedTO lists

Page 185: Kevin Frank's Anchor-Buoy Presentation Long

Some Benefits of the A/B Method

Page 186: Kevin Frank's Anchor-Buoy Presentation Long

Some Benefits of the A/B Method

• As in FM6, relationships are unidirectional, and flow from left to right, which means...

Page 187: Kevin Frank's Anchor-Buoy Presentation Long

Some Benefits of the A/B Method

• As in FM6, relationships are unidirectional, and flow from left to right, which means...

• You only deal with related data that is “down-stream” from wherever you happen to be

Page 188: Kevin Frank's Anchor-Buoy Presentation Long

From this layout...

Page 189: Kevin Frank's Anchor-Buoy Presentation Long

From this layout...

…which is anchoredto this TO

Page 190: Kevin Frank's Anchor-Buoy Presentation Long

Donor Name comes from here...

Page 191: Kevin Frank's Anchor-Buoy Presentation Long

Some Benefits of the A/B Method

• As in FM6, relationships are only ever thought of as flowing from left to right, and...

• You only deal with related data that is “down-stream” from wherever you happen to be

• Calculated fields and lookups always “start” from the correct TO

Page 192: Kevin Frank's Anchor-Buoy Presentation Long

No need to makeNo need to makeany changes hereany changes here

Page 193: Kevin Frank's Anchor-Buoy Presentation Long

……or hereor here

Page 194: Kevin Frank's Anchor-Buoy Presentation Long

Some Benefits of the A/B Method

• As in FM6, relationships are only ever thought of as flowing from left to right, and...

• You only deal with related data that is “down-stream” from wherever you happen to be

• Calculated fields and lookups always “start” from the correct TO

• You only see relevant TOs under “related tables”

Page 195: Kevin Frank's Anchor-Buoy Presentation Long

…ad infinitum

In A/B, “Related” TOsare “Relevant” TOs

Page 196: Kevin Frank's Anchor-Buoy Presentation Long

Some Benefits of the A/B Method

• As in FM6, relationships are only ever thought of as flowing from left to right

• You only deal with related data that is “down-stream” from wherever you happen to be

• Calculated fields and lookups always “start” from the correct TO

• You only see relevant TOs under “related tables”• TOGs are analogous to FM6 relationship lists

Page 197: Kevin Frank's Anchor-Buoy Presentation Long
Page 198: Kevin Frank's Anchor-Buoy Presentation Long

Some Benefits of the A/B Method• As in FM6, relationships are only ever thought of as

flowing from left to right• You only deal with related data that is “down-stream”

from wherever you happen to be• Calculated fields and lookups always “start” from the

correct TO• You only see relevant TOs under “related tables”• TOGs are analogous to FM6 relationship lists• You always know what to call a TO, where to put it and

what color to make it

Page 199: Kevin Frank's Anchor-Buoy Presentation Long

I’m confused --

Page 200: Kevin Frank's Anchor-Buoy Presentation Long

I’m confused --

If my RG is brokeninto separate TOGs,how do I navigatebetween them?

Page 201: Kevin Frank's Anchor-Buoy Presentation Long

I’m confused --

If my RG is brokeninto separate TOGs,how do I navigatebetween them?

For example...How do I jump froma donation to theparent donor?

Page 202: Kevin Frank's Anchor-Buoy Presentation Long

Grab your board &Grab your board &wetsuit, becausewetsuit, becauseit’s time to go...it’s time to go...

Page 203: Kevin Frank's Anchor-Buoy Presentation Long

TOG SurfingTOG Surfing

Page 204: Kevin Frank's Anchor-Buoy Presentation Long

To jump from a donation tothe corresponding donor

Page 205: Kevin Frank's Anchor-Buoy Presentation Long

To jump from a donation tothe corresponding donor

From theAnchor...

Page 206: Kevin Frank's Anchor-Buoy Presentation Long

GTRR to the desired Buoy...

Page 207: Kevin Frank's Anchor-Buoy Presentation Long

GTRR to the desired Buoy...

Page 208: Kevin Frank's Anchor-Buoy Presentation Long

…but choose a layout attachedto the corresponding Anchor

Page 209: Kevin Frank's Anchor-Buoy Presentation Long

This works because…

AND

…share a common base table

Page 210: Kevin Frank's Anchor-Buoy Presentation Long

This works because…

AND

…share a common base table

Page 211: Kevin Frank's Anchor-Buoy Presentation Long

But despite the superficial resemblance…

< demo break >< demo break >

Page 212: Kevin Frank's Anchor-Buoy Presentation Long

One Very Important Point

Page 213: Kevin Frank's Anchor-Buoy Presentation Long

• Whether starting an A/B project from scratch, or converting an existing project to A/B...

One Very Important Point

Page 214: Kevin Frank's Anchor-Buoy Presentation Long

• Whether starting an A/B project from scratch, or converting an existing project to A/B...

• Identify your natural anchors!

One Very Important Point

Page 215: Kevin Frank's Anchor-Buoy Presentation Long

• Whether starting an A/B project from scratch, or converting an existing project to A/B...

• Identify your natural anchors!– All TO’s are not created equal

One Very Important Point

Page 216: Kevin Frank's Anchor-Buoy Presentation Long

• Whether starting an A/B project from scratch, or converting an existing project to A/B...

• Identify your natural anchors!– All TO’s are not created equal– The first TO created for a given base table should

always be used as the anchor

One Very Important Point

Page 217: Kevin Frank's Anchor-Buoy Presentation Long

• Whether starting an A/B project from scratch, or converting an existing project to A/B...

• Identify your natural anchors!– All TO’s are not created equal– The first TO created for a given base table should

always be used as the anchor– (if the first TO has been deleted, then use the oldest

surviving TO for that base table)

One Very Important Point

Page 218: Kevin Frank's Anchor-Buoy Presentation Long

• Whether starting an A/B project from scratch, or converting an existing project to A/B...

• Identify your natural anchors!– All TO’s are not created equal– The first TO created for a given base table should

always be used as the anchor– (if the first TO has been deleted, then use the oldest

surviving TO for that base table)– This guarantees that calculated fields and lookups

always “start” from the correct TO

One Very Important Point

Page 219: Kevin Frank's Anchor-Buoy Presentation Long

• Whether starting an A/B project from scratch, or converting an existing project to A/B...

• Identify your natural anchors!– All TO’s are not created equal– The first TO created for a given base table should always be

used as the anchor– (if the first TO has been deleted, then use the oldest

surviving TO for that base table)– This guarantees that calculated fields and lookups always

“start” from the correct TO– Otherwise you sacrifice a big benefit of using A/B

One Very Important Point

Page 220: Kevin Frank's Anchor-Buoy Presentation Long

Addressing Common Concerns...

The RG is too busy

Page 221: Kevin Frank's Anchor-Buoy Presentation Long

Addressing Common Concerns...

The RG is too busyIt’s a small price to pay. TOs are cheap.An out-of-control graph is busy too.

Page 222: Kevin Frank's Anchor-Buoy Presentation Long

Addressing Common Concerns...

The RG is too busyIt’s a small price to pay. TOs are cheap.An out-of-control graph is busy too.

The RG is too big

Page 223: Kevin Frank's Anchor-Buoy Presentation Long

Addressing Common Concerns...

The RG is too busyIt’s a small price to pay. TOs are cheap.An out-of-control graph is busy too.

The RG is too bigGraph space is unlimited.

Page 224: Kevin Frank's Anchor-Buoy Presentation Long

Addressing Common Concerns...

The RG is too busyIt’s a small price to pay. TOs are cheap.An out-of-control graph is busy too.

The RG is too bigGraph space is unlimited.

I hate the criss-crossing lines -- I can’t find the “=” when I need to edit a relationship

Page 225: Kevin Frank's Anchor-Buoy Presentation Long

Addressing Common Concerns...

The RG is too busyIt’s a small price to pay. TOs are cheap.An out-of-control graph is busy too.

The RG is too bigGraph space is unlimited.

I hate the criss-crossing lines -- I can’t find the “=” when I need to edit a relationship

You can double-click anywhere on thediagonal portion of the relationship line.

Page 226: Kevin Frank's Anchor-Buoy Presentation Long

Addressing Common Concerns...

The RG doesn’t look like an ERD

Page 227: Kevin Frank's Anchor-Buoy Presentation Long

Addressing Common Concerns...

The RG doesn’t look like an ERDRG ERD; if you need an ERD there are any number of programs that can generate one.

Page 228: Kevin Frank's Anchor-Buoy Presentation Long

• Park unused TOs at the bottom of the RG• These little guys are either buoy-less anchors, or

special-purpose TOs

Miscellaneous Thought #1

Page 229: Kevin Frank's Anchor-Buoy Presentation Long

• Create separate TOGs to keep track of relational deletion dependencies

• This has nothing to do with A/B, per se

Miscellaneous Thought #2

Page 230: Kevin Frank's Anchor-Buoy Presentation Long

Since adopting A/B...

Page 231: Kevin Frank's Anchor-Buoy Presentation Long

Since adopting A/B...

• I always know what to call a TO

Page 232: Kevin Frank's Anchor-Buoy Presentation Long

Since adopting A/B...

• I always know what to call a TO• I always know where to put a TO

Page 233: Kevin Frank's Anchor-Buoy Presentation Long

Since adopting A/B...

• I always know what to call a TO• I always know where to put a TO• I always know what color to make it

Page 234: Kevin Frank's Anchor-Buoy Presentation Long

Since adopting A/B...

• I always know what to call a TO• I always know where to put a TO• I always know what color to make it• I can do it in my sleep!

Page 235: Kevin Frank's Anchor-Buoy Presentation Long

< the end >< the end >