I don't think a table is the right choice here, just:

 * If data_class is set, and required is true, then null;
 * If data_class is set and required is false, then new $data_class();
 * If data_class is *not* set and compound is true, then array();
 * If data_class is *not* srt and compound is false, then null.