Switch to: V11V10V9V8V7V6V5

Valentina Data Model

Extending Relational Model

Valentina database is designed to support Relational Model, which is a standard one for the last 10-15 years for DBMS world, and smoothly and natural extend it to Object-Relational model with powerful addition of Navigational Model elements! You can read the details at this article.

A key advantage of object-relational model of Valentina is that it allows you to build databases using the relational model, then add object features when you are ready, much like the migration from programming in C to C++ (or C#).

The main ideas behind Valentina database model are:

  • Data Model should reflect to real world concepts as much as possible.
  • The more concepts a DBMS knows and understands the better.

The World Concepts

In relational model you can operate ONLY by tables that usually are reflection of OBJECTs of real world. But there are also properties of objects in real world, links between objects, actions/events, properties of actions, and so on. RDBMS developers are forced to describe all these concepts using flat tables.

Valentina model adds a new revolutionary concept/abstraction the Link. A new Valentina developer couldn`t stay indifferent about that: “How easy! How powerful!”

Links are implemented as on the low level of engine, so expressed in the public API and, of course, in the SQL. You can find the details about links here.

Another Valentina User have point: Currently we have in database (Oracle/Postgre) about 800 tables. Porting them to Valentina we reduce the number of tables to 500.

RecID and OID

Each Valentina table have hidden RecID and OID fields. RecID gives a unique identifier of a record in the scope of a table, OID - in the scope of database.

Mature RDBMS sometimes has an analog of RecID names usually as “rowid”. OO DBMS following ODMG standard does have OID field for objects. But Valentina beat them both in implementation of this feature!

Let you have table with million records. RDBMS will eat for rowid 4MB of data + about 12MB of index. Valentina for RecID eats ZERO Disk/Ram space! For OID field others use 8Mb + about 18MB index, Valentina still uses ZERO Disk/Ram space.