5.2 Object Based Databases, Concepts, Object Relational Features
5.2 Object Based Databases, Concepts, Object Relational Features
CS 8492
DATABASE MANAGEMENT SYSTEMS
(Common to CSE & IT)
UNIT NO. 5
Version: 1.0
CS8492
OBJECT-BASED DATABASES
Traditional database applications have conceptually simple data types. The basic data
items are records that are fairly small and whose fields are atomic.
In recent years, demand has grown for ways to deal with more complex data types.
Consider, for example,
Addresses - While an entire address could be viewed as an atomic data item of type
string, this view would hide
details -such as the street address, city, state, and postal code, which could be of
interest to queries.
On the other hand, if an address were represented by breaking it into the components
(street address, city, state, and postal code), writing queries would be more
complicated since they would have to mention each field. A better alternative is to
allow structured data types that allow a type address with subparts street address, city,
state, and postal code.
Structured Types
(firstname varchar(20),
lastname varchar(20))
CS8492
final;
An access to attribute name would return a value of the structured type Name.
name Name,
address Address,
dateOfBirth date)
not final
Type Inheritance
(name varchar(20),
CS8492
address varchar(20));
We may want to store extra information in the database about people who are students,
and about people who are teachers. Since students and teachers are also people, we
can use inheritance to define the student and teacher types
in SQL:
under Person
(degree varchar(20),
department varchar(20));
under Person
(salary integer,
department varchar(20));
Both Student and Teacher inherit the attributes of Person—namely, name and address.
Student and Teacher are said to be subtypes of Person, and Person is a super type of
Student, as well as of Teacher.
Table Inheritance
We can then define tables students and teachers as sub tables of people, as follows:
under people;
under people;
The types of the sub tables (Student and Teacher in the above example) are subtypes
of the type of the parent table (Person in the above example). As a result, every
attribute present in the table people is also present in the sub tables students and
teachers.
A multi set is an unordered collection, where an element may occur multiple times.
Multi sets are like sets, except that a set allows each element to occur at most once.
Suppose we wish to record information about books, including a set of keywords for
each book. Suppose also that we wished to store the names of authors of a book as an
array; unlike elements in a multi set, the elements of an array are ordered, so we can
distinguish the first author from the second author, and so on.
The following example, illustrates how these array and multi set-valued attributes can
be defined in SQL:
(name varchar(20),
branch varchar(20));
(title varchar(20),
The first statement defines a type called Publisher with two components: a name and
a branch. The second statement defines a structured type Book that contains a title, an
author array, which is an array of up to 10 author names, a publication date, a
publisher (of type Publisher), and a multi set of keywords.
For example, in SQL we can define a type Department with a field name
and a field head that is a reference to the type Person, and a table departments of type
Department,
as follows:
name varchar(20),
Here, the reference is restricted to tuples of the table people. The restriction of the
scope of a reference to
tuples of a table is mandatory in SQL, and it makes references behave like foreign
keys.
Object-relational Features
CS8492
Sub tables can be stored in an efficient manner, without replication of all inherited
fields, in one of two ways:
Each table stores the primary key (which may be inherited from a parent table) and
the attributes that are defined locally.
Inherited attributes (other than the primary key) do not need to be stored, and can be
derived by means of a join with the super table, based on the primary key.
Each table stores all inherited and locally defined attributes. When a tuple is inserted,
it is stored only in the table in which it is inserted, and its presence is inferred in each
of the super tables.
The ODMG object model is the data model upon which the object definition
language (ODL) and object query language (OQL) are based. It is meant to provide a
standard data model for object databases, just as SQL describes a standard data model
for relational databases. It also provides a standard terminology in a field where the
same terms were sometimes used to describe different concepts.
Objects and literals are the basic building blocks of the object model. The main
difference between the two is that an object has both an object identifier and a state
(or current value), whereas a literal has a value (state) but no object identifier. In
either case, the value can have a complex structure.
CS8492
The object state can change over time by modifying the object value. A literal is
basically a constant value, possibly having a complex structure, but it does not change.
An object has five aspects: identifier, name, lifetime, structure, and creation.
2. Some objects may optionally be given a unique name within a particular ODMS—
this name can be used to locate the object, and the system should return the object
given that name.
particular object type—such as extents—will have a name. These names are used as
entry points to the database;
that is, by locating these objects by their unique name, the user can then locate other
objects that are referenced from these objects. Other important objects in the
application may also have unique names, and it is possible to give more than one
name to an object.
Lifetimes are independent of types—that is, some objects of a particular type may be
transient whereas others may be persistent.
4. The structure of an object specifies how the object is constructed by using the type
constructors. The structure specifies whether an object is atomic or not. An atomic
CS8492
object refers to a single object that follows a user-defined type, such as Employee or
Department. If an object is not atomic, then it will be composed of
other objects.
For example, a collection object is not an atomic object, since its state will be a
collection of other objects. In the ODMG model, an atomic object is any individual
user-defined object. All values of the basic built-in data types are considered to be
literals.
5. Object creation refers to the manner in which an object can be created. This is
typically accomplished via an operation new for a special Object_Factory interface.
In the object model, a literal is a value that does not have an object identifier.
However, the value may have a simple or complex structure.
1. Atomic literals
The basic data types of the object model include long, short, and unsigned integer
numbers (these are specified by the keywords long, short, unsigned long, and
unsigned short in ODL), regular and double precision floating point numbers (float,
double), Boolean values (boolean), single characters (char), character strings (string),
and enumeration types (enum), among others.
2. Structured literals correspond roughly to values that are constructed using the
tuple constructor. The built-in structured lit-erals include Date, Interval,Time, and
Timestamp.
3. Collection literals specify a literal value that is a collection of objects or values but
the collection itself does not have an Object_id. The collections in the object model
can be defined by the type generators set<T>,bag<T>, list<T>, and array<T>, where T
is the type of objects or values in the collection.28 Another
CS8492
The notation of ODMG uses three concepts: interface, literal, and class. Following
the ODMG terminology, we use the word behavior to refer to operations and state to
refer to properties (attributes and relationships).
A class specifies both state (attributes) and behavior (operations) of an object type,
and is instantiable. Hence, database and application objects are typically created based
on the user-specified class declarations that form a database schema.
Finally, a literal declaration specifies state but no behavior. Thus, a literal instance
holds a simple or complex structured value but has neither an object identifier nor
encapsulated operations.