I have a design challenge for you! I'm a Java
programmer and have a pet project that I'm working
on. Part of it requires a relational DB back end to
store logging information. Now my (very!) limited DB
design experience has not come up with a solution to
the problem I'm facing...

The logs I'm processing are in XML format (not a
problem) and each log entry can come in 4 pieces:
1. Request header (compulsory)
2. Request extra data (optional)
3. Response header (compulsory)
4. Response extra data (optional)

Every request will always have parts 1 and 3, and
these parts will all have the same data elements.
Parts 2 and 4 are optional (though most entries will
have them) and each of the elements within these
data elements will be different depending on the
log entry.

For example a logon (very simple):
<tstamp>2003-11-18 10:05:36.441</tstamp>

File transfer:
<request_name>file transfer</request_name>
<tstamp>2003-11-18 10:13:46.422</tstamp>

So, then each request type has a defined set of
extra elements (which can also change from time
to time). I haven't been able to figure out an efficient
table layout, but maybe you guys can! Please let me
know of any ideas you have and if you need any more