SlideShare una empresa de Scribd logo
1 de 11
Object Relational Mapping in ]po[ The ]project-open[ Data-Model , Frank Bergmann,  2010-09-22 This tutorial explains how the ]po[ data-model represents the is-a inheritance relationship of object types.
The Problem: Mapping Objects into Tables ,[object Object],[object Object],[object Object],[object Object],[object Object],Project project_name customer_id … T imesheet T asks material_id . . . planned_units billable_units ticket_sla_id T icket ticket_status_id ticket_type_id . . . last_modified object_type O bject (Part of the ]po[ object model.Timesheet  Task and Ticket are sub-types of Project.)
Classical Relational Model ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],last_modified object_type o bject s projects project_name customer_id … last_modified ticket_sla_id t icket s ticket_status_id ticket_type_id . . . project_name customer_id last_modified t imesheet _t asks material_id . . . planned_units billable_units project_name customer_id last_modified
]po[ Object Relational Model ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],project_id projects project_name customer_id … task_id timesheet_ tasks material_id . . . planned_units billable_units ticket_id ticket_sla_id tickets ticket_status_id ticket_type_id . . . object_type objects object_id
Additional Advantages of the ]po[ Object Model ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],project_id im_ projects project_name customer_id … task_id im_ timesheet_ tasks material_id . . . planned_units billable_units ticket_id ticket_sla_id im_ tickets ticket_status_id ticket_type_id . . . object_type acs_ objects object_id (The actual names of the tables. The “acs_” prefix indicates “core” tables, while “im_” stands for “Intranet” tables (the prefix “in_” was taken already))
The acs_objects Table ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Column  |  Type  |  Modifiers -------------------+--------------------------+---------------------- object_id  | integer  | not null object_type  | character varying(100)  | not null context_id  | integer  | creation_user  | integer  | creation_date  | timestamp with time zone | not null default now() creation_ip  | character varying(50)  | last_modified  | timestamp with time zone | not null default now() modifying_user  | integer  | modifying_ip  | character varying(50)  | tree_sortkey  | bit varying  | not null max_child_sortkey  | bit varying  | last_audit_id  | integer  | ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
]po[ Data-Model object_id im_biz_objects object_id object_type acs_objects group_id group_name groups profile_id profile_gif im_profiles users_ contact <Home Address> <Work Address> im_employees <Payroll Info> <Recruiting Info> party_id email url persons person_id first_names last_name users user_id username password … company_id im_companies main_office_id company_name status_id type_id … office_id <Address> im_offices office_status_id office_type_id company_id cost_center_id cost_center_name im_cost_centers cost_center_code department_p im_costs cost_id cost_name cost_nr project_id customer_id provider_id cost_status_id cost_type_id effective_date_id payment_days amount currency tax vat … cost_center_id invoice_id contact_id im_invoices invoice_nr office_id item_id item_name im_invoice_items project_id invoice_id item_units item_uom_id price_per_unit currency sort_order item_type_id item_status_id description payment_id cost_id im_payments company_id provider_id amount expense_id ext_company im_expenses ext_vat_number billable_p … bundle_id material_id … im_materials material_name material_uom_id task_id_one im_ts_ task_deps. task_id_two depend._type difference hardness task_id invoice_id im_timesheet_tasks material_id uom_id planned_units billable_units cost_center_id priority price_id uom_id im_timesheet_prices company_id task_type_id material_id price project_id im_projects project_lead_id project_name project_status_id project_type_id supervisor_id project_nr project_path customer_id start_date end_date … … … Main Business Objects Gantt, Timesheet & Helpdesk user_id im_hours project_id day hours … Users & Groups Financials rel_id object_id_one acs_rels object_id_two rel_id sort_order im_ticket_ticket_rel ticket_id ticket_sla_id im_tickets ticket_status_id ticket_type_id ticket_prio_id ticket_contact_id ticket_assignee_id ticket_queue_id . . . bundle_id im_expense_bundle <Type Info> object_type acs_ object_types SQL Meta-Data System Permission System acs_permssions object_id grantee_id privilege acs_privilege privilege pretty_name context_id <Audit info> … attribute_id acs_attributes object_type pretty_name … attribute_id im_dynfieldattributes widget_name parties
Exercises ,[object Object],[object Object]
Exercise 1: Getting all fields of a Ticket ,[object Object],[object Object],SELECT * FROM acs_objects o, im_projects  p,   im_tickets t WHERE o.object_id = p.project_id and o.object_id = t.ticket_id and o.object_id = 12345; project_id im_ projects project_name customer_id … task_id im_ timesheet_ tasks material_id . . . planned_units billable_units ticket_id ticket_sla_id im_ tickets ticket_status_id ticket_type_id . . . object_type acs_ objects object_id
Exercise 2: Getting all Fields of a User ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],object_id object_type acs_objects users_ contact <Home Address> <Work Address> im_employees <Payroll Info> <Recruiting Info> parties party_id email url users user_id username password … SELECT o.*, pa.*, pe.*, u.*, e.*, uc.* FROM acs_objects o, parties pa, persons pe, users u, im_employees e, users_contact uc WHERE o.object_id = pa.party_id and o.object_id = pe.person_id and o.object_id = u.user_id and o.object_id = e.employee_id and o.object_id = uc.user_id; group_id group_name groups persons person_id first_names last_name
Frank Bergmann [email_address] www.project-open.com

Más contenido relacionado

Más de Klaus Hofeditz

]project-open[ on Amazon AWS
]project-open[ on Amazon AWS]project-open[ on Amazon AWS
]project-open[ on Amazon AWSKlaus Hofeditz
 
Tutorial: Writing Sencha Touch Mobile Apps using ]project-open[
Tutorial: Writing Sencha Touch Mobile Apps using ]project-open[Tutorial: Writing Sencha Touch Mobile Apps using ]project-open[
Tutorial: Writing Sencha Touch Mobile Apps using ]project-open[Klaus Hofeditz
 
]project-open[ Data-Model 100511b
]project-open[ Data-Model 100511b]project-open[ Data-Model 100511b
]project-open[ Data-Model 100511bKlaus Hofeditz
 
]project-open[ Screenshots
]project-open[ Screenshots ]project-open[ Screenshots
]project-open[ Screenshots Klaus Hofeditz
 
]project-open[ CVS+ACL Permission Configuration
]project-open[ CVS+ACL Permission Configuration]project-open[ CVS+ACL Permission Configuration
]project-open[ CVS+ACL Permission ConfigurationKlaus Hofeditz
 
Po workflow-tutorial-1-overview.100603
Po workflow-tutorial-1-overview.100603Po workflow-tutorial-1-overview.100603
Po workflow-tutorial-1-overview.100603Klaus Hofeditz
 
]project-open[ Reporting & Indicators Options
]project-open[ Reporting & Indicators Options]project-open[ Reporting & Indicators Options
]project-open[ Reporting & Indicators OptionsKlaus Hofeditz
 
]project-open[ Workflow Developer Tutorial Part 4
]project-open[ Workflow Developer Tutorial Part 4]project-open[ Workflow Developer Tutorial Part 4
]project-open[ Workflow Developer Tutorial Part 4Klaus Hofeditz
 
]project-open[ Workflow Developer Tutorial Part 3
]project-open[ Workflow Developer Tutorial Part 3]project-open[ Workflow Developer Tutorial Part 3
]project-open[ Workflow Developer Tutorial Part 3Klaus Hofeditz
 
]project-open[ Workflow Developer Tutorial Part 2
]project-open[ Workflow Developer Tutorial Part 2]project-open[ Workflow Developer Tutorial Part 2
]project-open[ Workflow Developer Tutorial Part 2Klaus Hofeditz
 
]project-open[ Workflow Developer Tutorial Part 1
]project-open[ Workflow Developer Tutorial Part 1]project-open[ Workflow Developer Tutorial Part 1
]project-open[ Workflow Developer Tutorial Part 1Klaus Hofeditz
 
]project-open[ Reporting & Indicators Options
]project-open[ Reporting & Indicators Options]project-open[ Reporting & Indicators Options
]project-open[ Reporting & Indicators OptionsKlaus Hofeditz
 
]project-open[ Package Manager
]project-open[ Package Manager]project-open[ Package Manager
]project-open[ Package ManagerKlaus Hofeditz
 
]project-open[ My First Package
]project-open[ My First Package]project-open[ My First Package
]project-open[ My First PackageKlaus Hofeditz
 
]project-open[ Data-Model “Categories”
]project-open[ Data-Model “Categories”]project-open[ Data-Model “Categories”
]project-open[ Data-Model “Categories”Klaus Hofeditz
 
]project-open[ Roll Out Plan
]project-open[ Roll Out Plan]project-open[ Roll Out Plan
]project-open[ Roll Out PlanKlaus Hofeditz
 
]project-open[ Timesheet Project Invoicing
]project-open[ Timesheet Project Invoicing]project-open[ Timesheet Project Invoicing
]project-open[ Timesheet Project InvoicingKlaus Hofeditz
 
]project-open[ OSS Project Mangement
]project-open[ OSS Project Mangement]project-open[ OSS Project Mangement
]project-open[ OSS Project MangementKlaus Hofeditz
 

Más de Klaus Hofeditz (18)

]project-open[ on Amazon AWS
]project-open[ on Amazon AWS]project-open[ on Amazon AWS
]project-open[ on Amazon AWS
 
Tutorial: Writing Sencha Touch Mobile Apps using ]project-open[
Tutorial: Writing Sencha Touch Mobile Apps using ]project-open[Tutorial: Writing Sencha Touch Mobile Apps using ]project-open[
Tutorial: Writing Sencha Touch Mobile Apps using ]project-open[
 
]project-open[ Data-Model 100511b
]project-open[ Data-Model 100511b]project-open[ Data-Model 100511b
]project-open[ Data-Model 100511b
 
]project-open[ Screenshots
]project-open[ Screenshots ]project-open[ Screenshots
]project-open[ Screenshots
 
]project-open[ CVS+ACL Permission Configuration
]project-open[ CVS+ACL Permission Configuration]project-open[ CVS+ACL Permission Configuration
]project-open[ CVS+ACL Permission Configuration
 
Po workflow-tutorial-1-overview.100603
Po workflow-tutorial-1-overview.100603Po workflow-tutorial-1-overview.100603
Po workflow-tutorial-1-overview.100603
 
]project-open[ Reporting & Indicators Options
]project-open[ Reporting & Indicators Options]project-open[ Reporting & Indicators Options
]project-open[ Reporting & Indicators Options
 
]project-open[ Workflow Developer Tutorial Part 4
]project-open[ Workflow Developer Tutorial Part 4]project-open[ Workflow Developer Tutorial Part 4
]project-open[ Workflow Developer Tutorial Part 4
 
]project-open[ Workflow Developer Tutorial Part 3
]project-open[ Workflow Developer Tutorial Part 3]project-open[ Workflow Developer Tutorial Part 3
]project-open[ Workflow Developer Tutorial Part 3
 
]project-open[ Workflow Developer Tutorial Part 2
]project-open[ Workflow Developer Tutorial Part 2]project-open[ Workflow Developer Tutorial Part 2
]project-open[ Workflow Developer Tutorial Part 2
 
]project-open[ Workflow Developer Tutorial Part 1
]project-open[ Workflow Developer Tutorial Part 1]project-open[ Workflow Developer Tutorial Part 1
]project-open[ Workflow Developer Tutorial Part 1
 
]project-open[ Reporting & Indicators Options
]project-open[ Reporting & Indicators Options]project-open[ Reporting & Indicators Options
]project-open[ Reporting & Indicators Options
 
]project-open[ Package Manager
]project-open[ Package Manager]project-open[ Package Manager
]project-open[ Package Manager
 
]project-open[ My First Package
]project-open[ My First Package]project-open[ My First Package
]project-open[ My First Package
 
]project-open[ Data-Model “Categories”
]project-open[ Data-Model “Categories”]project-open[ Data-Model “Categories”
]project-open[ Data-Model “Categories”
 
]project-open[ Roll Out Plan
]project-open[ Roll Out Plan]project-open[ Roll Out Plan
]project-open[ Roll Out Plan
 
]project-open[ Timesheet Project Invoicing
]project-open[ Timesheet Project Invoicing]project-open[ Timesheet Project Invoicing
]project-open[ Timesheet Project Invoicing
 
]project-open[ OSS Project Mangement
]project-open[ OSS Project Mangement]project-open[ OSS Project Mangement
]project-open[ OSS Project Mangement
 

Po dev-data-model-object relationalmapping.100926a

  • 1. Object Relational Mapping in ]po[ The ]project-open[ Data-Model , Frank Bergmann, 2010-09-22 This tutorial explains how the ]po[ data-model represents the is-a inheritance relationship of object types.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7. ]po[ Data-Model object_id im_biz_objects object_id object_type acs_objects group_id group_name groups profile_id profile_gif im_profiles users_ contact <Home Address> <Work Address> im_employees <Payroll Info> <Recruiting Info> party_id email url persons person_id first_names last_name users user_id username password … company_id im_companies main_office_id company_name status_id type_id … office_id <Address> im_offices office_status_id office_type_id company_id cost_center_id cost_center_name im_cost_centers cost_center_code department_p im_costs cost_id cost_name cost_nr project_id customer_id provider_id cost_status_id cost_type_id effective_date_id payment_days amount currency tax vat … cost_center_id invoice_id contact_id im_invoices invoice_nr office_id item_id item_name im_invoice_items project_id invoice_id item_units item_uom_id price_per_unit currency sort_order item_type_id item_status_id description payment_id cost_id im_payments company_id provider_id amount expense_id ext_company im_expenses ext_vat_number billable_p … bundle_id material_id … im_materials material_name material_uom_id task_id_one im_ts_ task_deps. task_id_two depend._type difference hardness task_id invoice_id im_timesheet_tasks material_id uom_id planned_units billable_units cost_center_id priority price_id uom_id im_timesheet_prices company_id task_type_id material_id price project_id im_projects project_lead_id project_name project_status_id project_type_id supervisor_id project_nr project_path customer_id start_date end_date … … … Main Business Objects Gantt, Timesheet & Helpdesk user_id im_hours project_id day hours … Users & Groups Financials rel_id object_id_one acs_rels object_id_two rel_id sort_order im_ticket_ticket_rel ticket_id ticket_sla_id im_tickets ticket_status_id ticket_type_id ticket_prio_id ticket_contact_id ticket_assignee_id ticket_queue_id . . . bundle_id im_expense_bundle <Type Info> object_type acs_ object_types SQL Meta-Data System Permission System acs_permssions object_id grantee_id privilege acs_privilege privilege pretty_name context_id <Audit info> … attribute_id acs_attributes object_type pretty_name … attribute_id im_dynfieldattributes widget_name parties
  • 8.
  • 9.
  • 10.
  • 11. Frank Bergmann [email_address] www.project-open.com