Creating a Relationship Object

Relationship Objects are created in the dbobject.createTables handler of the button object script that is assigned to the table objects behavior property of the Database object. If you are not familiar with the table objects behavior property please see this lesson.

Create A Table Object

Here is an example how to create a Relationship objects between three tables: "projects", "todo_items" and "people".

"projects" has a one-to-many relationship with "todo_items". "todo_items" has a many-to-many relationship with "people".

on dbobject.createTables

## Create Table Objects

tableobj_createObject "projects"

tableobj_createObject "todo_items"

tableobj_createObject "people"

## Now that table objects exist create relationships

_CreateRelationships

end dbobject.createTables

private command _CreateRelationships

----------

## Define one-to-many relationship between projects and to-do items

tblrelation_createObject "projects to todo items"

tblrelation_set "projects to todo items", "type", "one-to-many"

## Tell SQL Yoga which fields link the tables together

tblrelation_set "projects to todo items", "left table", "projects"

tblrelation_set "projects to todo items", "left table key", "id"

tblrelation_set "projects to todo items", "right table", "todo_items"

tblrelation_set "projects to todo items", "right table key", "project_id"

## Tell SQL Yoga how to order the results when retrieving todo items

## that are linked to projects.

tblrelation_set "projects to todo items", "order by", "todo_items.sequence"

----------

----------

## Define relationship between people and to-do items

tblrelation_createObject "people to todo items"

tblrelation_set "people to todo items", "type", "many-to-many"

## Tell SQL Yoga which fields link the tables together

tblrelation_set "people to todo items", "left table", "people"

tblrelation_set "people to todo items", "left table key", "id"

## many-to-many relationships need to go through a 3rd table. Tell SQL Yoga about it.

tblrelation_set "people to todo items", "cross-reference table", "people_todo"

tblrelation_set "people to todo items", "cross-reference table key for left table", "people_id"

tblrelation_set "people to todo items", "cross-reference table key for right table", "todo_id"

tblrelation_set "people to todo items", "right table", "todo_items"

tblrelation_set "people to todo items", "right table key", "id"

## Tell SQL Yoga how to order the results when retrieving people

## that are linked to todo items.

tblrelation_set "people to todo items", "order by", "todo_items.name"

----------

end _CreateRelationships

0 Comments

Add your comment

E-Mail me when someone replies to this comment