Project: tableName: projects columns: id: { type: integer, primary: true } name: { type: string(255) } created_on: { type: timestamp } status: { type: string(255) } last_changed_on: { type: timestamp } company_id: { foreignClass: Company, foreignName: company, localName: projects } company_name: { type: string(255) } announcement: { type: string } start_page: { type: string(255) } show_writeboards: { type: boolean } show_announcement: { type: boolean } Milestone: tableName: milestones columns: id: { type: integer, primary: true } title: { type: string(255) } deadline: { type: date } completed: { type: boolean } project_id: { foreignClass: Project, foreignName: project, localName: milestones } created_on: { type: timestamp } creator_id: { foreignClass: Person, foreignName: creator, localName: authored_milestones } completed_on: { type: timestamp } completer_id: { foreignClass: Person, foreignName: completer, localName: completed_milestones } CompanyMilestone: inheritance: { extends: Milestone, keyField: oType, keyValue: 1 } responsible_party_id: { foreignClass: Company, ForeignName: responsible_company, localName: milestones } PersonMilestone: inheritance: { extends: Milestone, keyField: oType, keyValue: 1 } responsible_party_id: { foreignClass: Person, ForeignName: responsible_person, localName: milestones } Entity: tableName: entities column: oType: integer name: ... address: ... ... other common fields ... Company: inheritance: { extends: Entity, keyField: oType, keyValue: 1 } columns: ... specific columns ... web_address: { type: string(255) } url_name: { type: string(255) } Person: inheritance: { extends: Entity, keyField: oType, keyValue: 2 } columns: ... specific columns ... title: { type: string(255) }