purpose, the OODBMS can provide a special query language as theRDBMSs did, a specially extended programming language, or some graphical tools (browsers,forms, etc.). Whatever they do provide should satisfy the following: it should be high-level sothat the queries will be simple and easily understood by humans, it should be efficient, and itshould be application independent.In this section I will analyze the optional features that an OODBMS should have. Some ofthem have to do with the object-oriented nature of the system, and some others with thehandling of persistent data.Multiple inheritance allows the creation of a new class from one or more other classes. Thereis no general agreement if a system must support multiple inheritance or not. It is true,however, that the systems that support this feature make the application design easier sincemultiple inheritance is a more powerful tool than single inheritance. On the other hand, manyproblems arise from the support of multiple inheritance that have to do with conflicts amongthe attributes and methods inherited by more than one arbitrary class. The degree of typechecking performed at compile time should be as great as possible. The optimal situation iswhere a program that was accepted by the compiler cannot produce any run-time errors.It is desirable for a system to be distributed although that is independent from the fact thatit is an object-oriented system. Concurrency control is one of the mandatory features of aDBMS, but the current systems are intended to be used for handling very long data likeimages, sound, text, etc. and consequently they should provide special transactionmechanisms in order to allow the efficient handling of such kinds of data. The RDBMSs do notsupport such handling and therefore the object-oriented technology had to enhance theclassical transaction framework with long and nested transactions. Most of the applicationsevolve and they do no acquire a stable state un...