| PostgreSQL | 
|---|
| Prev | Chapter 1. Introduction | Next | 
     Traditional   relational  database  management  systems
     (DBMSs) support a data model consisting of a collection
     of named relations, containing attributes of a specific
     type.  In current commercial  systems,  possible  types
     include  floating  point  numbers,  integers, character
     strings, money, and dates.  It is  commonly  recognized
     that  this model is inadequate for future data 
     processing applications.
     The relational  model  successfully  replaced  previous
     models  in  part  because  of its "Spartan simplicity".
     However, as mentioned, this simplicity often makes  the
     implementation  of  certain applications very difficult.
     Postgres offers  substantial  additional
     power  by  incorporating  the following four additional
     basic concepts in such a way that  users  can  easily
     extend the system:
| classes | 
| inheritance | 
| types | 
| functions | 
Other features provide additional power and flexibility:
| constraints | 
| triggers | 
| rules | 
| transaction integrity | 
These features put Postgres into the category of databases
referred to as object-relational. Note that this is distinct
from those referred to as object-oriented, which in general
are not as well suited to supporting the traditional relational database languages.
So, although Postgres has some object-oriented features,
it is firmly in the relational database world. In fact, some commercial databases
have recently incorporated features pioneered by Postgres.