A pointer is a unique reference to a row in a relational database table.
The ability to store these row IDs inside a relational table extends the traditional relational model
and enhances the ability of an object-relational database
to establish relationships between tables.
The new abilities of pointer data types include:
- Referencing: Referencing sets of related rows in other tables:
It is now possible to violate first normal form and have a cell in a table that contains a pointer to repeating table values. For example, an EMPLOYEE table could contain a pointer called JOB_HISTORY_SET,
which in turn could contain pointers to all of the relevant rows in a JOB_HISTORY table.
This technique also lets you pre-build aggregate objects, such that you could preassemble all of the specific rows that comprise the aggregate table.
- Allow pointers to non-database objects in a flat file: For example, a table cell could contain a pointer to a flat file that contains a non-database object such as a picture in .gif or .jpeg format.
- The ability to establish one-to-many and many-to-many data relationships without relational foreign keys:
This would alleviate the need for relational JOIN operations, because table columns could contain references to rows in other tables.
By dereferencing these pointers, you could retrieve rows from other tables without ever using the time-consuming SQL JOIN operator.