Object database standards, languages and design - PowerPoint PPT Presentation

About This Presentation
Title:

Object database standards, languages and design

Description:

Lecture 3 Object database standards, languages and design Development of Object-based Systems Object-Oriented Database Systems An alternative to relational systems ... – PowerPoint PPT presentation

Number of Views:148
Avg rating:3.0/5.0
Slides: 41
Provided by: DougK151
Category:

less

Transcript and Presenter's Notes

Title: Object database standards, languages and design


1
Lecture 3
  • Object database standards, languages and design

2
Development of Object-based Systems
  • Object-Oriented Database Systems
  • An alternative to relational systems
  • Application domains where objects play central
    role
  • Heavily influenced by object-oriented programming
    languages
  • An attempt to add DBMS functionality to a
    programming language environment

3
Development of Object-based Systems - cont.
  • Object-Relational Database Systems
  • An attempt to extend relational databases
  • Broader set of applications
  • Provide bridge between relational and
    object-oriented systems

4
Why a Standard?
  • Portability from one vendor (system) to another
  • Interoperability between systems based on
    different vendor products easier

5
Object Data Management Group(ODMG)
  • ODMG-93 or ODMG 1.0 ODMG 2.0 (1997)
  • Parts
  • Object model
  • Object definition model (ODL)
  • Object query language (OQL)
  • Bindings to OO programming languages

6
Unified Modeling Language (UML)
  • Consortium of vendors including
  • DEC
  • HP
  • IBM
  • Unisys
  • I-Logix
  • Intellicorp
  • MCI Systemhouse
  • TI
  • Microsoft
  • Icon Computing
  • Rational Software
  • Oracle
  • UML 0.9 (1996) UML 1.1 (1997)
  • Unified as to
  • Differences in Modeling Languages
  • Differences in Perspectives

7
ODMG Object Model
  • Literal
  • State (or value) constant
  • No OID
  • May have complex structure
  • Types of literals
  • Atomic - Simple, e.g., 10.2
  • - Structured, e.g. Date (19, May, 2001)
  • Collection, e.g. days of the week (Sun, Mon, ,
    Sat)

8
ODMG Object Model
  • Object
  • Identifier (OID)
  • Name (optional)
  • Lifetime (persistent or transitory)
  • Structure
  • How constructed
  • Atomic
  • Collection t a type, k a key, v a value
  • Set lttgt
  • Bag lttgt
  • List lttgt
  • Array lttgt
  • Dictionary ltk, vgt
  • Specified by interface

9
Interface Definitions from ODMG Object Model
  • Object Data Language
  • ODL

10
ExamplesObject inherited by all
objectsDate structured literal
interface Object boolean same_as(in Object
other_object) Object copy() void delete()
Date is subtype of Object (i.e., inherits from).
interface Date Object enum Weekday Sunday,
Monday, , Saturday enum Month January,
February, , December unsigned
short year() unsigned short month() unsigned
short day() boolean is_equal(in Date
other_Date) boolean is_greater(in Date
other_Date)
Operations are inherited by user-defined objects.
11
See text for the following examples
  • Structured Literals
  • Time
  • Timestamp
  • Interval
  • Collection Objects
  • Collection
  • Iterator
  • Set
  • Bag
  • List
  • Array
  • Association
  • Dictionary

12
Object Interfaces
  • All objects inherit basic interface of Object
    using dot notation
  • o.same_as(p) true if p is the same as o
  • p o.copy() create copy p of object o
  • o.delete() delete object o
  • May also use arrow notation
  • o-gtsame_as(p) true if p is the same as o

13
Class Definition Examples Employee
Class Employee ( extent all_employees key ssn
) attribute string name attribute string ssn
attribute date birthdate attribute enum
GenderM,F sex relationship Department works_fo
r inverse Departmenthas_emps void reassign_e
mp(in string new_dname) raises(dname_not_valid)

Note that both works_for and inverse
relationship, has_emps, are specified.
14
Class Definition Examples Department
Class Department ( extent all_departments key dna
me, dnumber ) attribute string dname attribute
short dnumber attribute struct
Dept_MgrEmployee manager, date
startdate mgr attribute setltstringgt
locations attribute struct Projs string
projname, time weekly_hours projs relations
hip setltEmployeegt has_emps inverse
Employeeworks_for void add_emp(in string
new_ename) raises(ename_not_valid) void change_m
anager(in string new_mgr_name) in date
startdate)
15
Relationships works_for and has_emps
betweenEmployee and Department
Class Employee relationship Department
works_for inverse Departmenthas_emps
Class Department relationship set ltEmployeegt
has_emps inverse Employeeworks_for
16
COMPANY database in ODL Diagrammore details on
page 680 in book
works_for
employs
supervisee
EMPLOYEES
DEPARTMENT
manages
managed_by
located_at
supervisor
manager
controls
department
has_ dependents
MANAGE_DEPT
works _on
has_ departments
LOCATION
employee
has_ projects
WORKS_ON_PROJECT
project
controlled _by
dependent_of
located_at
employees_on
DEPENDENT
PROJECT
17
Object Types Interfaces vs. Classes
  • Terminology
  • Behavior operations
  • State properties (attributes relationships)
  • Interface (e.g. Date)
  • Abstract behavior, specification via operation
    signatures
  • Noninstantiable (i.e. cannot have object matching
    description)
  • Used via inheritance (behavior inheritance )
  • Class (e.g. Employee)
  • Abstract behavior
  • Abstract state
  • Instantiable

18
Inheritance Relationships Behavior vs. Extends
  • Behavior Inheritance
  • Supertype must be interface
  • Subtype may be interface or class
  • Denoted by
  • Multiple inheritance permitted
  • EXTENDS Inheritance
  • Inherit state and behavior among classes
  • Both supertype and subtype must be classes
  • Multiple inheritance not permitted
  • Specified by extends keyword

19
Example Person UNIVERSITY Database
Class Person ( extent persons key ssn
) attribute struct Pname string fname, string
mname, string iname name attribute string s
sn attribute date birthdate attribute enum
GenderM,F sex attribute struct Address short
no, string street, , short zip short age()
20
Example Faculty UNIVERSITY Database
Class Faculty extends Person ( extent faculty) a
ttribute string rank attribute float salary at
tribute string office attribute string
phone relationship Department works_in invers
e Departmenthas_faculty relationship setltGradS
tudentgt advises inverse GradStudent
advisor relationship setltGradStudentgt on_commi
ttee_of inverse GradStudent committee void g
ive_raise(in float raise) void promote(in
string new_rank)
Extends inheritance from Person
21
Example other classes UNIVERSITY Database
  • Student
  • extends Person
  • Degree
  • GradStudent
  • extends Student
  • Department
  • Course
  • Section
  • CurrSection
  • extends Section
  • Grade

22
Factory Objects
  • Used to generate individual objects
  • Examples
  • ObjectFactory
  • DateFactory
  • DatabaseFactory
  • Include new() operation

Interface ObjectFactory Object new()
23
Database Factory
interface Database void open(in string
database_name) void close() void bind( in any
some_object, in string some_object) Object u
nbind(in string name) Object lookup(in string
object_name) raises(ElementNotFound)
interface DatabaseFactory Database new()
24
Object Database Standards, Languages, and
DesignPart II Object Query language (OQL)

25
Object Query Language (OQL)
  • Bring the best of SQL to the object world.
  • Syntax similar to SQL
  • Plus additional features
  • Works with programming languages where ODMG has
    defined bindings
  • Java, C, Smalltalk
  • Returns object matching type system of that
    language
  • May implement class operations in these languages
  • SQL3 Bring the best of the object-oriented
    world to the relational world.

26
Movies Example Movies, Stars, Studios
Star name address street city
Movie title year length / in minutes
/ filmTypecolor, blackAndWhite lengthInHours s
tarNames otherMovies
stars starredIn 1.. 1..
ownedBy owns 1.. 1..1
Studio name
Set of stars of this movie.
Other movies by star of this movie.
27
Movies Example Movies, Stars, Studios
class Movie (extent Movies key (title,
year)) attribute string title attribute
integer year attribute integer length / in
minutes / attribute enumeration (color,
blackAndWhite) filmType relationship setltStargt
stars inverse Star starredIn relationship S
tudio ownedBy inverse Studio owns float
lengthInHours() raises(noLengthFound) starName
s(out setltStringgt) otherMovies(in Star, out
set(ltMoviegt) raises(noSuchStar)
28
Movies Example, contd.
Class Star (extent Stars key name) attribute
string name attribute struct Addr string
street, string city address relationship setltM
oviegt starredIn inverse Movie stars
Class Studio (extent Studios key
name) attribute string name relationship setltM
oviegt owns inverse Movie ownedBy
29
Specifying data from ODB
  • Path expression
  • Dot notation similar to structure in programming
    language,
  • e.g., o.a attribute a of object o.
  • Select-From-Where expression
  • Similar to SQL.
  • References are to data classes, not relations.
  • Integrated directly into host language.

30
Path Expressions
Assume myMovie a host-language variable, value a
Movie object.
  • myMovie.length - length of the movie.
  • myMovie.lengthInHours() - real number, computed
    as length in minutes.
  • myMovie.stars set of Star objects related to
    myMovie by relationship stars.
  • myMovie.starNames(myStars) returns no value,
    sets output variable myStars of method starNames
    to set of strings with names of the stars of the
    movie.
  • myMovie.ownedBy.name string that is name of
    studio owning myMovie.

31
Select-From-Where Expressions, I
  • Year of the movie Gone with the Wind.
  • select m.year
  • from m in Movie
  • where m.title Gone with the Wind
  • Bag containing names of stars of Casablanca.
  • select s.name
  • from m in Movies, s in m.stars
  • where m.title Casablanca
  • Set containing names of stars of Disney movies.
  • select distinct s.name
  • from m in Movies, s in m.stars
  • where m.ownedBy.name Disney

Might contain duplicates, therefore bag.
Must name all components in hierarchy, i.e.,
Movies stars.
No duplicates, therefore set.
32
Select-From-Where Expressions, II
  • Pairs of stars living at the same address.
  • select distinct struct(star1 s1, star2 s2)
  • from s1 in Stars, s2 in Stars
  • where s1.addr s2.addr and s1.name lt s2.name
  • Set containing names of stars of Disney movies,
    using subquery.
  • Select distinct s.name
  • from (select m
  • from m in Movies
  • where m.ownedBy.name Disney) dm,
  • s in dm.stars
  • Set of all Disney movies, ordering results by
    length and title.
  • select m
  • from m in Movies
  • where m.ownedBy.name Disney
  • order by m.length, m.title

Result is set of structs.
Bag of all Disney movies.
Stars in those movies.
List of Movies in ascending order
33
Select-From-Where Expressions, III
  • Set containing names of stars of Disney movies,
    using existential quantifier.
  • select distinct s.name
  • from s in Stars
  • where exists m in s.starredIn
  • m.ownedBy.name Disney
  • Set containing names of stars that have appeared
    only in Disney movies, using universal
    quantifier.
  • select distinct s.name
  • from s in Stars
  • where for all m in s.starredIn
  • m.ownedBy.name Disney

34
Select-From-Where Expressions, IV
  • Average length of all movies.
  • Avg( select m.length from Movies m)
  • Table of lengths of movies for each studio for
    each year.
  • select std, yr, sumLength sum( select p.m.length
  • from p in partition)
  • from m in Movies
  • group by std m.studio, yr m.year
  • Table of lengths of movies for each studio for
    each year where studio produced at least one
    movie of over 120 minutes in that year.
  • select std, yr, sumLength sum( select p.m.length
  • from p in partition)
  • from m in Movies
  • group by std m.studio, yr m.year
  • having max(select p.m.length from partition p) gt
    120

Want bag of lengths, not set.
35
Views
  • View returning Set containing movies by studio
    studio.
  • define moviesFromStudio(studio) as
  • select m
  • from m in Movies
  • where m.ownedBy.name studio

Do not need distinct m, since Movies is already
a set.
36
Returning a single element
  • Bag or Set (if distinct included) normally
    returned.
  • May want single element.
  • Return Movie with name Casablanca.
  • Element (select m
  • from m in Movies
  • where m.title Casablanca)

37
Find names of those who starred in all Disney
movies.
Star name address street city
Movie title year length / in minutes
/ filmTypecolor, blackAndWhite lengthInHours s
tarNames otherMovies
stars starredIn 1.. 1..
ownedBy owns 1.. 1..1
Studio name
Idea select s.name from s in Star where for
all DisneyMovies exists ds in
DisneyMovies.stars with same name
38
Find names of those who starred in all Disney
moviesFirst attempt.
  • Using if p then q.
  • select s.name
  • from s in Star
  • where for all m in Movie
  • (if m.ownedBy.name Disney
  • then exists s1 in m.stars
  • s1.name s.name)
  • Converting if p then q to p or q.
  • select s.name
  • from s in Star
  • where for all m in Movie
  • (m.ownedBy.name ! Disney
  • or
  • exists s1 in m.stars
  • s1.name s.name)

39
Find names of those who starred in all Disney
moviesUsing a view of all Disney movies.
  • View returning Set of Disney movies.
  • define DisneyMovies as
  • select m
  • from m in Movies
  • where m.ownedBy.name Disney
  • Query for stars using the DisneyMovies view.
  • select s.name
  • from s in Star
  • where for all dm in DisneyMovie
  • (exists s1 in dm.stars
  • s1.name s.name)

40
Find names of those who starred in all Disney
moviesUsing the Movie.starNames function.
  • Change
  • starNames(out setltStringgt) to a function
  • setltStringgt starNames()
  • Query for stars using the DisneyMovies view and
    starNames() function.
  • select s.name
  • from s in Star
  • where for all dm in DisneyMovie
  • s.name in dm.starNames()
Write a Comment
User Comments (0)
About PowerShow.com