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.
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:
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.
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).