Logical View of a B-Tree Node

struct Data1
{
  int Key;  // 4 bytes
  int Foo;  // 4 bytes
  int Bar;  // 4 bytes
};

struct BTreeNode
{
  int NumKeys;                        // num keys in this node
  Data1 Keys[MAX_KEYS];               // key is in a struct
  BTreeNode *Children[MAX_CHILDREN];  // "pointers" to children
};





Calculations:

4096 (page size) - 4 (NumKeys) - 4 (First left pointer) = 4088

4088 / 16 (Data + right pointer) = 255.5 = 255 keys/data per page