|
|
|
Как реализовывают версионные системы?
|
|||
|---|---|---|---|
|
#18+
Добрый день Уважаемые! Хочу спросить вашего совета. Допустим у меня есть Организации, Сотрудники и Документы Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. И эти "сущности" между собой связаны таким образом, что у Сотрудника в Организации есть определённая должность. И у документов есть подписанты, это тоже конкретный сотрудник находящийся в конкретной должности: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Так вот вопрос в том, как мне сделать, чтобы в ситуации когда Сотрудник был подписантом документа в должности Директор. А потом у него должность стала другая, но при просмотре документа необходимо чтобы информация оставалась неизменной. С одной стороны есть решение очевидное - это денормализация, когда у каждого документа просто в текстовые поля забивается содержимое данных сотрудника и его должности на момент когда он является подписантом. С другой стороны хочется чтобы оставалась связность данных. Тут напридумывалось масса вариантов, таких как: - Отдельная таблица с историей должностей сотрудника, которая наполняется тригером при внесении строк в таблицу связи orgSotrudnik : Код: sql 1. 2. 3. 4. 5. 6. 7. 8. и у документа подписант бы указывал не на таблицу orgSotrudnik в которой только актуальные должности, а на запись в таблице с историями должностей. Вобщем прошу совета матёрых и умных! Также прошу учесть, что вопрос задаётся по БД MySQL, поэтому просьба учитывать её возможности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2016, 12:27 |
|
||
|
Как реализовывают версионные системы?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2016, 12:31 |
|
||
|
Как реализовывают версионные системы?
|
|||
|---|---|---|---|
|
#18+
Google "периодические атрибуты". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2016, 12:33 |
|
||
|
Как реализовывают версионные системы?
|
|||
|---|---|---|---|
|
#18+
kormot, И почему у Вас сотрудник привязан к должности? Должность отдельно, сотрудник отдельно. Связь между ними - через таблицу назначений (aka кадровые приказы о назначении в должность). Так же, как это у Вас сделано для подписантов документов. При этом, как уже было сказано, должен быть интервал работы в должности (вступления в должность, увольнения с должности). При переходе на новую должность старая должность закрывается (заполняется дата увольнения с должности актуальной датой, можно через триггер) Кстати, подписанты тоже могут меняться. Например: - Может оказаться, что нужно кого-то добавить к визирующим, - кого-то убрать (добавили с какого-то перепугу)... - Человек может перейти на другую должность или уволиться так и не завизировав договор - После увольнения сотрудника его обязанности будет выполнять другой человек - и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2016, 13:28 |
|
||
|
Как реализовывают версионные системы?
|
|||
|---|---|---|---|
|
#18+
Станислав С...кийkormot, И почему у Вас сотрудник привязан к должности? Должность отдельно, сотрудник отдельно. Связь между ними - через таблицу назначений (aka кадровые приказы о назначении в должность). Так же, как это у Вас сделано для подписантов документов. Станислав, да я так на самом деле и делаю, просто писать отдельную таблицу для иллюстрации в посте лениво было :) Станислав С...кийПри этом, как уже было сказано, должен быть интервал работы в должности (вступления в должность, увольнения с должности). При переходе на новую должность старая должность закрывается (заполняется дата увольнения с должности актуальной датой, можно через триггер) За это уточнение спасибо, ценно, запомню и учту. Станислав С...кийКстати, подписанты тоже могут меняться. Например: - Может оказаться, что нужно кого-то добавить к визирующим, - кого-то убрать (добавили с какого-то перепугу)... - Человек может перейти на другую должность или уволиться так и не завизировав договор - После увольнения сотрудника его обязанности будет выполнять другой человек - и т.д. С этим вроде нет противоречий в представленной схеме. Уникального индекса в docPodpisant ни одного не указывал. Это уже вопрос конкретных программных реализаций. У меня вопрос больше по теории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2016, 13:51 |
|
||
|
Как реализовывают версионные системы?
|
|||
|---|---|---|---|
|
#18+
kormotЭто уже вопрос конкретных программных реализаций. У меня вопрос больше по теории. Теория, вкратце, заключается в том, что если достаточно буквально перенести в базу структуру реальности, результат окажется вполне применимым с точки зрения получения нужных ответов. Деталь ставят в изделие не просто так, а по комплектовочной ведомости. Сотрудник занимает должность не просто, а по приказу. И так далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2016, 14:32 |
|
||
|
Как реализовывают версионные системы?
|
|||
|---|---|---|---|
|
#18+
SCD Type 2 вам надо реализовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2016, 10:27 |
|
||
|
Как реализовывают версионные системы?
|
|||
|---|---|---|---|
|
#18+
Вот один из вариантов: У тебя должно быть три таблицы сотрудники, должности и таблица связка много ко многим, должность - сотрудник. В документах используй id таблицы связки, таким образом по этому id связки легко вытащишь сотрудника и должность на момент подписания договора, можно ещё два поля добавить в связку дата вступления в должность и дату снятия с должности, что бы можно было вычислить должность сотрудника, на какой то момент времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2016, 15:29 |
|
||
|
Как реализовывают версионные системы?
|
|||
|---|---|---|---|
|
#18+
kormotС одной стороны есть решение очевидное - это денормализация, когда у каждого документа просто в текстовые поля забивается содержимое данных сотрудника и его должности на момент когда он является подписантом. И это самое правильное решение, которые избавит вас от головной боли при дальнейшей работе с документами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 13:47 |
|
||
|
Как реализовывают версионные системы?
|
|||
|---|---|---|---|
|
#18+
474И это самое правильное решение, которые избавит вас от головной боли при дальнейшей работе с документами. Особенно при кейсе "Оказалось, мы в его фамилии сделали опечатку и обнаружили это только сейчас". В клиническом случае опечаткой будет замена русской "р" или "с" на английскую. Так что при печати вроде всё в порядке, но вот блин электронная подпись не сходится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 10:44 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=16&tid=1540375]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 259ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...