I have to memorize a lot of stuff, so I've been thinking about how to make a tool that'll make me answer questions based on little quiz databases I make. I was thinking about something like this: atomic number:name:symbol:family 1:hydrogen:H:nm 2:helium:He:nm and so forth, a little like CSV. But the part I'm confused about is that the questioning system should work on a directed graph system, as in some questions might be 1's name? 1's symbol? 1's family? hydrogen's atomic number? hydrogen's symbol? and so forth. However, I *can't* ask nm's name? because the designation 'nonmetal' shouldn't point back to the other fields. It is a one way mapping. So I think I have to establish a directed graph system between the fields so that the quiz application knows what questions to ask. I'm confused about how to describe these mappings in the little quiz database files. It'd be nice for it to be human-editable and stuff. If someone would give their general impressions of how such an application should be designed and what data structures would be best, I'd appreciate it. Like some aspects of what I'm talking about suggest a hash, but is this thing an array of hashes, or a hash of hashes, or..? I'm having trouble. TIA.