рдбрд┐рдЧреНрд░реА рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреА рдХреБрдВрдЬреА рд╣реИ

рд╣реЛрдмреЗ рдкрд░ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рд▓реЗрдЦ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рдмрд╛рдж, рдПрдХ рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореБрдЭреЗ рдЕрднреА рднреА рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рд╣реИред
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдиреЗ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдзрд┐ рд▓реА, рдкреВрдЫрд╛ рдХрд┐ "django-mttp" рдХреНрдпрд╛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ рдЯреНрд░реА рд╕рдкреЛрд░реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ ...
рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЬреЛ рдмрд┐рдирд╛ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рдереЗ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдореЗрдВ рд╣реА рдЕрд░рд╛рдЬрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рдХрд╛рд░рдг, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкрд╛рдардХ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрд╛ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ "рдЕрдЧрд░ рдореИрдВрдиреЗ рдХреБрдЫ рддрдп рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдкреАрдКрдВрдЧрд╛" (рдЧ)

рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬреЛ рдореБрдЭреЗ рд░реБрдЪрд┐рдХрд░ рдмрдирд╛рддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН - рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдХреЛрдб рдореЗрдВ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛, рдкреЗрдбрд╝ рдХреЗ рдЖрдпрд╛рдо рдкрд░ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣реА рд╣реИ, рдЕрдзрд┐рдХрддрдо рд╕реНрддрд░ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рдмрдЪреНрдЪреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ (рд╕рдВрднрд╛рд╡рд┐рдд рд╕реАрдорд╛рдПрдВ рдХрд╛рдлреА рдмрдбрд╝реА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдбрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкрд░рд┐рдЪрдп рдХреЗ рд╕рд╛рде, рдкреНрд░рддреНрдпреЗрдХ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рддрддреНрд╡ рдХрд╛ рдХреЛрдб рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрде рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рднреА рдмрдЪреНрдЪреЛрдВ рдХреА рд╢реНрд░реЗрдгреА рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧреАред рдФрд░ рдпрд╣ рдЧрддрд┐ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмрд╣реБрдд рдХреБрдЫ ...
рдЖрдЧреЗ - рдЪрд┐рддреНрд░реЛрдВ рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд┐рдирд╛ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ)ред

рдкрджрд╛рдиреБрдХреНрд░рдо рд╕рдВрдЧреНрд░рд╣рдг рд╡рд┐рдзрд┐рдпрд╛рдБ


рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдФрд░ рддреБрд▓рдирд╛ рдорд┐рдЦрд╛рдЗрд▓ рд╕реНрдЯреИрдбрдирд┐рдХ рдЙрд░реНрдл тАЛтАЛрдорд┐рдЦреБрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд
рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдФрд░ рдкреНрд░рджрд░реНрд╢рди

рдЬреЛ рдЕрднреА рддрдХ рдкрдврд╝рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ - рдореИрдВ рдЗрд╕реЗ рд╕реБрдЭрд╛рддрд╛ рд╣реВрдВред рдПрдХ рд╕реБрд▓рдн рдкреНрд░рд╕реНрддреБрддрд┐ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдореГрджреНрдз рдкрд╛рда рдореБрдЭреЗ рд╕рдм рдХреБрдЫ (рд╕рднреА рдХреЛ рдФрд░ рдЕрдзрд┐рдХ, рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛) рдХреЛ рдмрдЪрд╛рдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реВрдВред

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рд░ рдХреА рдУрд░ рдореБрдбрд╝рддрд╛ рд╣реВрдВред

рд╡реГрдХреНрд╖ рдХрд╛ рд╡рд░реНрдгрди


рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдЕрднреА рднреА рдПрдХ рдмрд╛рд░ рдкрджрд╛рдиреБрдХреНрд░рдо рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдХ рдХреБрдВрдЬреА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рдЖрд╕рд╛рди рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣реА рд╣реИ, рдкреЗрдбрд╝ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ:

рдЫрд╡рд┐
рдЪрд┐рддреНрд░ 1

рдпрд╣ рджреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ - рд╕рдореВрд╣ рдФрд░ рддрддреНрд╡ (рдЕрдм рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реИ)ред рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд (!) рдЫреЛрдЯреА рдФрд░ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдмрджрд▓рддреА рд╣реИред рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЙрдирдореЗрдВ рд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕рд╣реА рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдЕрдзрд┐рдХ рдмрдврд╝рддрд╛ рд╣реИред рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ, рдирдореВрдиреЗ рдкрд╣рд▓реЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдореВрд╣реЛрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рднреАрддрд░ рд╣реЛрддреЗ рд╣реИрдВред
рдореИрдВ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЪрдпрдирд┐рдд рд╡рд┐рдзрд┐, рдЗрд╕рдХреА рд╡реИрдзрддрд╛, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдФрд░ рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рдВрдмреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реВрдВред рдЖрдЬ рдХреА рдореЗрд░реА рдХрд╣рд╛рдиреА рдХреЗ рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрд╛рдж рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╣реА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)

рдЯреЗрдмрд▓ - рд╕рдореВрд╣
1. ID - рдЪрд╛рд░
2. PARENT - рдЪрд╛рд░ - рдЖрдИрдбреА рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ
...

рддрд╛рд▓рд┐рдХрд╛ - рддрддреНрд╡
1. ID - рдкреВрд░реНрдгрд╛рдВрдХ
2. GROUP - рдЪрд╛рд░ - рд╕рдореВрд╣ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЖрдИрдбреА рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ
....

рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЕрдЪреНрдЫрд╛ рдпрд╛ рдмреБрд░рд╛, рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓ред рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдореЗрд╢рд╛ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖ рд╣реИрдВред рдЗрдЪреНрдЫрд┐рдд рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╡рд┐рдзрд┐ рдиреЗ рдореБрдЭреЗ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдпрд╛ред

рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рдж, рдореЗрд░реЗ рд╕рд╛рде рдпрд╣ рд╣реБрдЖ рдХрд┐ рдЪрд░рд┐рддреНрд░ рдХреЗ рддрд╛рд░ рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╣рд╛рдВ! рдпрд╣ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдФрд░ рдХрдо рдЬрдЧрд╣ рд▓реЗрдЧрд╛, рдФрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рд╕реБрдВрджрд░ рджрд┐рдЦрддрд╛ рд╣реИ ...)ред рдореБрдЦреНрдп рдмрд╛рдд рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдиреЗрд╕реНрдЯреЗрдб рдкрд░реНрд╡рддрдорд╛рд▓рд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИред рдХреНрдпреЛрдВ рдирд╣реАрдВ?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ - рдкрджрд╛рдиреБрдХреНрд░рдорд┐рддред

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВрдиреЗ рдкреВрд░реЗ рдкреЗрдбрд╝ рдХреЛ рдПрдХ рдмрд╛рдЗрдирд░реА рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдпрд╣ рдирд┐рдХрд▓рд╛ред рд╕рд╛рд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП 3 рд╕реНрддрд░реЛрдВ рдФрд░ 3 рд╕рдВрднрд╡ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯрд╛ рдкреЗрдбрд╝ рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛ (рдкреНрд░рдгрд╛рд▓реА, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рджрд╢рдорд▓рд╡):

рдЫрд╡рд┐
Fig.2

рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд▓рдЧ рд░рд╣рд╛ рд╣реИред
рд╢реАрд░реНрд╖ рдкрд░ рд╕рдВрдЦреНрдпрд╛ - рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдмрд╛рдИрдВ рдУрд░ - рд╕реНрддрд░реЛрдВ рдкрд░ред
рдкреНрд░рддреНрдпреЗрдХ рдирдВрдмрд░ рдПрдХ рддрддреНрд╡ рдЖрдИрдбреА (рдмреЛрд▓реНрдб рдореЗрдВ) рд╣реИред
рдПрд▓рд┐рдореЗрдВрдЯ рдкрд░ рдмрдЪреНрдЪреЗ рдиреАрдЪреЗ рдФрд░ рджрд╛рдИрдВ рдУрд░ рдЕрдЧрд▓реЗ рдПрд▓рд┐рдореЗрдВрдЯ рддрдХ рд╕рдорд╛рди рд╕реНрддрд░ рдкрд░ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рддрддреНрд╡ = 16 рдХреЗ рд▓рд┐рдП рдмрдЪреНрдЪреЗ 16<ID<(31+1) рдПрдХ рд╕реАрдорд╛ рд╣реИ

рдЕрдВрдЬреАрд░ рдореЗрдВ 2, рдкреЗрдбрд╝ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛред

рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ рджреГрд╢реНрдп рдореЗрдВ рд▓рдХрдбрд╝реА рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИ:

рдЫрд╡рд┐
3 рдЪрд┐рддреНрд░

рдЗрд╕ рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ, рдЖрд╡рдзрд┐рдХреЛрдВ рдХреЛ рддреБрд░рдВрдд рдкрдХрдбрд╝рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рдФрд░ рдкреЗрдбрд╝ рдЕрднреА рднреА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдмрд╛рдИрдВ рдУрд░ рдПрдХ рдФрд░ рдХреЙрд▓рдо рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░реВрдВрдЧрд╛, рдЬреЛ рд╣рдореЗрдВ рдЖрдЧреЗ рдорджрдж рдХрд░реЗрдЧрд╛, рдФрд░ рдкреЗрдбрд╝ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ "рдореВрд▓" рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдПрдЧрд╛:

рдЫрд╡рд┐
рдЪрд┐рддреНрд░ 4

рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдореЗрдВ - 4 рдХреА рдПрдХ рдбрд┐рдЧреНрд░реА рд╣реИ, рд╡рд╣ рд╣реИ ( + 1) ред
рдЙрдЪреНрдЪрддрдо, 1 рд╕реНрддрд░ рдкрд░, рдпрд╣ 4^2 , 2 - 4^1 рдкрд░, 3 - 4^0 ред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, ( + 1) ( - ) ( + 1) ( - ) ( + 1) рдХреЛ рдПрдХ рд╢рдХреНрддрд┐ рдХреЗ рдмрд░рд╛рдмрд░ рдЙрдард╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ( - ) ред рдЖрд╡рд╢реНрдпрдХ рдбрд┐рдЧреНрд░реА "рд▓рд╛рд▓" рдХреЙрд▓рдо рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХреА рдЧрдИ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рднреА рдЬреЛрдбрд╝рдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдПрдХ рдмрдЪреНрдЪрд╛ рд╣реИред

рдПрдХ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдкреЗрдбрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рджрд┐рдЦрд╛рдКрдВрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реНрддрд░ = 4 рдФрд░ рдмрдЪреНрдЪреЗ = 2 рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдЧреА:

рдЫрд╡рд┐
рдЪрд┐рддреНрд░рд╛ 5

рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛, рдЖрдк рдЦреБрдж рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдзрд╛рд░ рдФрд░ рдбрд┐рдЧреНрд░реА рдХреНрдпрд╛ рд╣реИред

рдпрджрд┐ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рд╣реИ, рддреЛ рдЪрд┐рддреНрд░ 5 рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг ...

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдб 27 рд╕рд╛рде рдПрдХ рддрддреНрд╡ рд╣реИред рдЕрднреА рдмрдЪреНрдЪреЗ рдирд╣реАрдВ рд╣реИрдВред

рдкрд╣рд▓рд╛ рдмрдЪреНрдЪрд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП:
27 + ((2+1)^2) * 1 = 36
рджреВрд╕рд░рд╛ рдмрдЪреНрдЪрд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП:
27 + ((2+1)^2) * 2 = 45

рдЖрджрд┐ рдЖрджрд┐ ...

рд╡рд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рд╣реИред рдмрд╛рдХреА рддрдХрдиреАрдХ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред

рдПрдХ рдирдП рдмрдЪреНрдЪреЗ рдХреА рдЖрдИрдбреА рдХреА рдЧрдгрдирд╛


рдпрджрд┐ рд╡реГрдХреНрд╖ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рддреЛ рд╡рд╣ рдЖрддреНрдордирд┐рд░реНрднрд░ рд╣реИред рдпрд╣реА рд╣реИ, рдЗрд╕рдХреЗ рдЖрдпрд╛рдо рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, рд╣рдо ID рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓ рд╕реНрддрд░ рдФрд░ рдкреЗрд░реЗрдВрдЯ рдиреЛрдб рдореЗрдВ рдЗрд╕рдХреЗ рд╕реНрдерд╛рди рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкреЗрдбрд╝ рдмрдирд╛рдирд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ред

рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ COUNT_CHILDS рдлрд╝реАрд▓реНрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдореИрдВ рдмрд╛рд▓рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реА рдирд┐рдГрд╢реБрд▓реНрдХ рдЖрдИрдбреА рд▓реЗ рд╕рдХреВрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдИрдбреА рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд░реНрддрдорд╛рди рдкреЗрд░реЗрдВрдЯ рд▓реЗрд╡рд▓ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА (рдПрдХ рдирдпрд╛ рдмрдЪреНрдЪрд╛ рдЬреЛрдбрд╝рдХрд░, рд╣рдо рдорд╛рддрд╛-рдкрд┐рддрд╛ рдкрд░ "рд╕реНрдерд┐рдд рд╣реИрдВ"), рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд▓реЗрд╡рд▓ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рд╛ред рд╕реНрддрд░ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рд╡реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ред

рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реА рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ:
ID - рдкреВрд░реНрдгрд╛рдВрдХ
PARENT - рдкреВрд░реНрдгрд╛рдВрдХ - рдЖрдИрдбреА рдХрд╛ рд╕рдВрджрд░реНрдн
LEVEL - рдкреВрд░реНрдгрд╛рдВрдХ
COUNT_CHILDS - рдкреВрд░реНрдгрд╛рдВрдХ

рдкреЗрдбрд╝ рдХреЗ рдЖрдпрд╛рдо рдХреЛ рдмрддрд╛рдПрдВ:
LV - рд╕реНрддрд░ рдХреА рд╕рдВрдЦреНрдпрд╛
CH - рдкреНрд░рддрд┐ рдЕрднрд┐рднрд╛рд╡рдХ рдмрдЪреНрдЪреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛

id - рдмрд╛рд▓ рдХрдореНрдкреНрдпреВрдЯреЗрдмрд▓ рдХреЛрдб

рдлрд┐рд░, рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╣реЛрдиреЗ рдкрд░, рдЕрдЧрд▓реЗ рдмрдЪреНрдЪреЗ рдХреЛ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ:

id = ((CH+1)^(LV-LEVEL-1)) * (COUNT_CHILDS+1) + ID

рдкреНрд░рддрд┐рдмрдВрдз


рдпрд╣ рд╕рдм рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реНрдгрд╛рдВрдХ рдЕрд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, int32 2^32=4 294 967 296 рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдЬрд╡рд╛рдм рд╣реИ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдпрд╣ рд╕рдм рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
(+1)^

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 6 рд╕реНрддрд░реЛрдВ рдХреЗ рд▓рд┐рдП, int32 рдХреЗ рд╕рд╛рде, рдЖрдк 39 рдмрдЪреНрдЪреЗ рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВред
(39+1)^6 = 4 096 000 000

рдмрд╕ рдЗрддрдиреА рд╕реА рд░рдХрдо рдореЗрд░реЗ рдЕрдиреБрдХреВрд▓ рдереАред
рдХрдо рд╕реНрддрд░ - рдЕрдзрд┐рдХ рдмрдЪреНрдЪреЗ рд╣реЛрдВрдЧреЗ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ - рдЕрдкрдиреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рд╕реНрд╡реАрдХрд╛рд░реНрдп рдкреВрд░реНрдгрд╛рдВрдХ рд╕реЗ рдХрдо рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред

int64 рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд╡реАрдХрд╛рд░реНрдп рджрд╛рдпрд░реЗ рдХреЛ рдмрд╣реБрдд рдмрдврд╝рд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, 6 рд▓реЗрд╡рд▓ 1624 рдХреЗ рд▓рд┐рдП рдмрдЪреНрдЪреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдРрд╕реА рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЧрддрд┐ рдмрд╣реБрдд рдзреАрдореА рдирд╣реАрдВ рд╣реЛрдЧреА (рдХрднреА-рдХрднреА рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдзреАрдорд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛)ред

рджрд╕реНрддреЗ рдиреЗ рдПрдХ рд▓рдбрд╝рд╛рдХреВ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреА рд╕реВрдЪрдирд╛ рдирд╣реАрдВ рджреА


рдПрдХ рдЪреМрдХрд╕ рдкрд╛рдардХ рдпрд╣ рджреЗрдЦреЗрдЧрд╛ рдХрд┐ рд╕рдмрд╕реЗ "рд▓реЗрдлреНрдЯ" рд░реЗрдВрдЬ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреЗрдбрд╝ рдореЗрдВ, рдЪрд┐рддреНрд░ 2 рдореЗрдВ, 0 рд╕реЗ 16 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рд╕реНрдорд╛рд░реНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рд╣рдо рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ)ред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдирд╣реАрдВ - рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддрддреНрд╡


рдпрд╣ рд╕рдм рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯреНрд░реА рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддрддреНрд╡ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЙрд╕рд╕реЗ рд╣реИ рдХрд┐ "рдЙрд▓рдЯреА рдЧрд┐рдирддреА" рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧреАред рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдЗрд╕реЗ "рд╣рд╛рде" рдЯреЗрдмрд▓ рдореЗрдВ рд░рдЦрд╛ред рдЖрдк рдпрд╣ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рдХреА рд╕рдордЭ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рддреЛ, рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕рднреА рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддрддреНрд╡ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:
ID = 0
PARENT = 0
LEVEL = 0
COUNT_CHILDS = 0

рд╣рд╛рдВ, рд╡рд╣ рд╢реАрд░реНрд╖ рдкрд░ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИред рд╡рд╣ "рдмрд╛рдПрдВ" рдЬреИрд╕рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдореБрдЦреНрдп рдмрд╛рдд рд╣реИред

рд╕рдВрдХреЗрдд рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ


рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрдкрдХреЛ рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рдПрдХ рдирдП рддрддреНрд╡ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП, рдФрд░ рдиреЗрд╕реНрдЯреЗрдб рд▓реЛрдЧреЛрдВ рдХреЗ рдЪрдпрди рдХреЗ рд▓рд┐рдПред
рдпрд╣рд╛рдВ рд╣рдорд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд╣рд╛рдВ рдкреЗрдбрд╝ рдХреЛ "рдирдХрд╛рд░рд╛рддреНрдордХ рд╕реАрдорд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд" рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдЫрд╡рд┐
рдЕрдВрдЬреАрд░ред 6

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддрддреНрд╡ рдЗрд╕ рддрд░рд╣ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
ID = -32
PARENT = -32
LEVEL = 0
COUNT_CHILDS = 0

32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ рдЖрдкрдХреЛ -2,147,483,647 рд╕реЗ 2,147,483,648 рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ

рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП "рдЕрдзрд┐рдХрддрдо", 39 рдмрдЪреНрдЪреЛрдВ рдХреЗ рд╕рд╛рде 6 рд╕реНрддрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдлрд┐рд░ рд╣рдореЗрдВ рдЖрд░рдВрднрд┐рдХ id=-((39+1)^6)/2 , рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ (рдпрд╛ рдЬреЛ рднреА рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ) рд╣рдо рдирд┐рдореНрди рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдореВрд╣ рдореЗрдВ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ:
ID = -2,048,000,000
PARENT = -2,048,000,000
LEVEL = 0
COUNT_CHILDS = 0

рд╕рдм рдХреБрдЫ рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдЪрд▓реЗрдЧрд╛ред

рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рд╢рд╛рдпрдж рдпрд╣ рд╡рд┐рдзрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЧрдИ рд╣реИред
рдореИрдВ, рдореЗрд░реЗ рдЕрдВрдзреЗрд░реЗ рдХреЗ рдХрд╛рд░рдг, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкрдврд╝рд╛ рдирд╣реАрдВ рдерд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЦреБрдж рд╣реА рд╕рдм рдХреБрдЫ "рдЖрд╡рд┐рд╖реНрдХрд╛рд░" рдХрд┐рдпрд╛ред
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЙрд╕ рдХреЛрдб рдХреЛ рдПрдХ рд▓рд┐рдВрдХ рджреВрдВрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдкреВрд░рд╛ рддрдВрддреНрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ, рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд░реЗрдВ, рд╣рдЯрд╛рдПрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рд╣реИред

рдПрдХ рдирдпрд╛ рдЖрдЗрдЯрдо рдбрд╛рд▓реЗрдВ

рд╡реГрдХреНрд╖ рдХрд╛ рдЖрдпрд╛рдо

CH - рдкреНрд░рддрд┐ рддрддреНрд╡ рдмрдЪреНрдЪреЛрдВ рдХреА рдЕрдиреБрдордд рд╕рдВрдЦреНрдпрд╛
LV - рдПрдХ рдкреЗрдбрд╝ рдореЗрдВ рд╕реНрддрд░реЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ

рдореИрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рд╣реИ

ID - рдкреВрд░реНрдгрд╛рдВрдХ
PARENT - рдкреВрд░реНрдгрд╛рдВрдХ - рдЖрдИрдбреА рдХрд╛ рд╕рдВрджрд░реНрдн
LEVEL - рдкреВрд░реНрдгрд╛рдВрдХ
COUNT_CHILDS - рдкреВрд░реНрдгрд╛рдВрдХ

рддрдм рдЖрдк рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдирдпрд╛ рдмрдЪреНрдЪрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

id = ((CH+1)^(LV-LEVEL-1)) * (COUNT_CHILDS+1) + ID

рдпрджрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдкрд╛рд╕ рдЕрдзрд┐рдХ рдмрдЪреНрдЪреЗ рдирд╣реАрдВ рд╣реИрдВ рддреЛ рд╣рдо рд╕рдореНрдорд┐рд▓рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рд╕рднреА рдмрдЪреНрдЪреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрднрд┐рднрд╛рд╡рдХ рдХреЛ рджреВрд╕рд░реЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред
рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд░рддреЗ рд╕рдордп, рд╣рдо рд░рд┐рдХреЙрд░реНрдб рдлрд╝реАрд▓реНрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ: рдЖрдИрдбреА, рдорд╛рддрд╛-рдкрд┐рддрд╛, рд╕реНрддрд░, рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдФрд░ рд╕рднреА рд╕рдВрднрд╡ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд▓рд┐рдПред рд╕рдм рдХреБрдЫ рдПрдХ рдЕрдиреБрд░реЛрдз рдмрди рдЬрд╛рддрд╛ рд╣реИред

рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:
1. рдкреЛрд░реНрдЯреЗрдмрд▓ рддрддреНрд╡ - K , рдмреЗрд╢рдХ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ
2. рдЬрдирдХ - P , рдЗрд╕реА рддрд░рд╣
3. рдж рдиреНрдпреВ рдкреЗрд░реЗрдВрдЯ - NP , рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рднреА рд╣реИ
4. рдПрдХ рд╕рдордп рдореЗрдВ рдмрдЪреНрдЪреЛрдВ рдХреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдВрдЦреНрдпрд╛ CH , рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдпрд╣ рд╣реИ - рдирд┐рд░рдВрддрд░
5. рд╕реНрддрд░реЛрдВ рдореЗрдВ рдЕрдВрддрд░ - dL , рдореМрдЬреВрджрд╛ рдбреЗрдЯрд╛ рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ

рдЙрдкрд░реЛрдХреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдмрд╕ рддрддреНрд╡ рдФрд░ рдЙрд╕рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдмрдЪреНрдЪреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдХрд░рддреЗ рд╣реИрдВ, рд╕реВрддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирдИ рдЖрдИрдбреА рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ:

Id = (KP)*(CH+1)^dL+NP

PARENT рдлрд╝реАрд▓реНрдб рдХреА рдЧрдгрдирд╛ рдЙрд╕реА рддрд░рд╣ рдХреА рдЬрд╛рддреА рд╣реИ, LEVEL рдлрд╝реАрд▓реНрдб рдХреЛ dL рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ django рдХреЛрдб рд╕реЗ рдореБрдЦреНрдп рдЯреБрдХрдбрд╝рд╛ рд╣реИ:

 x_tmp = Group.objects.filter(id__gte=oldElement.id) .filter(id__lt = limit_right) .update( id=((F('id')-id_departure)*((CH+1)**delta_level) + id_destination), parent = ((F('parent')-id_departure)*((CH+1)**delta_level) + id_destination), level = (F('level')-delta_level) ) 


рд╣рдо рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ:
1. рдирдП рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдкрд╛рд╕ [рдЕрдзрд┐рдХ] рдмрдЪреНрдЪреЗ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ ...
2. рдпрд╛ ... рдкреЛрд░реНрдЯреЗрдмрд▓ рддрддреНрд╡ рдореЗрдВ рд╡реЗ рдмрдЪреНрдЪреЗ рд╣реИрдВ рдЬреЛ рдЯреНрд░реА рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реНрддрд░ "рдиреАрдЪреЗ" рд╣реИрдВред рдпрд╣ рд╕реНрдерд┐рддрд┐ рдХреЗрд╡рд▓ рдиреАрдЪреЗ рдЬрд╛рдиреЗ рдкрд░ рдШрдЯрд┐рдд рд╣реЛрдЧреАред рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдмрд╕ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рддрддреНрд╡ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдкрд░ рд░реЛрдХ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдпрд╛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реНрддрд░ рдкрд░ рдмрдЪреНрдЪреЛрдВ рдХреЛ "рдХрдЯ" рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рдЖрдкрдХреЗ рдКрдкрд░ рд╣реИред рдореИрдВ рдРрд╕реЗ рдПрд▓рд┐рдореЗрдВрдЯ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдирд╣реАрдВ рдХрд░рддрд╛ред

рдирд┐рд╖реНрдХрд╛рд╕рди

рдореИрдВ рдХреЗрд╡рд▓ рдЙрд╕ рдПрд▓рд┐рдореЗрдВрдЯ рдХреЛ рдбрд┐рд▓реАрдЯ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рдмрдЪреНрдЪреЗ рдирд╣реАрдВ рд╣реИрдВ
рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рд╣рдЯрд╛рддреЗ рд╕рдордп - рдорд╛рддрд╛-рдкрд┐рддрд╛ рдкрд░ рдмрдЪреНрдЪреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рдХрд░реЗрдВ
рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред

рдПрдХ рдЫреЗрдж рдЦреЛрджреЛ - рд╕реЛ рдЬрд╛рдУ

рдкреНрд░рддреНрдпреЗрдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдмрдЪреНрдЪреЗ рдПрдХ рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдЯрд╛рдиреЗ рдпрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕ рдХреНрд░рдо рдореЗрдВ рдПрдХ "рдЫреЗрдж" рдмрдирддрд╛ рд╣реИред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрдиреБрдореЗрдп рдмрдЪреНрдЪреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдЗрд╕ рдкрд░ рд╕реНрдХреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рд╣рдЯрд╛рдиреЗ рдпрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ "рд╕рд╣реА" рдмрдЪреНрдЪреЗ рдХреЗ рдЦрд╛рд▓реА рд╕реНрдерд╛рди рдкрд░ "рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд" рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣рд╛рдБ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЙрдкрд░реЛрдХреНрдд рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИред рдХреЗрд╡рд▓ рдЖрд╕рд╛рди рд╣реИред

рдЖрд╡реЗрджрди рдХрд╛ рдХреНрд╖реЗрддреНрд░


рд╣рд░ рдЬрдЧрд╣ рдЬрд╣рд╛рдВ рдЕрдВрддрд╣реАрди рдкрджрд╛рдиреБрдХреНрд░рдо рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
рдФрд░ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрдм рд╣реЛрддреА рд╣реИ?

рд╡рд┐рдкрдХреНрд╖:
- рдкреНрд░рддрд┐ рд╕рдореВрд╣ рдмрдЪреНрдЪреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд╕реАрдорд╛
- рдЯреНрд░реА рдореЗрдВ рд╕реНрддрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд╕реАрдорд╛

Int32 рдФрд░ int64 рдХреЗ рд▓рд┐рдП рдмрдЪреНрдЪреЛрдВ рдФрд░ рд╕рдореВрд╣реЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк:

рдЫрд╡рд┐
рдЪрд┐рддреНрд░ 7

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрди рдирдВрдмрд░реЛрдВ рдХреЛ рд╕реНрдЯреНрд░реЛрдХ рдХрд░рддреЗ рд╣реБрдП, рдХреЛрдИ рдпрд╣ рддрдп рдХрд░реЗрдЧрд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ ...

рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рдХрд╛рдо рдХреА рдЧрддрд┐
- рдЫреЛрдЯреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛
- рдЖрдк рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдПрдХ рдкреНрд░рдореБрдЦ рд╕реАрдорд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
- рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЖрд╕рд╛рдиреА

рдЫрд╡рд┐

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореИрдВ рдХрд┐рд╕реА рднреА рддреНрд░реБрдЯрд┐ рдпрд╛ рдЯрд╛рдЗрдкреЛрд╕ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБред
рдореИрдВ рдХрд┐рд╕реА рднреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред

UPD 10/09/2015
Django (django-treensl) рдХреЗ рд▓рд┐рдП рдПрдХ treensl рдРрдк рд▓рд┐рдЦрд╛ред
рд╕реВрддреНрд░ github.com/EvgeniyBurdin/django_treensl
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реНрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ PostgreSQL 9.1 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

Source: https://habr.com/ru/post/In166699/


All Articles