Upload
palila
View
42
Download
0
Embed Size (px)
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
Citation preview
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