<P> A foreign key is a field in a relational table that matches the primary key column of another table . The foreign key can be used to cross-reference tables . Foreign keys do not need to have unique values in the referencing relation . Foreign keys effectively use the values of attributes in the referenced relation to restrict the domain of one or more attributes in the referencing relation . A foreign key could be described formally as: "For all tuples in the referencing relation projected over the referencing attributes, there must exist a tuple in the referenced relation projected over those same attributes such that the values in each of the referencing attributes match the corresponding values in the referenced attributes ." </P> <P> A stored procedure is executable code that is associated with, and generally stored in, the database . Stored procedures usually collect and customize common operations, like inserting a tuple into a relation, gathering statistical information about usage patterns, or encapsulating complex business logic and calculations . Frequently they are used as an application programming interface (API) for security or simplicity . Implementations of stored procedures on SQL RDBMS's often allow developers to take advantage of procedural extensions (often vendor - specific) to the standard declarative SQL syntax . Stored procedures are not part of the relational database model, but all commercial implementations include them . </P> <P> An index is one way of providing quicker access to data . Indexes can be created on any combination of attributes on a relation . Queries that filter using those attributes can find matching tuples randomly using the index, without having to check each tuple in turn . This is analogous to using the index of a book to go directly to the page on which the information you are looking for is found, so that you do not have to read the entire book to find what you are looking for . Relational databases typically supply multiple indexing techniques, each of which is optimal for some combination of data distribution, relation size, and typical access pattern . Indices are usually implemented via B+ trees, R - trees, and bitmaps . Indices are usually not considered part of the database, as they are considered an implementation detail, though indices are usually maintained by the same group that maintains the other parts of the database . The use of efficient indexes on both primary and foreign keys can dramatically improve query performance . This is because B - tree indexes result in query times proportional to log (n) where n is the number of rows in a table and hash indexes result in constant time queries (no size dependency as long as the relevant part of the index fits into memory). </P> <P> Queries made against the relational database, and the derived relvars in the database are expressed in a relational calculus or a relational algebra . In his original relational algebra, Codd introduced eight relational operators in two groups of four operators each . The first four operators were based on the traditional mathematical set operations: </P>

A group of related records is called a table. true false