JOINs are fine, as long as you can retrieve the rows you want and no more, preferably by querying by primary key.
I've had a play with the nested set model, it's a clever idea for a database. I'd say it's beneficial to you if:
- You don't need to continually update the lft and rgt values or at least not the lft and rgt values near the top of the tree
- The table is small if you do need to regularly update
This is because you have to update all the rows to the rgt of the row you need to update, and also for inserts.
I think it's great for large, deep, relatively static tree structures, e.g. a category structure for a directory.