Okay so now we have two mysteries:
1. What is the purpose of the parent_id in the categories table?
2. Why is it that the tables violate the active record convention of having an id value on all tables?
I would offer that not having an id value on all table is a serious mistake. I had just assumed that the tables had an id value and in fact had created migrations intended to create an association between categories and a table of my own that I added. But without an id value on the categories table that won't work well. I guess I'll be adding it. I do think that for the CE code to be world-class reusable and flexible it should be revised to include id values on all tables.
Dan