Тестовое задание Bitrix

Задача 2. БД «Игроки по сезонам»

Я храню клубы, сезоны и игроков в четырёх Highload-блоках. Игровой номер вынес в связку Игрок ↔ Сезон ↔ Клуб - у одного игрока в разных клубах и сезонах он разный. На связке стоит уникальный индекс по (сезон, клуб, номер): в одном клубе в одном сезоне номер не повторится.

Архитектура

┌────────────┐   ┌──────────────┐   ┌────────────┐
│  hl_club   │   │  hl_season   │   │ hl_player  │
│ NAME_RU/EN │   │ NAME, YEARS  │   │ FIO_RU/EN, │
│ CITY_RU/EN │   │              │   │ WEIGHT, H. │
└──────┬─────┘   └──────┬───────┘   └─────┬──────┘
       │                │                 │
       └────────┬───────┴────────┬────────┘
                │                │
        ┌───────▼────────────────▼──────────┐
        │      hl_player_season_club        │
        │  UF_PLAYER, UF_SEASON, UF_CLUB,   │
        │  UF_JERSEY                        │
        │  UNIQUE (SEASON, CLUB, JERSEY)    │
        └───────────────────────────────────┘

Дамп БД

Внутри - структура четырёх таблиц и сами данные, плюс регистрация HL-блоков в b_hlblock_entity и UF-полей в b_user_field.

Файл
players_dump.sql
Размер
7.12 KB
Сгенерирован
2026-05-04 01:43:57

HL-блоки

IDNAMETABLE_NAMEUF-поля
2 Club hl_club UF_NAME_RU (string, обязательное) UF_NAME_EN (string, обязательное) UF_CITY_RU (string, обязательное) UF_CITY_EN (string, обязательное)
3 Season hl_season UF_NAME (string, обязательное) UF_YEAR_START (integer, обязательное) UF_YEAR_END (integer, обязательное)
4 Player hl_player UF_FIO_RU (string, обязательное) UF_FIO_EN (string, обязательное) UF_WEIGHT (double) UF_HEIGHT (integer)
5 PlayerSeasonClub hl_player_season_club UF_PLAYER (integer, обязательное) UF_SEASON (integer, обязательное) UF_CLUB (integer, обязательное) UF_JERSEY (integer, обязательное)

Демо-данные

Клубы (6)

IDRUENГород
1 ЦСКА CSKA Москва / Moscow
2 Динамо Dynamo Москва / Moscow
3 СКА SKA Санкт-Петербург / Saint Petersburg
4 Локомотив Lokomotiv Ярославль / Yaroslavl
5 Металлург Metallurg Магнитогорск / Magnitogorsk
6 Ак Барс Ak Bars Казань / Kazan

Сезоны (2)

IDНазваниеСПо
1 2024/2025 2024 2025
2 2025/2026 2025 2026

Игроки (10)

IDФИО (RU)ФИО (EN)ВесРост
1 Шипачёв Вадим Викторович Vadim Shipachyov 86.00 кг 184 см
2 Гусев Никита Игоревич Nikita Gusev 80.00 кг 178 см
3 Яшкин Дмитрий Викторович Dmitri Yashkin 95.00 кг 192 см
4 Радулов Александр Валерьевич Alexander Radulov 96.00 кг 188 см
5 Григоренко Михаил Игоревич Mikhail Grigorenko 100.00 кг 196 см
6 Толчинский Сергей Александрович Sergei Tolchinsky 78.00 кг 173 см
7 Кадейкин Александр Михайлович Alexander Kadeykin 90.00 кг 188 см
8 Кагарлицкий Дмитрий Юрьевич Dmitry Kagarlitsky 85.00 кг 178 см
9 Барабанов Александр Юрьевич Alexander Barabanov 84.00 кг 178 см
10 Каменев Владислав Валерьевич Vladislav Kamenev 91.00 кг 188 см

Связка Игрок ↔ Сезон ↔ Клуб (20)

Я специально показываю переходы: один и тот же игрок в разные сезоны играет за разные клубы (Толчинский: ЦСКА в 2024/2025 → СКА в 2025/2026, Кагарлицкий: Металлург → ЦСКА).

СезонКлубИгрокНомер
2024/2025 Ак Барс Каменев Владислав Валерьевич #96
2024/2025 Динамо Яшкин Дмитрий Викторович #19
2024/2025 Динамо Шипачёв Вадим Викторович #87
2024/2025 Динамо Гусев Никита Игоревич #97
2024/2025 Локомотив Радулов Александр Валерьевич #47
2024/2025 Металлург Кагарлицкий Дмитрий Юрьевич #17
2024/2025 Металлург Кадейкин Александр Михайлович #26
2024/2025 СКА Григоренко Михаил Игоревич #25
2024/2025 СКА Барабанов Александр Юрьевич #94
2024/2025 ЦСКА Толчинский Сергей Александрович #75
2025/2026 Ак Барс Каменев Владислав Валерьевич #96
2025/2026 Динамо Яшкин Дмитрий Викторович #19
2025/2026 Динамо Шипачёв Вадим Викторович #87
2025/2026 Динамо Гусев Никита Игоревич #97
2025/2026 Локомотив Радулов Александр Валерьевич #47
2025/2026 Металлург Кадейкин Александр Михайлович #26
2025/2026 СКА Толчинский Сергей Александрович #17
2025/2026 СКА Григоренко Михаил Игоревич #25
2025/2026 СКА Барабанов Александр Юрьевич #94
2025/2026 ЦСКА Кагарлицкий Дмитрий Юрьевич #17