dept [0..*] dname: string location: string [1..*]

Post on 31-Jan-2016

42 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

i 10 Emp. i 20 Emp. i 30 Emp. i 11 name ”Doe”. i 21 name ”Poe”. i 31 name ”Lee”. Emp [0..*] name: string age: integer sal: integer [0..1]. i 12 age 29. i 22 age 41. i 32 age 20. i 13 sal 1900. i 23 sal 2500. i 14 worksIn i 50. i 24 worksIn i 60. - PowerPoint PPT Presentation

TRANSCRIPT

Dept [0..*]dname: stringlocation: string [1..*]

Emp [0..*]name: stringage: integersal: integer [0..1]

worksIn [1..1]

employs [1..*] i50 Dept

i51 dname ”Trade”

i52 location ”Paris”

i53 location „Rome”

i54 employs i10

i60 Dept

i61 dname ”Ads”

i62 location ”Berlin”

i63 employs i30

i64 employs i20

i30 Emp

i31 name ”Lee”

i32 age 20

i33 worksIn i60

i10 Emp

i11 name ”Doe”

i12 age 29

i13 sal 1900

i14 worksIn i50

i20 Emp

i21 name ”Poe”

i22 age 41

i23 sal 2500

i24 worksIn i60

Dept [0..*]dnamelocation[1..*]

worksIn

employs [1..*]

Emp [0..*]namesal address[0..1] city street house#

S – Objects< i1, Emp, {< i2, name, ”Doe”>,

< i3, sal, 2500>,

< i4, worksIn, i17> } >,

< i5, Emp, {< i6, name, ”Poe”>,

< i7, sal, 2000>,

< i8, worksIn, i22> } >,

< i9, Emp, {< i10, name, ”Lee”>,

< i11, sal, 900>,

< i12, address, {

< i13, city, “Rome” >,

< i14, street, “Boogie” >,

< i15, house#, 13 > } >,

< i16, worksIn, i22> } >,

< i17, Dept, {< i18, dname, ”Trade”>,

< i19, location, “Paris”>,

< i20, location, “London”>

< i21, employs, i1> } >,

< i22, Dept, {< i23, dname, ”Ads”>,

< i24, location, “Rome”>,

< i25, employs, i5>,

< i26, employs, i9> } >

R - Start identifiersi1, i5, i9, i17, i22

i17 Dept

i18 dname ”Trade”

i19 location ”Paris”

i20 location ”Rome”

i21 employs

i22 Dept

i23 dname ”Ads”

i24 location ”Rome”

i25 employs

i26 employs

i1 Emp

i2 name ”Doe”

i3 sal 2500

i4 worksIn

i5 Emp

i6 name ”Poe”

i7 sal 2000

i8 worksIn

i9 Emp

i10 name ”Lee”

i16 worksIn

i11 sal 900

i12 address

i13 city ”Rome”

i14 street ”Boogie”

i15 house# 13

Company

C# 102030

CName Syntex

Bossemploys

employs

employs

Employee

Name Doe

Salary 1500

worksIn

Employee

Name Lee

Salary 2000

worksIn

Employee

Name Poe

Salary 2500

worksIn

Relational schema: Emp( name, sal, worksIn )

nameDoePoeLee

sal250020002000

worksInProductionSalesSales

Relation: Emp

Model AS0:

S - Objects:< i1 , Emp, { < i2, name, ” Doe” >, < i3, sal, 2500 >, < i4, worksIn, ” Production” > } >,

< i5 , Emp, { < i6, name, ” Poe” >, < i7, sal, 2000 >, < i8, worksIn, ” Sales” > } >,

< i9 , Emp, { < i10, name, ” Lee” >, < i11, sal, 2000 >, < i12, worksIn, ” Sales” > } >

R - Start identifiersi1 , i5 , i9

<Dept> <dname> Trade </dname > <location> Paris </location > <location> London </location > <employs> Doe </employs></Dept ><Dept> <dname> Ads </dname > <location> Rome </location > <employs> Poe </employs> <employs> Lee </employs></Dept >

S – Objects< i17, Dept, {< i18, dname, ”Trade”>,

< i19, location, “Paris”>,

< i20, location, “London”>

< i21, employs, ”Doe”> } >,

< i22, Dept, {< i23, dname, ”Ads”>,

< i24, location, “Rome”>,

< i25, employs, ”Poe”>,

< i26, employs, ”Lee”> } >

R - Start identifiersi17, i22

<emp version=”1.2” date=”2006.01.10”> <name> Doe </name> ...</emp>

<emp> <@version> 1.2 </@version> <@date> 2006.01.10 </@date> <name> Doe </name> ...</emp>

<emp> John Doe, born 1973 <address> Warsaw, Sienna 5 </address> His salary is 2500</emp>

<emp> <&info> John Doe, born 1973 </&info> <address> Sienna 5, Warsaw </address> <&info> His salary is 2500 </&info></emp>

S – Objects< i1, Person, {< i2, name, ”Doe”>, ... } >,< i5, Emp, {< i6, name, ”Poe”>, < i7, sal, 2000>, < i8, worksIn, i22>, ... } >, < i9, Emp, {< i10, name, ”Lee”>, < i11, sal, 900>, < i16, worksIn, i33>, ...} >C - Classes< i40, PersonClass, {< i41, age, (...the code of the method age)>, ... other invariants of the PersonClass... } >,< i50, EmpClass, { < i51, changeSal, (... the code of the method changeSal...)>, < i52, netSal, (... the code of the method netSal ...)>, ... other invariants of the EmpClass... } >R - Start identifiersi1, i5, i9CC - Inheritance among classes< i50, i40>SC - Membership of objects within classes< i1, i40>, < i5, i50>, < i9, i50>

i1 Person

i2 name ”Doe”

...

i9 Emp

i10 name ”Lee”

i16 worksIn

i11 sal 900

...

i5 Emp

i6 name ”Poe”

i7 sal 2000

i8 worksIn

...

i40 PersonClass

i41 age (...code...)

...

i51 changeSal (...code...)

...

i50 EmpClass

i52 netSal (...code...)

CC

SC

SCSC

i22 i33

StudentEmployee Club-member

Student

Tax-payer

Dog-owner

Person

Patient

S – Objects (and roles)<i1, Person, { <i2, name, ”Doe” >, <i3, born, 1948 > } >,<i4, Person, { <i5, name, ”Poe” >, <i6, born, 1975 >} >,<i7, Person, { <i8, name, ”Lee” >, <i9, born, 1951 >} >,<i13, Emp, { <i14, sal, 2500 >, <i15, worksIn, i127> } >,<i16, Emp, { <i17, sal, 1500 >, <i18, worksIn, i128> } >,<i19, Student, { <i20, studentNo, 223344 >, <i21, faculty, ”Physics” >} >.....C - Classes<i40, PersonClass , { <i41, age, (...code of the method Age...) >, ...other properties of PersonClass...}>,<i50, EmpClass , {<i51, changeSal, (...code of the method changeSal...) >, <i52, netSal, (...code of the method netSal...) >, ...other properties of EmpClass... }>,<i60, StudentClass , { <i61, avgScore, (... code of the method AvgScore...) >, ...other properties of StudentClass ... }>,.....R – Root identifiersi1, i4, i7, i13, i16, i19, ...CC - Inheritance between classesEmpty.SC - Membership of objects and roles in classes< i1, i40>, < i4, i40>, < i7, i40>, < i13, i50>, < i16, i50>, < i19, i60> , ...SS – Inheritance between roles and objects< i13, i4>, < i16, i7>, < i19, i7> , ...

i40 PersonClass

i41 age (...code...)

.............

i1 Person

i2 name ”Doe”

i3 born 1948

i4 Person

i5 name ”Poe”

i6 born 1975

i127

i13 Emp

i14 sal 2500

i15 worksIn

i7 Person

i8 name ”Lee”

i9 born 1951

i128

i16 Emp

i17 sal 1500

i18 worksIn

i19 Student

i20 studentNo 223344

i21 faculty ”Physics”

i60 StudentClass

i61 avgScore (...code...)

.............

i50 EmpClass

i51 changeSal (...code...)

i52 netSal (...code...)

.............

S – Objects

< i1, Person, {< i2, name, ”Doe”>, ... } >,

< i5, Emp, {< i6, name, ”Poe”>, < i7, sal, 2000>, < i8, works_in, i22>, ... } >,

< i9, Emp, {< i10, name, ”Lee”>, < i11, sal, 900>, < i16, works_in, i33>, ...} >

C - Classes

< i40, PersonClass, {< i41, age, (...the code of the method age)>, ... other invariants of the PersonClass... } >,

< i50, EmpClass, { < i51, changeSal, (... the code of the method changeSal...)>,

< i52, netSal, (... the code of the method netSal ...)>,

< i53, ExportList, (changeSal, netSal, works_in) >,

... other invariants of the EmpClass... } >

R - Start identifiers

i1, i5, i9

CC - Inheritance among classes

< i50, i40>

SC - Membership of objects within classes

< i1, i40>, < i5, i50>, < i9, i50>

Variables declared within block b

Variables and actual parameters of procedure p2

Variables and actual parameters of procedure p1

........

Global variables

Top of the stack

Bottom of the stack

the order of searching for variable X

i1 Emp

i5 Emp

i9 Emp

i17 Dept

i22 Dept

Persistent (shared) objects

i127 X i128 Y

Volatile (non-shared) objects

Client Server

Emp(i1)

Temporary processing section- properties of an executed procedure

Temporary processing section

Temporary processing section

Temporary processing section- properties of a processed object

Temporary processing section

Global sections

Database section

X(i127) Y(i128) N(5) I("Maria")

.........

name(i10) sal(i11) address(i12) worksIn(i16)

Binders to volatile properties of the current client session

Emp(i1) Emp(i5) Emp(i9) ... Dept(i17) Dept(i22) ...

Binders to global library functions

Binders to properties of the computer environment

.........

Top

Emp(i1)

X(i127) Y(i128) N(5) I("Maria")

.........

name(i10) sal(i11) address(i12) worksIn(i16)

Emp(i1) Emp(i5) Emp(i9) ... Dept(i17) Dept(i22) ...

.........

.........

start of the search

end of the search

sequence{ i1, i6, i11}

i1

i6

i11

bag{ struct{i1, i56}, struct{i6, i72}, struct{i11, i72}}

i1

i6

i11

i56

i72

i72

bag{ struct{ n(„Doe"), s(i9) }, struct{ n(„Poe"), s(i14)}, struct{ n(”Lee" ), s(i18)}}

n

”Doe"”Poe"”Lee"

s

i9

i14

i18

Emp where (name = ”Poe” and sal > 1000)

Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)

name(i10) sal(i11) address(i12) worksIn(i16)

Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)

Initial ENVS state. bind( Emp ) = {i1, i5, i9}

ENVS during evaluation of the condition for the third object Emp.bind( name ) = i10; bind( sal ) = i11

binding binding

Interior of the third object Emp

condition

i9 Emp

i10 name ”Lee”

i16 worksIn

i11 sal 900

i12 address

i13 city ”Rome”

i14 street ”Boogie”

i15 house# 13

nested( i9 ) = { name( i10 ), sal( i11 ), address( i12 ), worksIn( i16 ) }

query ::= literal The set L

query ::= name The set N

query ::= unaryAlgOperator query Unary algebraic operators

unaryAlgOperator ::= count | sum | max | - | sqrt | not | ...

query ::= query binaryAlgOperator query Binary algebraic operators

binaryAlgOperator ::= =|<| >| +| -| *| /| and| or| intersect|...

query ::= query NonAlgOperator query Non-algebraic operator

NonAlgOperator ::= where | . | join | ∀ | ∃ | order by

query ::= ∀query query | ∃query query Alternative (traditional) syntax for quantifiers

query ::= query as name Name definition

query ::= query group as name Grouping and name definition

query ::= if query then query Conditional query

query ::= if query then query else query Another conditional query

querySeq ::= query | query, querySeq Sequence of queries

query ::= struct( querySeq ) | (querySeq) Structure constructor

query ::= bag( ) | bag( querySeq ) Bag constructor

query ::= sequence( ) | sequence( querySeq ) Sequence constructor

(2 *((5 + 3 ) / 4)) - 1 2 5 3 + 4 / * 1 -

Expression

2 2

5

2

5

3

2

8

4

2

2

4

1

4 32

8+ /

* -

Reverse polish notation

empty

15

i17

struct{ x(i61), y(i93) }

bag{ struct{ n(„Doe"), s(i9)}, struct{ n(„Poe"), s(i14)}, struct{ n(”Lee" ), s(i18)}}bottom

the only visible stack section

invisible stack sections

top

Object store

Environment stack ENVS

Query result stack QRES

Query evaluation

Non-algebraic operators

references to objects

references to objects

Volatile (non-shared) objectsPersistent (shared) objects

Parser ofqueries and programs

Software development environment (editor,

debugger, etc.)

Client

Syntactic tree of a query/program

Volatile (non-shared) objects

ENVS

QRES

Static ENVS

Static QRES

Persistent (shared) objects

Object manager

Processing persistent abstractions (views, stored procedures,

triggers)

Register of indices

Server

Local metabase

Metabase of persistent objects

Optimization by rewriting

Optimization by indices

Interpreter of queries & programs (proc. eval)

Strong type checker

Network

Register of views

Administration module

previous state of QRES

eval( q )

result of query q

previous state of QRES

previous state of QRES

a consumerof the result

Start

Non-algebraic where

Left subquery Right subquery

Name Emp

Algebraic2 =

Left subquery Right subquery

Name name

Algebraic1 deref String value ”Poe”

result( q1 ) = bag{ e1, e2, e3 }

Previous state ofENVS

Previous state ofENVS

nested(e1)

Previous state ofENVS

Previous state ofENVS

nested(e2)

Previous state ofENVS

Previous state ofENVS

nested(e3)

Previous state ofENVS

time

result(q2) result(q2) result(q2)

result(q1 θ q2)

Emp where ( sal > 1000 )

i1

i5

i9

i3

i7

i11

i1

i5

Result returned by query Emp

Results returned by query sal

Iteration over elements of the previous result

Dereference forced by >

2500

2000

900

Results returned by query 1000

1000

1000

1000

true

true

false

Results returned by query sal>1000

Final result of the query

name(i2) sal(i3) worksIn(i4)

Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)

name(i6) sal(i7) worksIn(i4)

Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)

name(i10) sal(i11) address(i22) worksIn(i16)

Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)

Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)

ENVS before evaluation

Empe#namejobsalworksIn

Deptd#dnameboss

Locationd#loc

Addresse#citystreethouse#

Relational schema

Dept [0..*]d#dnameloc[1..*]

Object-oriented schema (class diagram)

worksIn employs[1..*]Emp [0..*]e#namejobsal

Address [0..1]citystreethouse#

manages[0..1] boss

( Dept join avg((employs . Emp ) . sal ) )

Emp(..) Emp(..), ... Dept(..) Dept(..) ...

Emp(..) Emp(..), ... Dept(..) Dept(..) ...

d#(..), dname(..) loc(..) loc(..) ...employs(..) employs(..) ...boss(..)

Emp(..) Emp(..), ... Dept(..) Dept(..) ...

Emp(..)

d#(..), dname(..) loc(..) loc(..) ...employs(..) employs(..) ...boss(..)

Emp(..) Emp(..), ... Dept(..) Dept(..) ...

d#(..), dname(..) loc(..) loc(..) ...employs(..) employs(..) ...boss(..)

Emp(..) Emp(..), ... Dept(..) Dept(..) ...

e#(..) name(..) job(..)sal(..) worksIn(..)manages(..)

d#(..), dname(..) loc(..) loc(..) ...employs(..) employs(..) ...boss(..)

Emp(..) Emp(..), ... Dept(..) Dept(..) ...

d#(..), dname(..) loc(..) loc(..) ...employs(..) employs(..) ...boss(..)

Emp(..) Emp(..), ... Dept(..) Dept(..) ...

Binders to internal properties of the currently processed object O

Binders to internal properties of the class C1 that O is a member

Binders to internal properties of the class C2 that is a superclass of C1

Binders to internal properties of the class C3 that is a superclass of C2

............................

Binders with start identifiers of the object store

Top of the ENVS stack

Sections pushed on ENVS during processing of the object O by a non-algebraic operator

Object O

Class C1

Class C2

Class C3

CC

CC

SC

Search order

name(i6) sal (i7) worksIn (i8) ....

changeSal(i51) netSal(i52) ...

age(i41) ...

.........

Person(i1) ... Emp(i5) Emp(i9) ...

nested(i5) - internals of the currently processed Poe’s object

nested (i50) – internals of EmpClass

nested (i40) – internals of PersonClass

... other sections ...

Binders to database objects

Top of the ENVS stack

Sections pushed by the dot operator

Calculation of parameters, binding the name MyMethodand firing the method

result(q0)Previous

QRES state

Operator where

Evaluation of q0 Removing the results of q1, q2

Processing of the MyMethod body

After completing MyMethod

.......

Global sections

time

result(q2)result(q1)result(q0)Previous

QRES state

result(q0)Previous

QRES state

result(q)result(q0)Previous

QRES state

nested(r1)nested(iMC)

.......

Globalsections

p1(result(q1))p2(result(q2))x1(..) x2(..)

nested(r1)nested(iMC)

.......

Globalsections

nested(r1)nested(iMC)

.......

Globalsections

Emp[0..*]e#job[1..*]sal[0..1]changeSal(newSal)netSal( )

Dept[0..*]d#dnameloc[1..*]budget()

employs[1..*]worksIn

Person[0..*] name birthYear

age()

Address [0..1] city street house#

manages[0..1] boss

Binders to volatile objects/variables of the current user session

Person(i1) Person(i4) Person(i7) Emp(i13) Emp(i16) Student(i19) ...

Binders to global library functions

Binders to variables and functions of the computer environment

Global sectionsDatabase section

Properties of the currently processed Emp role

Properties of the EmpClass

Properties of the Person super-role of the Emp role

Properties of the PersonClass

Database section

Search order

sal(i17) worksIn(i18)

changeSal(i51) netSal(i52 ) ...

name(i8) born(i9)

age(i41) ...

.........

Person(i1) Person(i4) Person(i7) Emp(i13) Emp(i16) Student(i19) ...

.........

Bottom of ENVS

iR1C R1Class

iR1 R1

iR2 R2 iR3 R3

iR5 R5 iR4 R4

iR6C R6Class

iR45C R45Class

iR7C R7Class

iR23C R23Class

nested(iR5)

nested(iR45C)

nested(iR3)

nested(iR23C )

nested(iR6C )

nested(iR7C )

nested(iR1 )

nested(iR1C )

nested(iR7C )

.........

Sections of the role R5

Sections of the role R3

Sections of the role R1

Emp[0..1]e#job[1..*]sal[0..1]changeSal(newSal)netSal( )

Dept[0..*]d#dnameloc[1..*]budget()

employs[1..*]

studiesAt

manages

boss

Person[0..*]namebirthYear

age( )

Address [0..1]citystreethouse#

Student[0..*]s#faculty[0..1]scholarship

avgScore( )

Exam[0..*] subject score

School[0..*]namecity

worksIn

teaches[0..*]

Manager[0..1]

Software: strategic decisions, analysis, design, construction, testing, documentation, deployment,

user training, operation, maintenance, modifications,

etc.

The world of the problem domain: complex, interdependent knowledge, business processes, aspects, problems and solutions.

The world of analysis and design: teams of people having limitations of memory, perception, expressing information and communication.

The world of software users: psychological factors, ergonomy, limitations of memory, tendency to errors and abuse, ownership, intellectual properties, privacy, security, etc.

The world of computer technologies: hardware, software, networks, languages, methodologies, tools, facilities, standards, etc.

Human perception of the problem domain

Abstract conceptual model of the problem domain

Programmer’s view of data structures and operations

mappingmapping

... ... ...

... ... ...... ... ...... ... ...... ... ...

... ... ...

Real objects or concepts in the

problem domain

Classes of abstract objects in the conceptual model of

the problem domain

Objects and their classes as data structures within an object-oriented database

seamless mappingseamless mapping

...

...

............

...

...

............

...

...

...

...

...

...

Person CompanyEmployerEmployee

EmploymentDetails

1..* worksFor 0..*

Broker

DealSubject

DatePrice

PersonName

Buyer

Seller

Broker

PersonName

Buyer

Seller

DealSubject

DatePrice

DealHouse

1995.08.1640000

DealCar

1998.05.1520000

PersonKim

Broker

DealCar1998.05.1520000

PersonLee

PersonNoe

Buyer Seller

Broker

DealHouse1995.08.1640000

PersonPoe

PersonDoe

Buyer Seller

PersonKim

Broker

PersonLee

PersonNoe

Buyer Seller

Broker

PersonPoe

PersonDoe

Buyer Seller

Employeeemployee#

jobsalary

company#netSalary()

changeSalary(...)

Studentstudent#

yearOfStudyfaculty

insertScore(...)acceptSemester()

PersonfirstNamelastName

dateOfBirth age()

objectobjectobjectobjectobjectobjectobjectobject

inheritance

StudentEmployee

Club-memberStudent Tax-payer

Dog-owner

Person

Patient

PersonName Doe

BirthYesr 1948

PersonClassName BirthYear

Age()

EmployeeClassSalary

JobNetSalary()

ChangeSalary(..)

StudentClassSemester

StudentNoNewScore(...)AvgScore()

Classes

PersonName Brown

BirthYear 1975

EmployeeSalary 2500Job analyst

PersonName Jones

BirthYear 1940

StudentSemester 4

StudentNo 556677

Objects with roles

CompanyName Bank

works_in works_in

SchoolName NYA

studies_at

SchoolName MLI

studies_at

is_a_customer_of

PersonName Smith

BirthYear 1951

EmployeeSalary 1500

Job clerk

StudentSemester 7

StudentNo 223344is a member of

association link

inherits from

dynamically inherits from

Employees

.....

Employee

Employments

.....

Employment

Employment

Job

Surname

Children

...

Child

Child

Employee

Employments

.....

Employment

Employment

Job

Surname

Children

...

Child

Child

EW[0..*] WE CW[0..*]WC

Person[0..*]lNamefName[1..*]Addres[1..*]

Company[0..*]cNamecLocation[1..*]

Work[0..*]Payment[0..*]Expertise[1..*]

Expert[0..*]Competence[1..*]

Company(C#, cName)

cLocation(Place, C#) Work(W#, C#, E#)

Expert(E#, P#)Expertise(eText, W#)

Payment(pAmount, W#)Person(P#, lName)

Competence(cDescr, E#)

Names(fName, P#) Addresses(Addres, P#)

Communication Bus

Integration view

Existing sources

Contributoryview 1

O-R wrapper

Relationaldatabases

Contributoryview 2

O-RDF wrapper

RDFresources

XMLimporter/ exporter

XMLfiles

Contributoryview 3

O-WSwrapper

Web Serviceapplications

Contributory

view

….wrapper

….application

ODRA database server

Application1

Clientview 1

Clientview 2

Application2

Clientview 3

Application3

Clientview 4

Web Service

application

Applicationsbased on virtual repository

Part [0..*]name

Aggregate [0..*]assemblyCostassemblyMass

Detail [0..*]costmass

Component [1..*] amount leadsTo

*

hasSharesIn

isOwnedBy

*

Companyname

SupplierClass….

Default attribute Sname = ” ”Default attribute Status = -1Default attribute City = ”???”

…..

SupplierSname BlackSno 1234City Rome

SupplierSname GraySno 1256Status 55

Local environment of m

Class C2….

method m….

Class C1….

Default attribute a = …….

Object O…attribute a = …

The rest of the environment

a) The natural scoping rule

Local environment of m

Class C1….

Default attribute a = …

method m….

Object O…attribute a = …

The rest of the environment

b) Binding conflict

name(”Brown”) address(..) job(..) worksIn (..)

name(..) address(..) salary(..) job(..) worksIn (..)

.........

Global stack sections

Section pushed by the third where operator for the Brown’s object

Section pushed by the second where operator for an Emp object

Binding salary

engine

…..carburettor starter

bolt10x30

………..

……

myperson ancestors resultallcousins

Temporary processing section - properties of an executed procedure

Temporary processing section

Temporary processing section

Temporary processing section- properties of a processed object

Temporary processing section

Database section

Emp(i1)

X(i127) Y(i128) N(5) I("Maria")

.........

name(i10) sal(i11) address(i12) worksIn(i16)

Binders to volatile properties of the current client session

Emp(i1) Emp(i5) Emp(i9) ... Dept(i17) Dept(i22) ...

Libraries and computer environment

.........

Emp(i1)

Environment of iloc

.........

Environment of i9

Environment of ises

Environment of idb

Libraries and computer environment

.........

< i9, Emp, { <i10, name, …>, <i11, sal, …> <i12, address, …> <i16, worksIn,…> } >

<iloc, …, local procedure objects and binders>

<ises, …, objects of the current session>

<idb, …, database objects>

ConceptualENVS

OptimizedENVS

Emp[0..*] eno: integer job: string[0..1] sal: realchangeSal(newSal: real)netSal( ): real

Dept[0..*] dno: integer dname: string loc: string[1..*]budget(): real

employs[1..*]worksIn

Person[0..*] name: string birthYear: integer

age(): integer

address [0..1] city: string street: string house: integer

manages[0..1] boss

Activation record of P1

........

Global entities

Activation record of P2Activation record of P1

........

Global entities

Activation record of P3Activation

record of P2Activation

record of P1

........

Global entities

Activation record of P2Activation record of P1

........

Global entities

Activation record of P1

........

Global entities

P1 callsP2

Top of the stack

P1 is running P2 is running P3 is running P2 is running P1 is running

P3 ends

P2 callsP3

P2 ends

time

top related