94
1 ODMG

1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…

Embed Size (px)

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, 1996

Citation preview

Page 1: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…

1

ODMG

Page 2: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…

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,…

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,…

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,…

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,…

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,…

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,…

8

ODMG• Architecture

Page 9: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…

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,…

10

ODMG• Components

Page 11: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…

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,…

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,…

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,…

14

ODMG• Basic concepts

Page 15: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

27

ODMG• Type hierarchy

Page 28: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…

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,…

29

ODMG• Object Definition Language

Page 30: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

49

ODMG• C++ binding

Page 50: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

65

ODMG• C++ ODL

Page 66: 1 ODMG. 2 Object Database Management Group (ODMG) ODMG has been formed in late 1991 by: ObjectDesign,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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,…

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