I'm making a system where a user can recruit others, resulting in a binary tree model of users. I have decided to use Adjacency List to model the data but I have some doubts about the number of fields in a table.
I made the users table, there are 24 fields including the node fields of a binary tree:
parent_id, side(left child or right child of its parent), indicated_id(the guy who recruited the user may be different of its parent in the binary tree) + 21 fields(email, name, password, tokens, phone, mobile, etc)
So my doubts are:
1)Should I make a "nodes" table to wrap the user attributes that are not related to the binary-tree like this:
parent_id, indicated_id, side, user_id(pointing to the users table)
Or put everything in the users table? I think if I put everything in the users table I will avoid JOINS and the performance would be better. But if I wrap in a nodes table I will be able to query for a sub-tree without read unrelated fields and Join only the resulting query, so the perfomance lost would be negligible?
Besides that, is there any problem to have a table with 20-30 fields that justify the use of another table for a 1-1 relationship?
2) Is there any better way to model an Adjacency List?