Ребят, помощь нужна по структуре БД. У меня есть список сотрудников.

И для каждого сотрудника есть флаг - Уволен он или нет.
И есть таблица, с историей его карьеры в компании. Там я пробиваю, в каких отделах он работает, в какой отдел временно перешел, по которым выборку делаю, и т.д.
Стоит ли туда писать, когда его приняли на работу и когда уволили?
Или, отдельная таблица для этого?

42 ответов

28 просмотров

Дата приема и увольнения, а так же флаг уволен/работает вместе с фио это 1 таблица. Вторая - все движения по отделам

Слушай ну реально слишком абстрактный вопрос... Нужно полное ТЗ. Потому что в зависимости от того что подразумевается под историей, историю может тоже придётся разбить на несколько таблиц для нормализации базы данных. Какая должна быть фильтрация, какие данные должны храниться в истории - это всё имеет значение в архитектуре базы данных. Чем детальнее будет составлено ТЗ на начальных этапах тем меньше потом будет головной боли но и естественно нужно пытаться сделать наиболее масштабируемое решение.

CuBeR116- Автор вопроса
Ivan Savchenko
Слушай ну реально слишком абстрактный вопрос... Ну...

В истории будут храниться, в какую дату сотрудник перешёл в какой отдел и все. То есть: user date department Далее в фильтрации, передаю 2 даты, например 2 месяца: 2021-09-01 - 2021-11-30 И мне нужно будет найти всю историю в промежутке этой даты и так же, самый ближайший из старых записей к начальной дате (2021-09-01)

CuBeR116
В истории будут храниться, в какую дату сотрудник ...

Сейчас меня конечно запинают, но я предлагаю такую структуру: 1. Table: employee: id, contacts_id, user_data .... etc 2. Table (one to many поскольку сотрудник может несколько раз прийти и уйти): employee_working: id, employee_id, come_date, leave_date(nullable). Поскольку сотрудник может несколько раз прийти и уйти, то все эти несколько раз отражены в one-to-many. Также дата ухода может быть null и если одна из дат null начит сотрудник еще работает. Не надо говорить что будет медленная фильтрация, т.к. больше 4-5к сотрудников все равно врядли будет. 3. Table (one to many поскольку сотрудник может несколько раз перейти в разные отделы): employee_working_experience: id, employee_id, department_id, come_date, leave_date(nullable). 4. table: departments: id, department_code, department_description etc Ну это для начала чтоб что то можно было обсуждать.

Ivan Savchenko
Сейчас меня конечно запинают, но я предлагаю такую...

Читаю и вижу как менеджер при повторном найме работника просто ставит lave_date в null )

Константин Грачев
Читаю и вижу как менеджер при повторном найме рабо...

Менеджер ничего не может поставить, ставит программа через интерфейс. Это должно быть отражено в логике php.

Ivan Savchenko
Менеджер ничего не может поставить, ставит програм...

Что-то практика показывает, что эта логика только создаёт проблемы менеджерам, а профита не несёт от слова совсем

Константин Грачев
Что-то практика показывает, что эта логика только ...

??? Как это? У вас есть интерфейс в котором написано добавить сотрудника вновь прибывшего на работу если этот сотрудник уже существует то логика дописывает новую дату приёма и последнюю дату ставит null... на откуп юзеру вообще ничего никогда не даётся🙅🙅🤷🤷

Ivan Savchenko
??? Как это? У вас есть интерфейс в котором написа...

У меня не софт для кадрового отдела. Мне нужна информация кого можно поставить в наряд и кому выдать зарплату. Точнее не мне, а менеджерам. А истории трудоустройства им нахой не нужна

Ivan Savchenko
Читайте ТЗ.

Чтобы что? Я поделился тем как я делаю, а не как делать тебе или автору тз. И главный мой поинт надо смотреть на то что надо бизнесу, а не бездумно клепать истории трудоустройства, потому что работник может вернуться

Константин Грачев
Чтобы что? Я поделился тем как я делаю, а не как д...

ох больно будет, когда бизнес поставит условие добавить отдел

Константин Грачев
Чтобы что? Я поделился тем как я делаю, а не как д...

Что???))) Вы о чем? Не бездумно, А умышленно чтобы у отдела кадров была история прихода и ухода сотрудников. Если вам не нужна то кому-то может быть нужно ТЗ у всех разное.

𝔏𝔦𝔩𝔦𝔱𝔥
ох больно будет, когда бизнес поставит условие доб...

Чем же больно? отдел добавиться в таблицу отделов. Если сотрудник туда перейдёт то у него добавиться запись прихода и ухода в новый отдел в таблице "working Experience".

Ivan Savchenko
Чем же больно? отдел добавиться в таблицу отделов....

это когда у тебя за ранее ты предвидел, и создал базу для внедрения, а когда как Костик флагами навешался - поди добавь отдел со своим бизнесом

𝔏𝔦𝔩𝔦𝔱𝔥
это когда у тебя за ранее ты предвидел, и создал б...

На эти флаги агрятся 1-3 модуля. Модуль кадров если понадобится то появится как независимый и по событиям из которого можно обновлять флаги. Где тут проблемы мне лично не ясно

Константин Грачев
На эти флаги агрятся 1-3 модуля. Модуль кадров есл...

ну достань из своего флага дату принятия и уволнения

Константин Грачев
На эти флаги агрятся 1-3 модуля. Модуль кадров есл...

у тебя crm работает уже 5 лет, а исчислять ты начнешь с сегодня

𝔏𝔦𝔩𝔦𝔱𝔥
ну достань из своего флага дату принятия и уволнен...

она-бизнесу-сейчас-не-нужна. Бизнес не хочет чтобы программа требовала даты увольнения от менеджеров. Услышь меня уже. Если и когда понадобится трекать историю в црм она там появится путём импорта данных из бумажной кадровой истории

𝔏𝔦𝔩𝔦𝔱𝔥
ну достань из своего флага дату принятия и уволнен...

https://github.com/automagistre/automagistre/blob/master/src/Employee/Entity/Employee.php#L46-L58 5 лет назад я сделал то о чём меня не просили и спустя 5 лет собираюсь выпилить. Давай расскажи мне ещё о важности этих данных)

𝔏𝔦𝔩𝔦𝔱𝔥
мешает?

Сейчас всё переделываю и всё ненужное идёт под каток

𝔏𝔦𝔩𝔦𝔱𝔥
мешает?

Фичи просят денег. Всегда. Фича которая не юзается не приносит денег. То есть чистый убыток. 1. Перед тем как пилить фичу выясни нужна ли она (это то чем продукты заниматься должны, верификация предположений) 2. Заппилили и не пользуется - удаляй

𝔏𝔦𝔩𝔦𝔱𝔥
убытка также не принося ))

Если кто то денег просит но при этом их не приносит - этот кто то это убытки.

Sergey P
Если кто то денег просит но при этом их не приноси...

ну в таком случае, ставим к примеру готовый продукт, название которого не произносят вслух, и выпиливаем 70% ))

𝔏𝔦𝔩𝔦𝔱𝔥
и как оно просит денег? На диск?

Открой историю файла по ссылке. За 5 лет в него не было внесено никаких изменений по части его функционала. Но коммиты со всякими рефакторингами, обновлениями доктрин там периодически появляются. Это и есть затраты

Константин Грачев
Открой историю файла по ссылке. За 5 лет в него не...

ты эти затраты делаешь не из-за наличия фичи, а в опреори

𝔏𝔦𝔩𝔦𝔱𝔥
ты эти затраты делаешь не из-за наличия фичи, а в ...

Некоторые рефакторинги условно бесплатные, обновление конфига php-cs-fixer'a например. А некоторые требуют ручного вмешательства в каждый файл. Каждая ненужная фича добавляет количество действий

Константин Грачев
Некоторые рефакторинги условно бесплатные, обновле...

как у тебя фича, которая зависит от чего-то по id но при этом не меняется 5 лет попадает в коммит? Согласна с Сергеем, когда у тебя весь агрегатор зависит от фичи, но это уже вопрос к проектированию

𝔏𝔦𝔩𝔦𝔱𝔥
убытка также не принося ))

Лишняя когнетивная нагрузка.

Павел Г.
Лишняя когнетивная нагрузка.

вообще не парит, если нет зависимости

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
2
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
кто-нибудь уже пробовал это?
Lencore
4
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
❓ Подскажите как сделать в группе телеги функцию (кнопку) пересылки сообщения где есть нарушение правил? Бот к каждому сообщению (по определенным ключам) добавляет снизу кнопк...
Alexander
4
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Карта сайта