do with the concurrency control and the transaction management, but also requires extra mechanisms that have already been explored and studied for the RDBMSs.A DBMS should provide its users with a simple interactive way of making ad-hoc queries and receiving answers. For this purpose, the OODBMS can provide a special query language as the RDBMSs 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 so that the queries will be simple and easily understood by humans, it should be efficient, and it should be application independent.In this section I will analyze the optional features that an OODBMS should have. Some of them have to do with the object-oriented nature of the system, and some others with the handling of persistent data.Multiple inheritance allows the creation of a new class from one or more other classes. There is 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 since multiple inheritance is a more powerful tool than single inheritance. On the other hand, many problems arise from the support of multiple inheritance that have to do with conflicts among the attributes and methods inherited by more than one arbitrary class. The degree of type checking performed at compile time should be as great as possible. The optimal situation is where 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 that it is an object-oriented system. Concurrency control is one of the mandatory features of a DBMS, but the current systems are intended to be used for handling very long data like images, sound, text, etc. and consequently they should provide special transaction mechanisms...