You must bear in mind that, in the world of ByteHoard and the strange database abstraction layer, database structure really only consists of the field and table names. Data types do not really come into account; we could store everything in TEXT-type fields if we wanted, since that's the way some 'databases' will work with ByteHoard (the flatfile database is an example).
This means that the structure is designed for the easiest way of retrieving data using only WHERE clauses. It may seem unefficient and kludged, but it's worked for ages.