A computerized database management system, comprising: a database server including a processor and associated random access memory, the processor being configured to: configure an in-memory database in the random access memory to have a first table of a plurality of cells organized into logical rows and logical columns and a second table of a plurality of cells organized into logical rows and logical columns, each of the cells of each of the tables having a memory address within the random access memory; define a primary key version element which is configured to include a physical memory address pointer directed to a beginning of a list of primary key row versions and a reference count to determine how many rows from the second table are referencing the primary key version element at a point in time, wherein a row of the plurality of rows in the first table that contains an origin cell is configured to include a physical address pointer directed to the primary key version element, and wherein a row of the plurality of rows in the second table that contains a target cell is configured to include a physical memory address pointer directed to the primary key version element, wherein the origin cell is a foreign key and the target cell is a primary key; receive a request to perform a join database operation of one or more rows or columns of the first table including the origin cell on one or more rows or columns of the second table including the target cell; execute the join database operation on the row containing the foreign key in the first table, and use the foreign key to reference the physical address pointer to the primary key version element to obtain a value of the primary key stored in a primary key row in the list of primary key rows in the second table; execute the join database operation using the value, to thereby produce a joined table including the value; and store the joined table at a new location in the random access memory. configure an in-memory database in the random access memory to have a first table of a plurality of cells organized into logical rows and logical columns and a second table of a plurality of cells organized into logical rows and logical columns, each of the cells of each of the tables having a memory address within the random access memory; define a primary key version element which is configured to include a physical memory address pointer directed to a beginning of a list of primary key row versions and a reference count to determine how many rows from the second table are referencing the primary key version element at a point in time, wherein a row of the plurality of rows in the first table that contains an origin cell is configured to include a physical address pointer directed to the primary key version element, and wherein a row of the plurality of rows in the second table that contains a target cell is configured to include a physical memory address pointer directed to the primary key version element, wherein the origin cell is a foreign key and the target cell is a primary key; receive a request to perform a join database operation of one or more rows or columns of the first table including the origin cell on one or more rows or columns of the second table including the target cell; execute the join database operation on the row containing the foreign key in the first table, and use the foreign key to reference the physical address pointer to the primary key version element to obtain a value of the primary key stored in a primary key row in the list of primary key rows in the second table; execute the join database operation using the value, to thereby produce a joined table including the value; and store the joined table at a new location in the random access memory.