RDBMS

Difference between version 24 and 25 - Previous - Next
A '''[https://en.wikipedia.org/wiki/Relational_database%|%relational database
management system]''', or '''RDBMS''' is a [dbms%|%database management system]
that organises data into tables and manages the relationships between the data
in those tables.



** See Also **

   [SQL]:   



** Reading **

   [http://en.wikipedia.org/wiki/RDBMS%|%Wikipedia]:   
   [http://web.archive.org/web/20090524005207/http://ldn.linuxfoundation.org/column/database-defects%|%Database Defects] ,by [Cameron Laird] and Kathryn Soraiz:   This is actually aAbout database design for RDBMSs, not about the systems themselves.



** Description **

A relational [dbms%|%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
[https://dl.acm.org/doi/book/10.5555/77708%|%The relational model for database
management: version 2], [https://en.wikipedia.org/wiki/Edgar_F._Codd%|%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'''tomicity:   A transaction (TXN) is performed in its entirety or not at all.

   '''C'''onsistency:   A correct transaction takes the db from one consistent state to another.
   '''I'''solation:   Until it is committed, an updates by one transaction is not visible from within other
 transactions.

   '''D'''urability:   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 **

   ADABASE D:   [AdabasTcl]

   [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/ 

   [Duro a relational database library%|%Duro]:   A free RDBMS based on [https://www.dcs.warwick.ac.uk/~hugh/TTM/%|%The Third Manifesto], by  C. J. Date and Hugh Darwen.

   [Empress Tcl/Tk Interface]:   

   Informix:   [isqltcl]

   [INGRES]:    

   [Interbase]:   

   [mSQL] (mini SQL):   Blackbourn's Minerva miniSQL (mSQL?) binding [miniSQL database interface (Blackbourn)].

   [Microsoft Access]:   

   [MS SQL Server]:   

   [MrPersister]:    A high-level library on top of [JDBC].

   [MySQL]:   

   [Oracle]:   [http://www.davudsplace.net/debbie1.html%|%debbie],  [Oratcl]

   [PostgreSQL]:   

   [ftp://ccfadm.eeg.ccf.org/pub/ctk/rdb.tar.Z%|%RDB] (dead link):   

   [SQLite] ,by [D. Richard Hipp]:   

   [Sybase]:   

   [DB2]:   

   [http://www.frontbase.com%|%FrontBase]:   See the downloads area.


** Discussion **

[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 System]s 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 **

   [EMJ]:   

   [PYK]:   



<<categories>> Database | Glossary