1.1 The Evolution of the Relational Database
The relational
database concept was described first by Dr. Edgar F.
Codd in
an IBM research publication entitled "System R4
Relational" appearing in 1970. Initially, it was
unclear whether any system based on this concept could achieve
commercial success. Nevertheless, Relational
Software, Incorporated (RSI) began in 1977 and released Oracle V.2 as
the world's first relational database within a
couple of years. By 1985, Oracle could claim more than 1,000
relational database customer sites. By comparison, IBM would not
embrace relational technology in a commercial product until the
Query Management Facility
in 1983.Why has relational database technology grown to become the de facto
database technology since that time? A look back at previous database
technology may help to explain this phenomenon.Database management
systems were first defined in the 1960s to provide a common
organizational framework for what had been data stored in independent
files. In 1964, Charles Bachman of General Electric proposed a
network model with data records linked
together, forming intersecting sets of data, as shown on the left in
Figure 1-1. This work formed the basis of the CODASYL Data Base Task
Group. Meanwhile, the North American Aviation's
Space Division and IBM developed a second approach based on a
hierarchical model in 1965. In this
model, data is represented as tree structures in a hierarchy of
records, as shown on the right in Figure 1-1.
IBM's product
based on this model was brought to market in 1969 as the
Information Management
System (IMS). As recently as 1980, almost all database
implementations used either the network or hierarchical approach.
Although several competitors utilized these technologies, only IMS
remains.
Figure 1-1. Network model (left) and hierarchical model (right)

1.1.1 Relational Basics
The
relational
database uses the concept of linked two-dimensional tables consisting
of rows and columns, as shown in Figure 1-2. Unlike the hierarchical
approach, no predetermined relationship exists between distinct
tables. This means that the data needed to link together the
different areas of the network or hierarchical model need not be
defined. Because relational users don't need to
understand the representation of data in storage to retrieve it (many
such users created ad hoc queries against the data), ease of use
helped popularize the relational model.
Figure 1-2. Relational model with two tables

Relational programming is nonprocedural and operates on a set of rows
at a time. In a master-detail relationship between tables, there can
be one or many detail rows for each individual master row, yet the
statements used to access, insert, or modify the data would simply
describe the set of results. In many early relational databases, data
access required the use of procedural languages that worked one
record at a time. Because of this set orientation, programs can
access more than one record in a relational database more easily.
Relational databases can be used more productively to extract value
from large groups of data.The contents of the rows in Figure 1-2 are sometimes referred to as
records.
A column within a row is referred to as a
field.
Tables are stored in a database
schema,
which is a logical organizational unit within the database. Other
logical structures in the schema often include the following:Views
Provide a single view of data derived from one or more tables or
views. The view is an alternative interface to the data, which is
stored in the underlying table(s) that make up the view.
Sequences
Provide unique numbers for column values.
Stored procedures
Contain logical modules that can be called from programs.
Synonyms
Provide alternative names for database objects.
Indexes
Provide faster access to table rows.
Database links
Provide links between distributed databases.
The relationships between columns in different tables are typically
described through the use of
keys,
which are implemented through referential integrity constraints and
their supporting indexes. For example, in Figure 1-2, you can
establish a link between the DEPTNO column in the second table, which
is called a foreign key, to the
DEPTNO column in the first table, which is referred to as the
primary key of that
table.Finally, even if you define many different indexes for a table, you
don't have to understand them or manage the data
they contain. Oracle includes a query optimizer
(described in Chapter 4) that chooses the best way
to use your indexes to access the data for any particular query.The relational approach lent itself to the Structured Query
Language (SQL). SQL was initially defined over a period of years by
IBM Research, but it was Oracle
Corporation that first introduced it to the market in 1979. SQL was
noteworthy at the time for being the only language needed to use
relational databases, because you could use SQL:For queries (using a SELECT statement)As a Data Manipulation Language or DML (using INSERT, UPDATE, and
DELETE statements)As a Data Definition Language or DDL (using CREATE or DROP statements
when adding or deleting tables)To set privileges for users or groups (using GRANT or REVOKE
statements)
Today, SQL contains many extensions with ANSI/ISO standards that
define its basic syntax.
1.1.2 How Oracle Grew
In 1983, RSI was renamed Oracle Corporation to avoid
confusion with a competitor named RTI. At this time, the developers
made a critical decision to create a portable version of Oracle
(Version 3) that ran not only on Digital VAX/VMS systems, but also on
Unix and other platforms. By 1985, Oracle claimed the ability to run
on more than 30 platforms. Some of these platforms are historical
curiosities today, but others remain in use. (In addition to VMS,
early operating systems supported by
Oracle included IBM MVS, DEC Ultrix,
HP/UX, IBM AIX, and Sun's Solaris version of Unix.)
Oracle was able to leverage and accelerate the growth of
minicomputers and Unix servers in the 1980s. Today, Oracle is
portable to both Microsoft Windows and Linux, which are the leading
operating systems on popular commodity servers.In addition to multiple platform support, other core Oracle messages
from the mid-1980s still ring true today, including complementary
software development and decision support tools, ANSI standard SQL
across platforms, and connectivity over standard networks. Since the
mid-1980s, the database deployment model has evolved from dedicated
database application servers to client/server to Internet computing
implemented with PCs and thin clients accessing database applications
via browsersand, to the grid with Oracle Database 10g.Oracle introduced many innovative technical features to the database
as computing and deployment models changed (from offering the first
distributed database to the first Java Virtual Machine in the core
database engine). Oracle also continues to support emerging standards
such as XML and .NET. Table 1-1 presents a short list of
Oracle's major feature introductions.