64
Dept [0..*] dname: string location: string [1..*] Emp [0..*] name: string age: integer sal: integer [0..1] worksIn [1..1] employs [1..*] i 50 Dept i 51 dname ”Trade” i 52 location ”Paris” i 53 location „Rome” i 54 employs i 10 i 60 Dept i 61 dname ”Ads” i 62 location ”Berlin” i 63 employs i 30 i 64 employs i 20 i 30 Emp i 31 name ”Lee” i 32 age 20 i 33 worksIn i 60 i 10 Emp i 11 name ”Doe” i 12 age 29 i 13 sal 1900 i 14 worksIn i 50 i 20 Emp i 21 name ”Poe” i 22 age 41 i 23 sal 2500 i 24 worksIn i 60

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

  • 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

Page 1: Dept  [0..*] dname: string location: string [1..*]

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

Page 2: Dept  [0..*] dname: string location: string [1..*]

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

Page 3: Dept  [0..*] dname: string location: string [1..*]

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

Page 4: Dept  [0..*] dname: string location: string [1..*]

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

Page 5: Dept  [0..*] dname: string location: string [1..*]

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

Page 6: Dept  [0..*] dname: string location: string [1..*]

<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

Page 7: Dept  [0..*] dname: string location: string [1..*]

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

Page 8: Dept  [0..*] dname: string location: string [1..*]

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

Page 9: Dept  [0..*] dname: string location: string [1..*]

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>

Page 10: Dept  [0..*] dname: string location: string [1..*]

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

Page 11: Dept  [0..*] dname: string location: string [1..*]

StudentEmployee Club-member

Student

Tax-payer

Dog-owner

Person

Patient

Page 12: Dept  [0..*] dname: string location: string [1..*]

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

Page 13: Dept  [0..*] dname: string location: string [1..*]

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...)

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

Page 14: Dept  [0..*] dname: string location: string [1..*]

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>

Page 15: Dept  [0..*] dname: string location: string [1..*]

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

Page 16: Dept  [0..*] dname: string location: string [1..*]

i1 Emp

i5 Emp

i9 Emp

i17 Dept

i22 Dept

Persistent (shared) objects

i127 X i128 Y

Volatile (non-shared) objects

Client Server

Page 17: Dept  [0..*] dname: string location: string [1..*]

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

Page 18: Dept  [0..*] dname: string location: string [1..*]

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

Page 19: Dept  [0..*] dname: string location: string [1..*]

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

Page 20: Dept  [0..*] dname: string location: string [1..*]

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

Page 21: Dept  [0..*] dname: string location: string [1..*]

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 ) }

Page 22: Dept  [0..*] dname: string location: string [1..*]

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

Page 23: Dept  [0..*] dname: string location: string [1..*]

(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

Page 24: Dept  [0..*] dname: string location: string [1..*]

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

Page 25: Dept  [0..*] dname: string location: string [1..*]

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

Page 26: Dept  [0..*] dname: string location: string [1..*]

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

Page 27: Dept  [0..*] dname: string location: string [1..*]

previous state of QRES

eval( q )

result of query q

previous state of QRES

previous state of QRES

a consumerof the result

Page 28: Dept  [0..*] dname: string location: string [1..*]

Start

Non-algebraic where

Left subquery Right subquery

Name Emp

Algebraic2 =

Left subquery Right subquery

Name name

Algebraic1 deref String value ”Poe”

Page 29: Dept  [0..*] dname: string location: string [1..*]

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)

Page 30: Dept  [0..*] dname: string location: string [1..*]

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

Page 31: Dept  [0..*] dname: string location: string [1..*]

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

Page 32: Dept  [0..*] dname: string location: string [1..*]

( 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(..) ...

Page 33: Dept  [0..*] dname: string location: string [1..*]

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

Page 34: Dept  [0..*] dname: string location: string [1..*]

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

Page 35: Dept  [0..*] dname: string location: string [1..*]

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

Page 36: Dept  [0..*] dname: string location: string [1..*]

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

Page 37: Dept  [0..*] dname: string location: string [1..*]

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

Page 38: Dept  [0..*] dname: string location: string [1..*]

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

Page 39: Dept  [0..*] dname: string location: string [1..*]

iR1C R1Class

iR1 R1

iR2 R2 iR3 R3

iR5 R5 iR4 R4

iR6C R6Class

iR45C R45Class

iR7C R7Class

iR23C R23Class

Page 40: Dept  [0..*] dname: string location: string [1..*]

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

Page 41: Dept  [0..*] dname: string location: string [1..*]

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]

Page 42: Dept  [0..*] dname: string location: string [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.

Page 43: Dept  [0..*] dname: string location: string [1..*]

Human perception of the problem domain

Abstract conceptual model of the problem domain

Programmer’s view of data structures and operations

mappingmapping

... ... ...

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

... ... ...

Page 44: Dept  [0..*] dname: string location: string [1..*]

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

...

...

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

...

...

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

...

...

...

...

...

...

Page 45: Dept  [0..*] dname: string location: string [1..*]

Person CompanyEmployerEmployee

EmploymentDetails

1..* worksFor 0..*

Page 46: Dept  [0..*] dname: string location: string [1..*]

Broker

DealSubject

DatePrice

PersonName

Buyer

Seller

Broker

PersonName

Buyer

Seller

DealSubject

DatePrice

Page 47: Dept  [0..*] dname: string location: string [1..*]

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

Page 48: Dept  [0..*] dname: string location: string [1..*]

Employeeemployee#

jobsalary

company#netSalary()

changeSalary(...)

Studentstudent#

yearOfStudyfaculty

insertScore(...)acceptSemester()

PersonfirstNamelastName

dateOfBirth age()

objectobjectobjectobjectobjectobjectobjectobject

inheritance

Page 49: Dept  [0..*] dname: string location: string [1..*]

StudentEmployee

Club-memberStudent Tax-payer

Dog-owner

Person

Patient

Page 50: Dept  [0..*] dname: string location: string [1..*]

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

Page 51: Dept  [0..*] dname: string location: string [1..*]

Employees

.....

Employee

Employments

.....

Employment

Employment

Job

Surname

Children

...

Child

Child

Employee

Employments

.....

Employment

Employment

Job

Surname

Children

...

Child

Child

Page 52: Dept  [0..*] dname: string location: string [1..*]

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..*]

Page 53: Dept  [0..*] dname: string location: string [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#)

Page 54: Dept  [0..*] dname: string location: string [1..*]

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

Page 55: Dept  [0..*] dname: string location: string [1..*]

Part [0..*]name

Aggregate [0..*]assemblyCostassemblyMass

Detail [0..*]costmass

Component [1..*] amount leadsTo

Page 56: Dept  [0..*] dname: string location: string [1..*]

*

hasSharesIn

isOwnedBy

*

Companyname

Page 57: Dept  [0..*] dname: string location: string [1..*]

SupplierClass….

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

…..

SupplierSname BlackSno 1234City Rome

SupplierSname GraySno 1256Status 55

Page 58: Dept  [0..*] dname: string location: string [1..*]

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

Page 59: Dept  [0..*] dname: string location: string [1..*]

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

Page 60: Dept  [0..*] dname: string location: string [1..*]

engine

…..carburettor starter

bolt10x30

………..

……

Page 61: Dept  [0..*] dname: string location: string [1..*]

myperson ancestors resultallcousins

Page 62: Dept  [0..*] dname: string location: string [1..*]

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

Page 63: Dept  [0..*] dname: string location: string [1..*]

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

Page 64: Dept  [0..*] dname: string location: string [1..*]

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