1. Do not use "object" too much, when you have a plain/simple alternative !
Considering the following two choices:
a) define a list of options with enumeration of strings. But you do it in version map.
b) define the option as a category, and you load your value with dataload.
It is very tempting to have option b), thanks to the obvious flexibility.
But wait, a category object by default contains 15~20 unnecessary system fields, besides the typical id/value pairs that's really useful to you.
By using such a category object in your, say ClientTrade object, you add another 15~20 columns into Oracle database.
And what is limitation of the column numbers in Oracle? -- 999!
Soon you find you self running out of columns in Oracle DB, and you will be knocking your head for wasting your limited column numbers!