|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
«Ведение базы данных учета командировок и больничных листов» Во время трудоустройства сотрудники предприятия заполняют личную карточку, где хранятся такие данные: фамилия, имя, отчество, год рождения, дата зачисления на работу, должность, оклад, подразделение, идентификационный код и т.д. Каждый человек имеет свой табельный номер. На предприятии несколько подразделений. Если сотрудник болел, он должен подать больничный лист (Л / л) до табельного службы. В Л / л указанные ФИО человека, дата начала больничного, дата конца больничного. Если сотрудник был в командировке, то командировки тоже оформляется через табельное службу, где указывается начало и конец командировки. Ежемесячно система может формировать отчеты по таким данным: - справочник подразделений и их работников; - количество людей, которые имели командировки по каждому подразделению; - количество людей, которые болели и имеют больничные листы в текущем месяце, продолжительность больничного; - общий список людей, которые не имеют больничные листы (по алфавиту). - Само задание звучит так. Пока что я сделал Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Но почему-то в SickLeave ругается на дату окончания, как сделать проверку чтоб дата начала не была позднее даты начала? И помогите сделать:
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 11:19 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
ТабельныйНомер Это - ересь. В коде только ascii. ГодРождения> 1900 AND ГодРождения <2002 Уже через год будет неактуально. И не год рождения, а дата. Дата Date Это что такое? Оклад INT Бывают совместители на нескольких должностях. Связь один человек - одна должность может не выполняться. Уточни у препода этот момент. Отчество NVARCHAR (20) 20 - очень мало. Подразделение NVARCHAR (20) NOT NULL Тут должен быть ключ на таблицу с подразделениями. Должность NVARCHAR (20) NOT NULL Тут тоже. CREATE TABLE SickLeave ( ... Имя NVARCHAR (20) NOT NULL, Фамилия NVARCHAR (20) NOT NULL, Отчество NVARCHAR (20) NOT NULL, ... Зачем тут опять ФИО? Тебя спросят про нормальные формы, не ответить и завалишь защиту. Shelleex Пока что я сделал 10 число, а ты только сел делать диплом. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 11:31 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
Shelleex И помогите сделать: Любой каприз за ваши деньги. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 11:32 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
В SickLeave надо бы использовать ссылку на Worker, где список всех юзеров, а не барабанить по-новому ФИО и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 11:32 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
Shelleex
По прочтении без труда сделаете сами https://sql-language.ru/knigi-po-sql/sql-zaprosy-dlya-prostyx-smertnyx.html ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 11:40 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
Ролг Хупин, а как сделать ссылку? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 11:42 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
Shelleex Ролг Хупин, а как сделать ссылку? В SickLeave добавить поле ТабельныйНомер INT, сделать его Foreign Key на Worker И удалить поля Имя, Фамилия, Отчество Shelleex Код: plsql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 11:58 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
alexeyvg, SickLeave Оно так и должно? И как обнулить счётчик, Номера просто уже началось не с 1 а с 2. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 12:21 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
Shelleex alexeyvg, SickLeave Оно так и должно? И как обнулить счётчик, Номера просто уже началось не с 1 а с 2. НормеЛікарняногоЛиста с 2? ну так ви ж identity использовали. Можно сбить на 1, можно identity не использовать, если номера важны. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 13:22 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
Shelleex, прежде, чем начать конструирование таблиц, овладейте теорией реляционных баз данных хотя бы на начальном уровне. Неплохая методическая разработка, например, здесь: https://rep.bntu.by/bitstream/handle/data/4940/Bazy_dannyh.pdf?sequence=1&isAllowed=y ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 13:49 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
Я хочу что бы из таблицы Position бралось в Worker должность, оклад, подразделение. Создал я 3 таблицы и то вероятно не правильно. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 14:03 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
Shelleex Shelleex И как обнулить счётчик, Номера просто уже началось не с 1 а с 2. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 14:48 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
Shelleex Создал я 3 таблицы и то вероятно не правильно. В Worker не надо Оклад и Подразделение, они же есть в таблице Position Нужно просто ссылку на Position, то есть поле Должность Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 14:50 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 16:03 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
Человек может уволится, а потом устроится туда же с тем же табельником. Человек может работать на часть ставки в нескольких подразделениях, в одном на 0.1, в другом на 0.5, а в третьем на 0.4 Год рождения никому не интересен, интересна дата. Почему "оклад" имеет тип Int? Почему в Position у вас ключ текстовой, могут в двух подразделениях быть позиции "аналитик" с кардинально разной зп? Да и вообще все не правильно, ибо человек может мигрировать по должностям хоть каждый месяц, у вас это хоть как-то учтено? Позиции могут сегодня быть, а завтра их не будет и т.д. По уму вам нужно взять модель данных из какого-нибудь SAP HR или 1c в соответствующих профильных форумах. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 17:11 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
SELECT Count(ei.ТабельныйНомер) КоличествоЛюдей, Sum(DAY(ei.ДатаОкончания) - DAY(ei.ДатаНачла)) КоличествоДней FROM Worker e JOIN SickLeave ei ON e.ТабельныйНомер = ei.ТабельныйНомер JOIN Position ea ON e.Должность = ea.Должность Where MONTH(GETDATE()) = MONTH(ei.ДатаОкончания) OR MONTH(GETDATE()) = MONTH(ei.ДатаНачла)
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 20:32 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
Shelleex Как сделать суму всех, у меня получается берет суму только первого в таблице SickLeave Только сумму дней вы криво считаете. Человек болел с 31 января по 2 февраля ,сколько дней получится? DAY(2 февраля) - DAY(31 января) = 2 - 31 = -29 дней. Человек болел минус 29 дней, это что, Карл? Воспользуйтесь функцией DATEDIFF ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 22:51 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
Критик Человек может уволится, а потом устроится туда же с тем же табельником. Человек может работать на часть ставки в нескольких подразделениях, в одном на 0.1, в другом на 0.5, а в третьем на 0.4 Год рождения никому не интересен, интересна дата. Почему "оклад" имеет тип Int? Почему в Position у вас ключ текстовой, могут в двух подразделениях быть позиции "аналитик" с кардинально разной зп? Да и вообще все не правильно, ибо человек может мигрировать по должностям хоть каждый месяц, у вас это хоть как-то учтено? Позиции могут сегодня быть, а завтра их не будет и т.д. По уму вам нужно взять модель данных из какого-нибудь SAP HR или 1c в соответствующих профильных форумах. Ребят! Учебное задание!!! "Уволиться и устроиться с тем же табельником" - фантастика! Сколько раз в год? Учебное задание!!! "Почему "оклад" имеет тип Int?" - Копейки даже в Пятерочке отбрасывают/округляют. Это Учебное задание!!! "Работа в разных подразделениях на долю ставки" - зачем в учебном задании? "Год рождения не интересен" - кто сказал? Учебное задание!!! "Миграция по должностям, удаление позиций..." вы требуете от УЧЕБНОГО задания учет всех маловероятных случаев!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 23:54 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
ИВП, Почему нет? Учебные задачи нужно делать качественно, основывая их на реальности, а не используя выхолощенные до предела примеры. Тем более, что hr-модель довольно простая. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 01:33 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
ИВП "Работа в разных подразделениях на долю ставки" - зачем в учебном задании? Чтобы поиздеваться над студентом? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 05:58 |
|
Ведение базы данных учета командировок и больничных листов.
|
|||
---|---|---|---|
#18+
По уму вам нужно взять модель данных из какого-нибудь SAP HR или 1c в соответствующих профильных форумах. Чиво ? Там душевнобольные напроектировали сотню таблиц, в которых совсем не просто разобраться. И там 90% ненужного по сабжу. Мы делали так: Есть справочник сотрудников. Есть справочник вакансий с повторами должностей, если их нужно много (н-р грузчики, водители). Специальный документ принимает/увольняет сотрудников на ID конкретной вакансии с конкретной ЗП. Т.е. вакансия может быть занята, вакантна, неактуальна. И можно всегда узнать где и когда с какой ЗП работал сотрудник. Потом документ Табелирование подневно заполняет раб. дни отработанными часами сотрудников (или больничными, отпусками и отлулами) со ссылкой на ID вакансии + доп. инфа. Раз в мес. на это уходит пару минут в полуручном режиме. Всегда можно четко сказать на любую дату, какое штатное расписание, открытые вакансии и какой ФОТ. ЗП рассчитывается элементарно. Можно числиться хоть на 10 должностях в разных конторах холдинга. Можно делать очень сложную формулу расчета заработков/больничных/переработок и т.п. Можно четко вести учет ФОТ-затрат на конкретные работы, н-р строительство объекта: табелировать почасово на конкретные проекты. Любой сотрудник может получить подробный список, из чего состоит его ЗП за конкретный период. В любой момент можно перетабелировать, если была ошибка. Штрафы и премии были в отдельном документе. Всего десяток таблиц покрывал и кадры и расчет ЗП. Проект жив с 2003г. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 09:25 |
|
|
start [/forum/topic.php?fid=46&fpage=57&tid=1686005]: |
0ms |
get settings: |
13ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
184ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
111ms |
get tp. blocked users: |
2ms |
others: | 285ms |
total: | 632ms |
0 / 0 |