How to create employee tree structure?
What will happen if you need a fifth echelon? And what if an employee has a role in more than one division?

A smaller, simpler schema should cover your business case and require less work to implement, maintain and extend. For example:

Employee (id, name)

Division (id, name, subdivision_of)
    [subdivision_of -&gt; Division.id]

Position (id, name)

Role (employee_id, division_id, position_id)
    [
        employee_id -&gt; Employee.id,
        division_id -&gt; Division.id,
        position_id -&gt; Position.id
    ]


If you don't want one person to be able to work in more than one division, I suppose you can declare employee_id as unique.

Edit: another problem that I see is a redundancy anomaly in the employee table. It repeats the information about the hierarchy of divisions. If you ever change that structure you have to remember to go over every row in the employees table to make sure that change is reflected there.