Slajd 1 - IPI PAN

Download Report

Transcript Slajd 1 - IPI PAN

Emp [0..*]
name: string
age: integer
sal: integer [0..1]
worksIn [1..1]
employs [1..*]
Dept [0..*]
dname: string
location: string [1..*]
i10 Emp
i20 Emp
i30 Emp
i11 name ”Doe”
i21 name ”Poe”
i31 name ”Lee”
i12 age 29
i22 age 41
i32 age 20
i13 sal 1900
i23 sal 2500
i14 worksIn i50
i24 worksIn i60
i33 worksIn i60
i50 Dept
i60 Dept
i51 dname ”Trade”
i61 dname ”Ads”
i52 location ”Paris”
i62 location ”Berlin”
i53 location „Rome”
i63 employs
i54 employs i10
i64 employs
i30
i20
Emp [0..*]
name
sal
address[0..1]
city
street
house#
worksIn
employs [1..*]
Dept [0..*]
dname
location[1..*]
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 identifiers
i1, i5, i9, i17, i22
i1 Emp
i5 Emp
i9 Emp
i2 name ”Doe”
i6 name ”Poe”
i10 name ”Lee”
i3 sal 2500
i7 sal 2000
i11 sal 900
i4 worksIn
i8 worksIn
i12 address
i13 city ”Rome”
i14 street ”Boogie”
i15 house# 13
i16 worksIn
i17 Dept
i22 Dept
i18 dname ”Trade”
i23 dname ”Ads”
i19 location ”Paris”
i24 location ”Rome”
i20 location ”Rome”
i25 employs
i21 employs
i26 employs
Employee
Name Doe
Salary 1500
worksIn
Employee
Name Poe
Salary 2500
worksIn
Employee
Name Lee
Salary 2000
worksIn
Boss
employs
C# 102030
employs
CName Syntex
employs
Company
Relational schema:
Emp( name, sal, worksIn )
Relation: Emp
name
Doe
Poe
Lee
sal
2500
2000
2000
worksIn
Production
Sales
Sales
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 identifiers
i1 , 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 identifiers
i17, 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 identifiers
i1, i5, i9
CC - Inheritance among classes
< i50, i40>
SC - Membership of objects within classes
< i1, i40>, < i5, i50>, < i9, i50>
i40 PersonClass
i41 age (...code...)
...
CC
i50 EmpClass
i51 changeSal (...code...)
i52 netSal (...code...)
SC
...
SC
SC
i1 Person
i5 Emp
i9 Emp
i6 name ”Poe”
i10 name ”Lee”
i7 sal 2000
i11 sal 900
i8 worksIn
i16 worksIn
...
...
i2 name ”Doe”
...
i22
i33
Person
Employee
Student
Student
Club-member
Patien
t
Tax-payer
Dog-owner
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 identifiers
i1, i4, i7, i13, i16, i19, ...
CC - Inheritance between classes
Empty.
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...)
.............
i50 EmpClass
i60 StudentClass
i51 changeSal (...code...)
i61 avgScore (...code...)
i52 netSal (...code...)
.............
.............
i1 Person
i4 Person
i7 Person
i2 name ”Doe”
i5 name ”Poe”
i8 name ”Lee”
i3 born 1948
i6 born 1975
i9 born 1951
i13 Emp
i16 Emp
i14 sal 2500
i17 sal 1500
i20 studentNo 223344
i15 worksIn
i18 worksIn
i21 faculty ”Physics”
i127
i19 Student
i128
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>
the order of searching
for variable X
Top of the stack
Variables declared within block b
Variables and actual parameters of procedure p2
Variables and actual parameters of procedure p1
........
Global variables
Bottom of the stack
Client
Server
Persistent (shared) objects
Volatile (non-shared) objects
i127 X
i128 Y
i1 Emp
i17 Dept
i5 Emp
i9 Emp
i22 Dept
Top
Temporary processing section
Temporary processing section
- properties of an executed procedure
Temporary processing section
Temporary processing section
- properties of a processed object
Temporary processing 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
Database section
Global sections
Emp(i1) Emp(i5) Emp(i9) ...
Dept(i17) Dept(i22) ...
Binders to global library
functions
Binders to properties
of the computer environment
start of the search
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) ...
.........
end of the search
bag{ struct{i1, i56},
struct{i6, i72},
sequence{ i1, i6, i11}
struct{i11, i72}}
i1
i6
i11
i1
i6
i11
i56
i72
i72
bag{ struct{ n(„Doe"), s(i9) },
struct{ n(„Poe"), s(i14)},
struct{ n(”Lee" ), s(i18)}}
n
s
”Doe"
”Poe"
”Lee"
i9
i14
i18
condition
Emp
where
binding
(name = ”Poe” and sal > 1000)
binding
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}
Interior of the
third object Emp
Emp(i1) Emp(i5) Emp(i9)
Dept(i17) Dept(i22)
ENVS during evaluation of the condition
for the third object Emp.
bind( name ) = i10; bind( sal ) = i11
i9 Emp
i10 name ”Lee”
i11 sal 900
i12 address
i13 city ”Rome”
i14 street ”Boogie”
i15 house# 13
i16 worksIn
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
Expression
(2 *((5 + 3 ) / 4)) - 1
Reverse polish notation
253+4/*1-
3
empty
2
5
5
2
2
4
+
8
8
2
2
/
2
2
1
*
4
4
-
3
top
the only visible
stack section
15
i17
struct{ x(i61), y(i93) }
bag{
bottom
struct{ n(„Doe"), s(i9)},
struct{ n(„Poe"), s(i14)},
struct{ n(”Lee" ), s(i18)}}
invisible stack
sections
Non-algebraic operators
Environment
stack ENVS
Query result
stack QRES
Query
evaluation
references
to objects
references
to objects
Object store
Volatile (non-shared) objects
Persistent (shared) objects
Software development
environment (editor,
debugger, etc.)
Client
Parser of
queries and programs
Syntactic tree of a query/program
Strong type
checker
Optimization by
rewriting
Optimization by
indices
Interpreter of queries &
programs (proc. eval)
Static ENVS
ENVS
Static QRES
QRES
Local metabase
Volatile (non-shared) objects
Network
Server
Metabase of
persistent
objects
Administration
module
Register
of indices
Object
manager
Persistent (shared) objects
Register
of views
Processing persistent
abstractions (views,
stored procedures,
triggers)
result of query q
previous state of
QRES
eval( q )
previous state of
QRES
a consumer
of the result
previous state of
QRES
Start
Non-algebraic
Left subquery
Name
where
Right subquery
Algebraic2
Emp
Left subquery
Algebraic1
deref
Name
name
=
Right subquery
String value
”Poe”
result( q1 ) = bag{ e1, e2, e3 }
nested(e1)
Previous
state of
ENVS
Previous
state of
ENVS
nested(e2)
Previous
state of
ENVS
Previous
state of
ENVS
nested(e3)
Previous
state of
ENVS
Previous
state of
ENVS
Previous
state of
ENVS
time
result(q2)
result(q2)
result(q2)
result(q1 θ q2)
Result
returned by
query Emp
Iteration over
elements of the
previous result
Results
returned by
query sal
Dereference
forced by >
Results
returned by
query 1000
Results
returned
by query
sal>1000
Final
result of
the query
name(i2) sal(i3) worksIn(i4)
i1
Emp(i1) Emp(i5) Emp(i9)
Dept(i17) Dept(i22)
i3
2500
1000
true
i1
i7
2000
1000
true
i5
i11
900
1000
false
name(i6) sal(i7) worksIn(i4)
i5
ENVS before evaluation
i9
Emp(i1) Emp(i5) Emp(i9)
Dept(i17) Dept(i22)
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
where
(
sal
>
1000 )
Relational schema
Address
e#
city
street
house#
Emp
e#
name
job
sal
worksIn
Dept
d#
dname
boss
Location
d#
loc
Object-oriented schema (class diagram)
Emp [0..*]
e#
name
job
sal
Address [0..1]
city
street
house#
worksIn
manages[0..1]
employs[1..*]
boss
Dept [0..*]
d#
dname
loc[1..*]
( Dept
join avg((employs
.
Emp
)
.
)
)
e#(..) name(..)
job(..)
sal(..)
worksIn(..)
manages(..)
Emp(..)
Emp(..)
Emp(..), ...
Dept(..)
Dept(..) ...
sal
d#(..),
dname(..)
loc(..)
loc(..) ...
employs(..)
employs(..) ...
boss(..)
d#(..),
dname(..)
loc(..)
loc(..) ...
employs(..)
employs(..) ...
boss(..)
d#(..),
dname(..)
loc(..)
loc(..) ...
employs(..)
employs(..) ...
boss(..)
d#(..),
dname(..)
loc(..)
loc(..) ...
employs(..)
employs(..) ...
boss(..)
d#(..),
dname(..)
loc(..)
loc(..) ...
employs(..)
employs(..) ...
boss(..)
Emp(..)
Emp(..), ...
Dept(..)
Dept(..) ...
Emp(..)
Emp(..), ...
Dept(..)
Dept(..) ...
Emp(..)
Emp(..), ...
Dept(..)
Dept(..) ...
Emp(..)
Emp(..), ...
Dept(..)
Dept(..) ...
Emp(..)
Emp(..), ...
Dept(..)
Dept(..) ...
Emp(..)
Emp(..), ...
Dept(..)
Dept(..) ...
Search
order
Top of the ENVS stack
Class C3
Binders to internal properties of the
currently processed object O
CC
Binders to internal properties of the
class C1 that O is a member
Class C2
Binders to internal properties of the
class C2 that is a superclass of C1
CC
Class C1
SC
Object O
Binders to internal properties of the
class C3 that is a superclass of C2
............................
Binders with start identifiers of the
object store
Sections pushed
on ENVS during
processing of
the object O by
a non-algebraic
operator
Top of the ENVS stack
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
name(i6) sal (i7) worksIn (i8) ....
changeSal(i51) netSal(i52) ...
age(i41) ...
.........
Person(i1) ... Emp(i5) Emp(i9) ...
Sections
pushed by the
dot operator
Operator where
Calculation of
parameters, binding
the name MyMethod
and firing the method
Processing of the
MyMethod body
p1(result(q1))
p2(result(q2))
x1(..) x2(..)
After completing
MyMethod
nested(r1)
nested(iMC)
nested(r1)
nested(iMC)
nested(r1)
nested(iMC)
.......
.......
.......
.......
Global
sections
Global
sections
Global
sections
Global
sections
time
Evaluation of q0
result(q0)
Previous
QRES state
result(q2)
result(q1)
result(q0)
Previous
QRES state
Removing the
results of q1, q2
result(q0)
Previous
QRES state
result(q)
result(q0)
Previous
QRES state
Person[0..*]
name
birthYear
Address [0..1]
city
street
house#
age()
Emp[0..*]
e#
job[1..*]
sal[0..1]
changeSal(newSal)
netSal( )
worksIn
manages[0..1]
employs[1..*]
boss
Dept[0..*]
d#
dname
loc[1..*]
budget()
Binders to volatile objects/variables
of the current user session
Database section
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 sections
Search
order
sal(i17) worksIn(i18)
changeSal(i51) netSal(i52 ) ...
name(i8) born(i9)
Properties of the currently
processed Emp role
Properties of the EmpClass
Properties of the Person superrole of the Emp role
Properties of the PersonClass
age(i41) ...
.........
Person(i1) Person(i4) Person(i7)
Emp(i13) Emp(i16) Student(i19) ...
Bottom of
ENVS
.........
Database section
iR7C R7Class
iR6C R6Class
iR23C R23Class
iR1C R1Class
iR45C R45Class
iR1 R1
iR2 R2
iR4 R4
iR3 R3
iR5 R5
nested(iR5)
Sections of the role R5
nested(iR45C)
nested(iR3)
nested(iR23C )
Sections of the role R3
nested(iR6C )
nested(iR7C )
nested(iR1 )
nested(iR1C )
nested(iR7C )
.........
Sections of the role R1
Person[0..*]
name
birthYear
Address [0..1]
city
street
house#
age( )
Emp[0..1]
e#
job[1..*]
sal[0..1]
changeSal(newSal)
netSal( )
Student[0..*]
s#
faculty[0..1]
scholarship
Exam[0..*]
subject
score
avgScore( )
School[0..*]
name
city
studiesAt
teaches[0..*]
Dept[0..*]
worksIn
employs[1..*] d#
dname
boss loc[1..*]
Manager[0..1]
budget()
manages
The world of analysis and design:
teams of people having limitations of
memory, perception, expressing
information and communication.
The world of the problem domain:
complex, interdependent knowledge,
business processes, aspects, problems
and solutions.
Software:
strategic decisions, analysis,
design, construction, testing,
documentation, deployment,
user training, operation,
maintenance, modifications,
etc.
The world of computer technologies:
hardware, software, networks, languages,
methodologies, tools, facilities, standards, etc.
The world of software users: psychological
factors, ergonomy, limitations of memory,
tendency to errors and abuse, ownership,
intellectual properties, privacy, security, etc.
mapping
mapping
... ...
... ... ...
... ...
... ... ......
...
Human perception of
the problem domain
Abstract conceptual model
of the problem domain
...
...
... ...
... ...
Programmer’s view of data
structures and operations
seamless mapping
...
...
...
seamless mapping
...
...
...
...
...
...
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
1..*
Person
worksFor
Employee
0..*
Employer
Employment
Details
Company
Buyer
Buyer
Person
Name
Person
Name
Seller
Broker
Deal
Subject
Date
Price
Seller
Broker
Deal
Subject
Date
Price
Person
Doe
Person
Poe
Person
Doe
Buyer
Seller
Buyer
Broker
Broker
Person
Kim
Person
Kim
Broker
Broker
Deal
Car
1998.05.15
20000
Person
Noe
Seller
Deal
House
1995.08.16
40000
Deal
House
1995.08.16
40000
Buyer
Person
Poe
Seller
Person
Lee
Deal
Car
1998.05.15
20000
Buyer
Person
Noe
Seller
Person
Lee
Person
firstName
lastName
dateOfBirth
age()
inheritance
Student
student#
yearOfStudy
faculty
insertScore(...)
acceptSemester()
Employee
employee#
job
salary
company#
netSalary()
changeSalary(...)
object object object object
object object object object
Person
Patient
Student
Employee
Tax-payer
Student
Club-member
Dog-owner
PersonClass
Name
BirthYear
Age()
EmployeeClass
Salary
Job
NetSalary()
ChangeSalary(..)
Classes
Person
Name Doe
BirthYesr 1948
Person
Name Brown
BirthYear 1975
Employee
Salary 2500
Job analyst
Objects with roles
StudentClass
Semester
StudentNo
NewScore(...)
AvgScore()
Person
Name Smith
BirthYear 1951
Person
Name Jones
BirthYear 1940
Employee
Salary 1500
Job clerk
Student
Semester 7
StudentNo 223344
is_a_customer_of
Student
Semester 4
StudentNo 556677
is a member of
association link
works_in
works_in
studies_at
studies_at
inherits from
dynamically inherits from
Company
Name Bank
School
Name NYA
School
Name MLI
Employees
Employee
Employee
Surname
Surname
Employments
Children
Employments
Children
Employment
Child
Employment
Child
...
.....
Job
Employment
Child
Employment
Child
...
.....
Job
.....
Person[0..*]
lName
fName[1..*]
Addres[1..*]
Expert[0..*]
EW[0..*]
Competence[1..*]
Work[0..*]
WE Payment[0..*] WC
Expertise[1..*]
Company[0..*]
CW[0..*] cName
cLocation[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#)
Applications
based on virtual
repository
Application
1
Application
2
Application
3
Client
view 1
Client
view 2
Client
view 3
Web
Service
application
Client
view 4
ODRA database server
Integration view
Communication Bus
Contributory
view 1
Existing
sources
Contributory
view 2
O-R
wrapper
O-RDF
wrapper
Relational
databases
RDF
resources
XML
importer/
exporter
XML
files
Contributory Contributor
view 3
y
view
O-WS
wrapper
….
wrapper
Web Service
applications
….
application
Part [0..*]
name
Detail [0..*]
cost
mass
Aggregate [0..*]
assemblyCost
assemblyMass
Component [1..*]
amount
leadsTo
Company
name
hasSharesIn *
isOwnedBy
*
SupplierClass
….
Default attribute Sname = ”
”
Default attribute Status = -1
Default attribute City = ”???”
…..
Supplier
Sname Black
Sno 1234
City Rome
Supplier
Sname Gray
Sno 1256
Status 55
a) The natural scoping rule
b) Binding conflict
Local environment
of m
Local environment
of m
Class C2
….
method m
….
Class C1
….
Default attribute a = …
….
Object O
Class C1
….
Default attribute a = …
method m
….
Object O
…
attribute a = …
…
attribute a = …
The rest of the
environment
The rest of the
environment
Binding salary
name(”Brown”) address(..) job(..) worksIn (..)
Section pushed by the third where
operator for the Brown’s object
name(..) address(..) salary(..) job(..) worksIn (..)
Section pushed by the second
where operator for an Emp object
.........
Global stack sections
carburettor
bolt10x30
starter
……
…..
engine
…..
……
myperson
ancestors
allcousins
result
Emp(i1)
Temporary processing section
X(i127) Y(i128)
N(5) I("Maria")
Temporary processing section properties of an executed procedure
.........
Conceptual
ENVS
name(i10) sal(i11)
address(i12) worksIn(i16)
.........
Temporary processing section
Temporary processing section
- properties of a processed object
Temporary processing section
Binders to volatile properties
of the current client session
Emp(i1) Emp(i5) Emp(i9) ...
Dept(i17) Dept(i22) ...
Database section
Libraries and computer
environment
<iloc, …, local procedure
objects and binders>
Emp(i1)
Environment of iloc
.........
Optimized
ENVS
Environment of i9
.........
Environment of ises
Environment of idb
Libraries and computer
environment
< i9, Emp, {
<i10, name, …>,
<i11, sal, …>
<i12, address, …>
<i16, worksIn,…> } >
<ises, …, objects of the
current session>
<idb, …, database objects>
Person[0..*]
name: string
birthYear: integer
address [0..1]
city: string
street: string
house: integer
age(): integer
Emp[0..*]
eno: integer
worksIn
job: string[0..1]
sal: real
manages[0..1]
changeSal(newSal: real)
netSal( ): real
employs[1..*]
boss
Dept[0..*]
dno: integer
dname: string
loc: string[1..*]
budget(): real
P1
calls
P2
Top of the stack
Activation
record of P1
........
Global entities
P1 is running
P2
calls
P3
Activation
record of P2
Activation
record of P1
........
Global entities
P2 is running
P3
ends
Activation
record of P3
Activation
record of P2
Activation
record of P1
........
Global entities
P3 is running
P2
ends
Activation
record of P2
Activation
record of P1
........
Global entities
P2 is running
Activation
record of P1
........
Global entities
P1 is running
time