Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сохранение однозначности записей / 18 сообщений из 18, страница 1 из 1
26.07.2013, 13:20
    #38345114
Hopkroft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
Есть записи по пользователям. В зависимости от группы планирую подгружать данные из соответствующих таблиц.
Теперь о проблеме. Программа раньше использовалась в учреждении где USE_ID в таблице USERS был первичным ключом, который заполняли табельным номером. У нас же в организации в этом деле просто хаос. Табельный номер может меняться периодически. Плюс новому человеку могут дать табельный номер уволенного человека. Т.е. однозначности нету.
Поэтому вынес табельный номер в отдельное поле.
Далее, необходимо делать синхронизацию по пользователям, с ERP системой Парус. Т.е. человек нажал на кнопку и загрузил пользователей из Паруса, для того что-бы можно было не тратить время на ручное добавление. Вот тут возникает дилемма.
В программе есть ручной ввод пользователей. Но тут получается что человек вбил пользователя вручную, и нажал на кнопку Синхронизации. А в базе есть другой пользователь, с таким-же табельным, но другим Ф.И.О.
Как выходить из этой ситуации?
...
Рейтинг: 0 / 0
26.07.2013, 13:29
    #38345140
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
HopkroftКак выходить из этой ситуации?
Поскольку в ОК организации бардак, значит она скорее всего маленькая. Раз она маленькая,
значит вероятность работы в ней полных тёзок тоже маленькая. Считай идентификатором
человека ФИО.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.07.2013, 13:35
    #38345153
Hopkroft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
Dimitry Sibiryakov, если бы всё было так просто. На данный момент в организации 500 человек.
С "двойниками" уже встречался:(
...
Рейтинг: 0 / 0
26.07.2013, 13:41
    #38345168
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
HopkroftС "двойниками" уже встречался:(
Добавь в идентифицирующие поля дату рождения. Обычно этого хватает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.07.2013, 13:54
    #38345193
Hopkroft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
Dimitry SibiryakovHopkroftС "двойниками" уже встречался:(
Добавь в идентифицирующие поля дату рождения. Обычно этого хватает.

Я рассматривал этот вариант. Но получается что мне нужно добавить в первичный ключ, Ф.И.О. и дату рождения. Т.к. на USE_ID очень много завязано(хранимки, записи в других таблицах).
Вот и хочу довести эту программу для нашей организации с её безобразиями.
...
Рейтинг: 0 / 0
26.07.2013, 13:57
    #38345200
Hopkroft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
Dimitry Sibiryakov, за вашу практику хоть раз встречался случай когда Ф.И.О. и год рождения были одинаковы у двух разных людей?
...
Рейтинг: 0 / 0
26.07.2013, 14:06
    #38345225
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
HopkroftНо получается что мне нужно добавить в первичный ключ, Ф.И.О. и дату
рождения.
Нет, достаточно эти поля использовать для идентификации вместо первичного ключа.
Для особой надёжности на них можно создать отдельный unique constraint.

Hopkroftза вашу практику хоть раз встречался случай когда Ф.И.О. и год рождения
были одинаковы у двух разных людей?
Да. Мой приятель троллил этим военкомат.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.07.2013, 14:41
    #38345282
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
HopkroftКак выходить из этой ситуации?

Никак, в общем случае задача не решается.
А в частности искать - уникальные естественные ключи.
Причем ФИО не может подойти (привет полные однофамильцы)
...
Рейтинг: 0 / 0
26.07.2013, 15:01
    #38345338
Hopkroft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
mad_nazgul Никак, в общем случае задача не решается.
Хорошо, нужно добавить, возможность от "порчи" данных.
1. А если при экспорте добавить, фишку, когда мы встречаем пользователя, с имеющимся, табельным номером, то программа
предложит обновить по нему данные. Т.е. загрузить ту информацию которая содержится в базе.
2. Добавить поле, приёма на работу и увольнения. Таким образом безболезненно могут существовать 2 человека с одинаковыми табельными номерами.
Поле, USE_ID, сделать автоинкрементном. (На него очень много завязано.)
...
Рейтинг: 0 / 0
26.07.2013, 15:29
    #38345402
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
Hopkroftmad_nazgul Никак, в общем случае задача не решается.
Хорошо, нужно добавить, возможность от "порчи" данных.
1. А если при экспорте добавить, фишку, когда мы встречаем пользователя, с имеющимся, табельным номером, то программа
предложит обновить по нему данные. Т.е. загрузить ту информацию которая содержится в базе.


Как различать людей.
Если при импорте получится, что таких людей больше чем один, то нужно дать возможность оператору выбора, что делать.


Hopkroft2. Добавить поле, приёма на работу и увольнения. Таким образом безболезненно могут существовать 2 человека с одинаковыми табельными номерами.
Поле, USE_ID, сделать автоинкрементном. (На него очень много завязано.)

Можно и так.
...
Рейтинг: 0 / 0
27.07.2013, 12:02
    #38346257
Hopkroft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
mad_nazgul, а вот мне интересна следующая ситуация, имевшая место быть в нашей организации.
Человек уволился, а потом его опять приняли на работу. Т.е. в идеале, нужно сделать таблицу, пользователи ->табельные номера.
Где табельные номера включают поля,

USER_ID ,
ID -идентификатор табеля,
DATE_BEG -дата выдачи,
DATE_END - дата окончания,
REASON - причина окончания(изменение штатного, уволили и т.д.)) - возможно связать по внешнему ключу с таблицей значений.

Не внесёт ли это избыточность?

P.S. эту идеологию подсмотрел в Парусе.
...
Рейтинг: 0 / 0
27.07.2013, 16:17
    #38346353
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
Hopkroftmad_nazgul, а вот мне интересна следующая ситуация, имевшая место быть в нашей организации.
Человек уволился, а потом его опять приняли на работу. Т.е. в идеале, нужно сделать таблицу, пользователи ->табельные номера.
Где табельные номера включают поля,

USER_ID ,
ID -идентификатор табеля,
DATE_BEG -дата выдачи,
DATE_END - дата окончания,
REASON - причина окончания(изменение штатного, уволили и т.д.)) - возможно связать по внешнему ключу с таблицей значений.

Не внесёт ли это избыточность?

P.S. эту идеологию подсмотрел в Парусе.

Это стандартная ситуация.

Вообще-то табельный номер - это частности, которые определяются "политикой" кадрового отдела и бухгалтерии.
Т.е. по большому счету надо хранить "личную карточку" с историей изменений.
В т.ч. и табельного номера.

P.S. по мне лучше что-то хранить избыточно, чем потом "кусать локти", что каких-то данных нет.
...
Рейтинг: 0 / 0
27.07.2013, 18:19
    #38346410
Hopkroft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
mad_nazgul,
Я правильно понял ситуацию, что таблица будет примерно следующей:

К примеру таблица Reason выглядет следующей.
REASON
id, caption
. . .
2, Смена табельного номера
3, Увольнение по собственному желанию

USER_ID, ID, DATE_BEG, DATE_END, REASON
123, 12, 12.05.2012, 11.06.2012, 23 - новая должность к примеру
123, 15, 12.06.2012, 15.01.2013, 3 - уволился
123, 25, 12.12.2014, NULL, NULL - был опять принят на работу

Тогда есть несколько вопросов:
1. для определения табельного номера человека нужно просто найти в таблице последнюю запись по нему?
2. при приёме в отделе кадров, программа долна их оповестить что данный человек уже есть, и ему достаточно присвоить новый табельный?
3. А может ли быть, в один день у человека 2 табельных номера? Допустим когда переводят его.
...
Рейтинг: 0 / 0
29.07.2013, 08:19
    #38346966
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
Hopkroftmad_nazgul,
Я правильно понял ситуацию, что таблица будет примерно следующей:


Да. Можно и так.
Я бы кончено ввел сущность "Приказ", где бы вводились приказы по человеку и его перемещения.
Еще можно тупо сделать как в форме Т1.
Там на линиях есть все движения сотрудника.
Т.е. прием на работу, перемещение и увольнение.
Ну и изменяемые параметры хранить с (DateFrom, DateTo).
В т.ч. и ФИО, паспорт и т.д. ;-)
Насчет увольнения и приема.
Считать человека новым сотрудником или старым...
Это правильнее всего отдать на усмотрение ОК, точнее кадровой политики.
Если они решат, что история вновь принятого сотрудника, должна продолжаться, то у них должна быть возможность поднять "архив" личных карточек.
Если нет, то заводится новая личная карточка.
...
Рейтинг: 0 / 0
29.07.2013, 08:49
    #38346974
Hopkroft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
mad_nazgulЯ бы кончено ввел сущность "Приказ", где бы вводились приказы по человеку и его перемещения.
Еще можно тупо сделать как в форме Т1.
Спасибо, за совет. Мысль хорошая, буду в эту сторону смотреть.

mad_nazgulСчитать человека новым сотрудником или старым...
. . .
Если нет, то заводится новая личная карточка.
Вот за эту мысль огромное спасибо! Я что-то эту ситуацию упустил из виду.
...
Рейтинг: 0 / 0
30.07.2013, 03:14
    #38348065
Alexander2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
Hopkroft,
авторПлюс новому человеку могут дать табельный номер уволенного человека
А вот за это начальника OK надо в шею гнать.
Аудит бухгалтерский коту под хвост - однозначно.
...
Рейтинг: 0 / 0
30.07.2013, 08:11
    #38348095
Hopkroft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
Alexander2, ну они у себя в Парусе присваивают им какие-то левые табельные, что-бы они с новыми не пересекались. А мне голову ломать как это всё совместить:)
...
Рейтинг: 0 / 0
30.07.2013, 10:21
    #38348197
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение однозначности записей
Alexander2Hopkroft,
авторПлюс новому человеку могут дать табельный номер уволенного человека
А вот за это начальника OK надо в шею гнать.
Аудит бухгалтерский коту под хвост - однозначно.

С такой ситуацией я сталкиваюсь не первый раз.
Целостность в рамках "сейчас" не нарушена.
Бухгалтерия так же оперирует "сейчас".
А история... пусть с эти программист возиться. :-)
Поэтому я не воспринимаю табельный номер как уникальный ключ.
И другим не советую.
Табельный номер это для ОК и бухгалтерии, чтобы они знали кому какую ЗП начислить в данный месяц.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сохранение однозначности записей / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]