1 odmg. 2 object database management group (odmg) odmg has been formed in late 1991 by:...
DESCRIPTION
3 ODMG Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign, Ontos, O2 Technology, Versant, Objectivity, Digital Equipment, Hewlett-Packard, Itasca, Intellitic, Poet Software, Servio, Texas Instruments R.G.C. Cattell The Object Database Standard : ODMG, Release 1.2, 1996 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign, Ontos, O2 Technology, Versant, Objectivity, Digital Equipment, Hewlett-Packard, Itasca, Intellitic, Poet Software, Servio, Texas Instruments R.G.C. Cattell The Object Database Standard : ODMG, Release 1.2, 1996TRANSCRIPT
![Page 1: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/1.jpg)
1
ODMG
![Page 2: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/2.jpg)
2
ODMG• Object Database Management Group
(ODMG)ODMG has been formed in late 1991 by:
ObjectDesign, Ontos, O2 Technology, Versant, Objectivity, Digital Equipment, Hewlett-Packard, Itasca, Intellitic, Poet Software, Servio, Texas Instruments
![Page 3: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/3.jpg)
3
ODMG• Object Database Management Group
(ODMG)ODMG has been formed in late 1991 by:
ObjectDesign, Ontos, O2 Technology, Versant, Objectivity, Digital Equipment, Hewlett-Packard, Itasca, Intellitic, Poet Software, Servio, Texas Instruments
R.G.C. Cattell The Object Database Standard : ODMG, Release 1.2, 1996
![Page 4: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/4.jpg)
4
ODMG• Object Database Management Group
(ODMG)ODMG has been formed in late 1991 by:
ObjectDesign, Ontos, O2 Technology, Versant, Objectivity, Digital Equipment, Hewlett-Packard, Itasca, Intellitic, Poet Software, Servio, Texas Instruments
R.G.C. Cattell The Object Database Standard : ODMG, Release 1.2, 1996
R.G.C. Cattell, D.K. Barry The Object Database Standard: ODMG 2.0, 1997
![Page 5: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/5.jpg)
5
ODMG• Aims
To put forward a set of standards allowing an ODBMS customer to write portable applications, i.e. application that could run on more than one ODBMS
![Page 6: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/6.jpg)
6
ODMG• ODMG versus Relational DBMS
![Page 7: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/7.jpg)
7
ODMG• ODMG versus Relational DBMS
Application Data Structures
Relational Representation
RDBMS
Copy and Translation Transparent
ODBMS Data Transfer
![Page 8: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/8.jpg)
8
ODMG• Architecture
![Page 9: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/9.jpg)
9
ODMG• Architecture
Declarations in ODL or Programming Language ODL
Declaration Preprocessor
metadata
Database
Application Source in extended Programming Language
Programming Language Compiler
Application Binaries
Linker
Running ApplicationData Access
OO DBMS Runtime
Fig. 1 ODMG DBMS Architecture
![Page 10: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/10.jpg)
10
ODMG• Components
![Page 11: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/11.jpg)
11
ODMG• Components
FrameworkA portion of ODMG that is common to all programming languages
![Page 12: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/12.jpg)
12
ODMG• Components
FrameworkA portion of ODMG that is common to all programming languages
Framework consist of:
»Object Model
»Object Definition Language
»Object Query Language
![Page 13: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/13.jpg)
13
ODMG• Components
Bindings
Bindings for each programming language in which ODBMS is used (currently: C++, Smalltalk)
![Page 14: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/14.jpg)
14
ODMG• Basic concepts
![Page 15: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/15.jpg)
15
ODMG• Basic concepts
The model is based on objects with object identifiers
![Page 16: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/16.jpg)
16
ODMG• Basic concepts
The model is based on objects with object identifiers
Objects are categorised into types
![Page 17: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/17.jpg)
17
ODMG• Basic concepts
The model is based on objects with object identifiers
Objects are categorised into types
The behaviour of objects is defined by a set of operations
![Page 18: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/18.jpg)
18
ODMG• Basic concepts
The model is based on objects with object identifiers
Objects are categorised into types
The behaviour of objects is defined by a set of operations
The state of objects is determined by a set of properties (attributes, relationships)
![Page 19: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/19.jpg)
19
ODMG• Basic concepts
Each object may have a unique name
![Page 20: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/20.jpg)
20
ODMG• Basic concepts
Each object may have a unique name
Operations are defined by operation signatures
![Page 21: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/21.jpg)
21
ODMG• Basic concepts
Each object may have a unique name
Operations are defined by operation signatures
Attributes are defined by attribute signatures
![Page 22: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/22.jpg)
22
ODMG• Basic concepts
Each object may have a unique name
Operations are defined by operation signatures
Attributes are defined by attribute signatures
Relationships are specified by relationship signatures
![Page 23: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/23.jpg)
23
ODMG• Basic concepts
Collection types include sets, bags, lists and arrays
![Page 24: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/24.jpg)
24
ODMG• Basic concepts
Collection types include sets, bags, lists and arrays
Object types are related in subtype/supertype graph
![Page 25: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/25.jpg)
25
ODMG• Basic concepts
Collection types include sets, bags, lists and arrays
Object types are related in subtype/supertype graph
An extent set can be declared to contain all instances of a given type
![Page 26: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/26.jpg)
26
ODMG• Basic concepts
Individual instances can be uniquely identified by the value they carry for some property or set of properties (keys)
![Page 27: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/27.jpg)
27
ODMG• Type hierarchy
![Page 28: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/28.jpg)
28
ODMG• Type hierarchy Denotable Object
Object Literal
Atomic Object Structured Object Atomic LiteralStructured Literal
Type
Exception
Iterator
Collection<T>
Structure <e1:T1,..., en:Tn>
Set<T> Bag<T> List<T>Array<T>
String Bit String
IntegerCharacter
BooleanFloat
Immutable Sructure <e1:T1,..., en:Tn>
Immutable Collection<T>
Immutable Set<T>
Immutable List<T>
Immutable String
Immutable Bit String
Immutable Bag<T>
Immutable Array<T>
enumeration
DateTime
Date Time
Interval
Fig. 2 The ODMG type hierarchy
![Page 29: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/29.jpg)
29
ODMG• Object Definition Language
![Page 30: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/30.jpg)
30
ODMG• Object Definition Language
Employee
TeachingAssistant Professor
Section
Student
Course
teaches
is taught by
assists
has TA
has prerequisites
is prerequisite
belongs to
consists of
has
of
![Page 31: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/31.jpg)
31
ODMG• Object Definition Language
interface Course( extent courses
keys name, number )
![Page 32: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/32.jpg)
32
ODMG• Object Definition Language
interface Course( extent courses
keys name, number ){
attribute String name;attribute String number;
![Page 33: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/33.jpg)
33
ODMG• Object Definition Language
interface Course( extent courses
keys name, number ){
attribute String name;attribute String number;relationship List<section> has_sections
inverse Section::is_section_of{ order by Section::number };
![Page 34: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/34.jpg)
34
ODMG• Object Definition Language
interface Course( extent courses
keys name, number ){
attribute String name;attribute String number;relationship List<section> has_sections
inverse Section::is_section_of{ order by Section::number };
relationship Set<Course> has_prerequisitesinverse Course::is_prerequisite_for;
![Page 35: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/35.jpg)
35
ODMG• Object Definition Language
interface Course( extent courses
keys name, number ){
attribute String name;attribute String number;relationship List<section> has_sections
inverse Section::is_section_of{ order by Section::number };
relationship Set<Course> has_prerequisitesinverse Course::is_prerequisite_for;
relationship Set<Course> is_prerequisite_forinverse Course::has_prerequisites;
![Page 36: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/36.jpg)
36
ODMG• Object Definition Language
Boolean offer( in Unsigned Short semester)raises(already_offered);
Boolean drop( in Unsigned Short semester)raises(not_offered);
};
![Page 37: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/37.jpg)
37
ODMG• Object Definition Language
interface Section( extent sections
key (is_section_of, number) )
![Page 38: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/38.jpg)
38
ODMG• Object Definition Language
interface Section( extent sections
key (is_section_of, number) ){ attribute String number;
relationship Professor is_taught_by inverse professor::teaches;
relationship TA has_TA inverse TA::assists;
relationship Course is_section_of inverse Course::has_sections;
relationship Set<Student> is_taken_by inverse Student::takes;
};
![Page 39: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/39.jpg)
39
ODMG• Object Definition Language
interface Employee( extent employees
key (name. id) ){
attribute String name;attribute Short id;attribute Unsigned Short annual_salary;
void hire();void fire() raises (no_such_employee);
};
![Page 40: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/40.jpg)
40
ODMG• Object Definition Language
interface Professor:Employee( extent professors ){ attribute Enum Rank { full, associate, assistant} ;
relationship Set<Section> teachesinverse section::is_taught_by;
Short grant_tenure()raises(ineligible_for tenure);
}interface TA: Employee, Student(){
relationship Section assistsinverse Section::has_TA;
};
![Page 41: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/41.jpg)
41
ODMG• Object Definition Language
interface Student( extent students
keys name, student_id ){ attribute String name;
attribute String student_id;attribute Struct Address
{ String college,String room_number,
} dorm_address;relationship Set<Section> takes
inverse Section::is_taken_by;
![Page 42: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/42.jpg)
42
ODMG• Object Definition Language)
Boolean register_for_course(in Unsigned Short Course,in Unsigned Short Section )
raises(unsatisfied_prerequisites,section_full,course_full );
void drop_course(in Unsigned Short Course )raises( not_registered_for_that_course);
void assign_major(in Unsigned Short Department );
![Page 43: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/43.jpg)
43
ODMG• Object Definition Language
Short transfer( in Unsigned Short old_section,in Unsigned Short new_section );
};
![Page 44: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/44.jpg)
44
ODMG• Programming language (C++) binding
![Page 45: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/45.jpg)
45
ODMG• Programming language (C++) binding
There is single unified type system across the programming language and the database
![Page 46: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/46.jpg)
46
ODMG• Programming language (C++) binding
There is single unified type system across the programming language and the database
The programming language-specific binding for ODL/OML respects the syntax and semantics of the base programming language into which it is being inserted
![Page 47: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/47.jpg)
47
ODMG• Programming language (C++) binding
There is single unified type system across the programming language and the database
The programming language-specific binding for ODL/OML respects the syntax and semantics of the base programming language into which it is being inserted
The binding is structured as a small set of additions to the base programming language
![Page 48: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/48.jpg)
48
ODMG• Programming language (C++) binding
Expressions in OML compose freely with expressions from the base programming language and vice versa
![Page 49: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/49.jpg)
49
ODMG• C++ binding
![Page 50: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/50.jpg)
50
ODMG• C++ binding
Persistent-capable classes
class Professor : public Persistent_Object
![Page 51: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/51.jpg)
51
ODMG• C++ binding
Persistent-capable classes
class Professor : public Persistent_Object{ public: Ref<Department> dept
inverse Department::professors;
![Page 52: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/52.jpg)
52
ODMG• C++ binding
Persistent-capable classes
class Professor : public Persistent_Object{ public: Ref<Department> dept
inverse Department::professors;Set<Ref<Student>> advises
inverse Student::advisor;};
![Page 53: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/53.jpg)
53
ODMG• C++ binding
Ref-based approach
For each persistence-capable class T, an ancillary class Ref<T> is defined
![Page 54: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/54.jpg)
54
ODMG• C++ binding
Ref-based approach
For each persistence-capable class T, an ancillary class Ref<T> is defined
Ref<Professor> profP;Ref<Department> deptRef;profP->grant_tenure();deptRef = profP->dept;
![Page 55: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/55.jpg)
55
ODMG• Mapping ODMG Model into C++
![Page 56: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/56.jpg)
56
ODMG• Mapping ODMG Model into C++
Object type -> C++ class
![Page 57: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/57.jpg)
57
ODMG• Mapping ODMG Model into C++
Object type -> C++ class
Structure -> struct or class
![Page 58: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/58.jpg)
58
ODMG• Mapping ODMG Model into C++
Object type -> C++ class
Structure -> struct or class
Collections -> template classes
![Page 59: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/59.jpg)
59
ODMG• Mapping ODMG Model into C++
Object type -> C++ class
Structure -> struct or class
Collections -> template classes
template<class T> class Set: public Collection<T>{...};class Ship {...};Set<Ref<Ship>> Cunard_Line;
![Page 60: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/60.jpg)
60
ODMG• Mapping ODMG Model into C++
subtype/supertype hierarchy ->hierarchy of classes
![Page 61: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/61.jpg)
61
ODMG• Mapping ODMG Model into C++
subtype/supertype hierarchy ->hierarchy of classes
operations -> C++ functions
![Page 62: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/62.jpg)
62
ODMG• Mapping ODMG Model into C++
subtype/supertype hierarchy ->hierarchy of classes
operations -> C++ functions
relationships -> methods that traverse
relationship
![Page 63: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/63.jpg)
63
ODMG• Mapping ODMG Model into C++
subtype/supertype hierarchy ->hierarchy of classes
operations -> C++ functions
relationships -> methods that traverse
relationship
arrays of objects -> Varray C++ class
![Page 64: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/64.jpg)
64
ODMG• Mapping ODMG Model into C++
keys -> ?
extents -> ?
name -> ?
![Page 65: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/65.jpg)
65
ODMG• C++ ODL
![Page 66: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/66.jpg)
66
ODMG• C++ ODL
Attributesclass Student : public Persistent_Object{ String name;
Date birth_date;Phone_Number dorm_phone;
![Page 67: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/67.jpg)
67
ODMG• C++ ODL
Attributesclass Student : public Persistent_Object{ String name;
Date birth_date;Phone_Number dorm_phone;struct{ int PO_box;
String university;String city;String state;String zip_code;
} university_address;
![Page 68: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/68.jpg)
68
ODMG• C++ ODL
Attributesclass Student : public Persistent_Object{ String name;
Date birth_date;Phone_Number dorm_phone;struct{ int PO_box;
String university;String city;String state;String zip_code;
} university_address;List<String> favorite_friends;
};
![Page 69: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/69.jpg)
69
ODMG• C++ ODL
Relationshipsclass Department : public Persistent_Object{public:
Set<Ref<Professor>> professorsinverse Professor::dept;
};
![Page 70: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/70.jpg)
70
ODMG• C++ ODL
Relationshipsclass Department : public Persistent_Object{public:
Set<Ref<Professor>> professorsinverse Professor::dept;
};
class Professor : public Persistent_Object{
Ref<Department> deptinverse Department::professors;Set<Ref<Student>> adviseesinverse Student::advisor;
};
![Page 71: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/71.jpg)
71
ODMG• C++ ODL
Relationshipsclass Student : public Persistent_Object{ public:
Ref<Professor> advisorinverse Professor::advisees;
Set<Ref<Course>> classesinverse Course::students_enrolled;
};
![Page 72: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/72.jpg)
72
ODMG• C++ ODL
Relationshipsclass Student : public Persistent_Object{ public:
Ref<Professor> advisorinverse Professor::advisees;
Set<Ref<Course>> classesinverse Course::students_enrolled;
};
class Course : public Persistent_Object{public:
Set<Ref<Student>> students_enrolledinverse Student::classes;
};
![Page 73: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/73.jpg)
73
ODMG• C++ ODL
Unidirectional Relationships
struct Responsible{ String dept;
Ref<Employee>e;Date due_date;
};
![Page 74: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/74.jpg)
74
ODMG• C++ ODL
Unidirectional Relationships
struct Responsible{ String dept;
Ref<Employee>e;Date due_date;
};
class Order{ public:
Set<Ref<Client>> who;String what;Responsible contact;
};
![Page 75: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/75.jpg)
75
ODMG• C++ ODL
Object Creationstatic const Database * const Database::transient_memory;
![Page 76: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/76.jpg)
76
ODMG• C++ ODL
Object Creationstatic const Database * const Database::transient_memory;Forms of new operator:(i) void * operator new(
size_t size,const char* typename = 0);
![Page 77: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/77.jpg)
77
ODMG• C++ ODL
Object Creationstatic const Database * const Database::transient_memory;Forms of new operator:(i) void * operator new(
size_t size,const char* typename = 0);
(ii) void * operator new(size_t size,
constRef<Persistent_Object> &clustering,const char* typename =0);
![Page 78: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/78.jpg)
78
ODMG• C++ ODL
Object Creationstatic const Database * const Database::transient_memory;Forms of new operator:(i) void * operator new(
size_t size,const char* typename = 0);
(ii) void * operator new(size_t size,
constRef<Persistent_Object> &clustering,const char* typename =0);
(iii) void * operator new(size_t size,Database * database,const char* typename =0);
![Page 79: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/79.jpg)
79
ODMG• C++ ODL
Object creationDatabase *yourDB, *myDB;
![Page 80: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/80.jpg)
80
ODMG• C++ ODL
Object creationDatabase *yourDB, *myDB;
Ref<Schedule> temp_sched1 =new Schedule;
![Page 81: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/81.jpg)
81
ODMG• C++ ODL
Object creationDatabase *yourDB, *myDB;
Ref<Schedule> temp_sched1 =new Schedule;
Ref<Professor> prof2 =new( yourDB, "Professor") Professor;
![Page 82: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/82.jpg)
82
ODMG• C++ ODL
Object creationDatabase *yourDB, *myDB;
Ref<Schedule> temp_sched1 =new Schedule;
Ref<Professor> prof2 =new( yourDB, "Professor") Professor;
Ref<Student> student1 =new(myDB) Student;
Ref<Student> student2 = new(student1) Student;
Ref<Student> temp_student =new(Database::transient_memory) Student;
![Page 83: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/83.jpg)
83
ODMG• C++ ODL
Object Deletion
Ref<any_Type> obj_ref;// set obj_ref to refer to persistent objectobj_ref.delete_object();
![Page 84: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/84.jpg)
84
ODMG• C++ ODL
Object Deletion
Ref<any_Type> obj_ref;// set obj_ref to refer to persistent objectobj_ref.delete_object();
Object Modification
obj_ref->mark_modified();
![Page 85: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/85.jpg)
85
ODMG• C++ ODL
Object References
– Object references are instances of Ref<T>
![Page 86: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/86.jpg)
86
ODMG• C++ ODL
Object References
– Object references are instances of Ref<T>
– All accesses to persistent objects are made via methods defined on classes Ref, Persistent_Object, Database
![Page 87: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/87.jpg)
87
ODMG• C++ ODL
Object References
– Object references are instances of Ref<T>
– All accesses to persistent objects are made via methods defined on classes Ref, Persistent_Object, Database
– The dereference operator -> is used to access members of the persistent object "addressed" by a given object reference
![Page 88: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/88.jpg)
88
ODMG• C++ ODL
Attributes
prof->id_number = next_id;
cout << prof->id_number;
![Page 89: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/89.jpg)
89
ODMG• C++ ODL
Relationships
1-1class A { Ref<B> inverse B::ra }
class B{ Ref<A> inverse ::rb; }
![Page 90: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/90.jpg)
90
ODMG• C++ ODL
Relationships
1-1class A { Ref<B> inverse B::ra }
class B{ Ref<A> inverse ::rb; }
a.rb = &b; //add relationshipa.rb.clear(); // remove relationshipa.rb = &bb; //modify relationship
![Page 91: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/91.jpg)
91
ODMG• C++ ODL
Relationships
1:Mclass A{ Set<Ref<B>> sb inverse B::ra; }
class B{ Ref<A> ra inverse A::sb; }
![Page 92: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/92.jpg)
92
ODMG• C++ ODL
Relationships
1:Mclass A{ Set<Ref<B>> sb inverse B::ra; }
class B{ Ref<A> ra inverse A::sb; }
a.sb.insert_element(&b); // add relationshipa.sb.remove_element(&b); // remove relationship.
or b.ra.clear();b.ra = &&aa; // modify relationship
![Page 93: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/93.jpg)
93
ODMG• C++ ODL
Relationships
M:Nclass A{ Set<Ref<B>> sb inverse B::sa; }
class B{ Set<Ref<A>> sa inverse A:sb; }
![Page 94: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…](https://reader036.vdocuments.us/reader036/viewer/2022081515/5a4d1bf57f8b9ab0599e7ace/html5/thumbnails/94.jpg)
94
ODMG• C++ ODL
Relationships
M:Nclass A{ Set<Ref<B>> sb inverse B::sa; }
class B{ Set<Ref<A>> sa inverse A:sb; }a.sb.insert_element(&b); // add relationshipa.sb.remove_element(&b); // remove relationship
or b.sa.remove_element(&a);a.sb.replace_element_at(&bb, 3); // modify relationship