|
|
|
Помогите со связями в ER-схеме
|
|||
|---|---|---|---|
|
#18+
Вопрос не трудный, но я не могу определиться. Расставляю связи между таблицами. ________ Первый вопрос - "Название таблицы" (часть полей, которые фигурируют в этом вопросе): Берём 3 таблицы - "Работники" (Код работника, Должность), "Должности" (Должность, Оклад), "Зарплата" (Код работника, Оклад). _ То есть "Работники"-Должность и "Должности"-Должность связанны, как я понял, многие-к-одной, только в "Работниках" не обязательное присутствие. "Работники"-Код_работника и "Зарплата"-Код_работника тоже понятно как связанны. Вопрос: Как отобразить связь "Зарплата"-Оклад, если значение будет зависеть (совпадение по Коду_работника "Работники"-"Зарплата") от значения в "Работники"-Должность, то из таблицы "Должность" должно брать соответствующий Оклад, и подставлять в "Зарплата"-Оклад? P.S. Если непонятно объяснил, могу в "Дополнительно" накидать и прикрепить схемку ___________ Второй вопрос: Две таблицы - "Больничные" (Код_больничного, Код_рабочего, Дата ухода, Дата выхода на работу, Пропущено рабочих дней), "Статистика отработки" (Код_рабочего, Общее кол-во дней, Пропущено, Отработано, Месяц, Год). _ "Статистика отработки"-Пропущено - это сумма пропущенных дней за месяц с "Больничных". Какая тут связь? Если бы в "Статистике отработки" велось только за 1 месяц, то многие-к-одному ("Больничные"-"Стат. отр."), но так как каждый месяц встречается снова на этого же работника, можно связь такой и оставить? ___________ Третий вопрос: Если в таблице "Зарплата" есть поле, "Начислено", для заполнения которого формула будет использовать значение таблицы "Статистика отработки"-Пропущено, "Статистика отработки"-Общее колич. дней, нужно ли отображать как-либо связи в ER-схеме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2011, 21:36 |
|
||
|
Помогите со связями в ER-схеме
|
|||
|---|---|---|---|
|
#18+
А поля таблиц сам определял? Или они даны в задании? А то налицо дублирование данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2011, 00:29 |
|
||
|
Помогите со связями в ER-схеме
|
|||
|---|---|---|---|
|
#18+
где дублирование то? Разве что поле "Оклад" в таблице "Зарплата", но и то для наглядности с другими полями... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2011, 17:47 |
|
||
|
Помогите со связями в ER-схеме
|
|||
|---|---|---|---|
|
#18+
"Больничные" (Код_больничного, Код_рабочего, Дата ухода, Дата выхода на работу, Пропущено рабочих дней ) - это раз. "Статистика отработки" (Код_рабочего, Общее кол-во дней, Пропущено, Отработано , Месяц, Год) - это два. "Больничные".Пропущено рабочих дней и "Статистика отработки".Пропущено - а вот и три. Наличие полей, значения которых вычисляются на основании других полей - тоже дублирование, пусть и не напрямую. Это только то что бросается в глаза сразу. Думаю, если посмотреть внимательно, то еще можно наскрести. ЗЫ: Вобщем, схему в студию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2011, 00:11 |
|
||
|
Помогите со связями в ER-схеме
|
|||
|---|---|---|---|
|
#18+
Перевёл "Дни" в "часы" для корректности. По вашим вопросам: 1. Дата ухода на больничный, Дата выхода на работу - несут информативный характер, слабо представляю как можно вычислить конкретно рабочие дни, не учитывая выходных и праздников, попадающих в этот диапазон. Поэтому, "Пропущено рабочих дней" (сейчас сделал "** часов") - вносится конкретное значение пропущенного. 2. Общее кол-во дней, Пропущено, Отработано - не совсем вычислимы... "Общее кол-во дней" это не есть "Пропущено"+"Отработано", так как отработаны часы могут быть внеурочного времени, которые и учитываются в данном поле, то есть "Отработано" = "Общее кол-во дней"-"Пропущено"+"Внеурочно". 3. Тут дублирование довольно косвенное. Да, оно расчитывается для "Статистика отработки".Пропущено суммой дней по месяцу с "Больничные".Пропущено, но я бы всё же не отнёс это к дублированию...да и удобнее так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2011, 02:25 |
|
||
|
Помогите со связями в ER-схеме
|
|||
|---|---|---|---|
|
#18+
0LMERслабо представляю как можно вычислить конкретно рабочие дни, не учитывая выходных и праздников, попадающих в этот диапазон В принципе, это возможно. 0LMERОбщее кол-во дней, Пропущено, Отработано - не совсем вычислимы... "Отработано" = "Общее кол-во дней"-"Пропущено"+"Внеурочно". Но "Внеурочно" все равно придется хранить в "Статистике отработки". Хотя бы потому, что внеурочно отработанное время оплачивается отдельно. Так что вычислимость все равно присутствует. Вопрос ведь не в том, можно легко вычислить одно на основании другого, а в том не будут ли противоречить друг другу данные в базе. В вашем случае это возможно. Отностительная сложность вычислимости только создаст сложности при проверке корректности внесенных данных. 0LMERТут дублирование довольно косвенное. Да, оно расчитывается для "Статистика отработки".Пропущено суммой дней по месяцу с "Больничные".Пропущено, но я бы всё же не отнёс это к дублированию...да и удобнее так Удобнее для чего? Если это не дублирование и одно не функция от другого, то одно вместо другого не может быть подставлено в запросе. Тогда все равно придется писать более длинный и медленный запрос. Я думаю, что стоит пересмотреть структуру базы данных. Например можно в "Статистике отработки" учитывать не сумму часов за месяц, а вести учет часов за каждый календарный день. День недели можно вычислить используя функции для работы с датами. Для праздничных дней можно завести отдельную таблицу. В ней просто перечислить даты праздничных дней. Сверхурочно отработанные часы вычислять как число часов за день - длительность рабочего дня (один из вариантов). Больничные тоже нужно учитывать. Только при таком подходе отпадает нужда в пропущенных по больничным дням. Для рассчета оплаты можно просто проверять попадает дата в интервалы дат больничных или нет. Подумайте над таким вариантом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2011, 14:45 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37246262&tid=1542181]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
178ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 502ms |

| 0 / 0 |
