I wanted to create a node with vertical and horizontal parts. So after some searching I found that I can achieve this by using a matrix. I tried the code below:
\documentclass{article}
\usepackage{tikz,listings}
\usetikzlibrary{shapes.multipart,matrix}
\begin{document}
\begin{tikzpicture}[->, my shape/.style={
rectangle split, rectangle split parts=#1, draw, anchor=center}]
%transactional descriptor
\node[matrix, align=center, label=above:transactional descriptor] (up_part) at (7, 0) {
\node [my shape=4, rectangle split horizontal] (up_line) at (3, 0)
{\nodepart{one}\lstinline!start!\nodepart{two}\lstinline!readSet!\nodepart{three}
\lstinline!writeSet!\nodepart{four}\lstinline!commitTime!}; \\
};
\node[matrix, below of=up_part, node distance=0.5cm] (down_part)
{
\node [my shape=2, rectangle split horizontal] (down_line) at (3, 0)
{\nodepart{one}\lstinline!overwrittenVersions!\quad\nodepart{two}\lstinline!next!}; \\
};
\end{tikzpicture}
\end{document}
the problem is that the second node containing 2 parts has not the same width
as the the node from above it, as you can see in the picture below:

I tried using minimum width or text width
but didn't work.
Any ideas how to fix this?

