A relational database management system , or RDBMS is a database management system that organises data into tables and manages the relationships between the data in those tables.

See Also



Database Defects ,by Cameron Laird and Kathryn Soraiz
About database design for RDBMSs, not about the systems themselves.


A relational database management system is based on the mathematical concept of a relation. Codd even gave a special meaning to the word "relationship" although it is pretty much unused these days. In The relational model for database management: version 2 , Edgar F. Codd provided this definition of "relation":

 Given sets S1, $2,..., Sn (not necessarily distinct), R is a relation on
 these n sets if it is a set of n-tuples, the first component of which is
 drawn from $1, the second component from $2, and so on.  More concisely, R
 is a subset of the Cartesian product $1 × $2 x . . . × Sn. (For more
 information, see Chapter 4.) Relation R is said to be of degree n. Each of
 the sets S1, $2, . .., Sn on which one or more relations are defined is
 called a domain. 

 It is important to note that a mathematical relation is a set with special
 properties. First, all of its elements are tuples, all of the same type.
 Second, it is an unordered set. 

In Tcl a tuple is typically represented by a list. In the abstract, a list is one of the building blocks of an RDBMS, where it appears as a row in table. A table, therefore, can be modeled as a list of lists.

SQL is typically used to manage the tables and the data in an RDBMS, providing language for creating, populating, modifying, and querying the tables.

An RDBMS often provides the ability to use a procedural language to define triggers and procedures for enforcing the definition of the data held in tables when it isn't convenient to express the rules in SQL.

In an ACID-compliant RDBMS, each transaction has the following properties:

A transaction (TXN) is performed in its entirety or not at all.
A correct transaction takes the db from one consistent state to another.
Until it is committed, an updates by one transaction is not visible from within other transactions.
Once committed, a change persists.

Question: Between A and I, what makes C not redundant?

Answer: Possibly things such as a guarantee that changes are actually written to disk when the transaction completes. An inconsistent database would be one where some data (perhaps even references and other such internal book-keeping) has been updated but others have not been!

Question: What is considered a transaction in and what is not? Is data retrieval (Sql select statements) considered a transaction?

Sometimes it is said that rdbms is a database topology, other topologies include (network and hierarchical).

A not new variation of rdbms(es) is ORDBMS(es) or Object-relational db management systems.

Relational Database Systems

db2tcl (DB2)
Is it true that DB2's native interface is so close to ODBC that TclODBC can be the basis for a "native" binding?
The Hume Datahub SDK, by Ed Hume
Includes an in-memory SQL database at http://www.hume.com/
A free RDBMS based on The Third Manifesto , by C. J. Date and Hugh Darwen.
Empress Tcl/Tk Interface
mSQL (mini SQL)
Blackbourn's Minerva miniSQL (mSQL?) binding miniSQL database interface (Blackbourn).
Microsoft Access
MS SQL Server
A high-level library on top of JDBC.
debbie , Oratcl
RDB (dead link)
SQLite ,by D. Richard Hipp
See the downloads area.


NEM: There is an awful lot that could be said about RDBMSs. Firstly, it is probably worth distinguishing between a relational database, which is responsible for storing data as relations (sets of tuples, roughly), and a Relational DataBase Management System (RDBMS) which is responsible for managing access to such a database (e.g., takes care of concurrency issues, security, etc).

The underlying relational model (see Ratcl for an extension that provides access to relational operators) is quite closely related to first-order predicate logic (FOPL), as a (mathematical) relation can be identified with a predicate (boolean valued function) which determines set membership of elements in the relation. If SQL had been more closely based on FOPL then perhaps we wouldn't need ad-hoc triggers/stored-procedures.

Rule-based languages, such as CLIPS and others used in Expert Systems are usually much nearer to logic (and much more powerful than SQL), as is Prolog (which is a great language for learning about relations).

The connection to FOPL also partly explains why OO-relational mappings are sometimes a bit awkward: inheritance is a form of default reasoning ("all birds can fly", "a penguin is a bird, but it can't fly"), which is something of a tricky area in pure first-order logic, although there are several ways to do it (perhaps most explored in the area of semantic nets in AI).

There is much more to say here, but very little of it has much direct connection to Tcl. Tcl does, however, have many extensions for dealing with all sorts of databases (check the Category Database links).

Page Authors