powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / использование PrimaryKey
16 сообщений из 41, страница 2 из 2
использование PrimaryKey
    #32040248
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какая необходимость вообще распространять ограничения на даты? Это же интервалы времени. Могут ли они пересекаться? как отслеживается такая ситуация?
может имеет смысл сделать суррогатный ключ и добавить индекс по (idKadr, idDept) и при необходимости на даты
...
Рейтинг: 0 / 0
использование PrimaryKey
    #32040250
sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to AVL
Предложенный вариант усложняет немало, однако в исходном виде в проекте, я согласен с Genady, есть ошибки. И я их не вижу.
...
Рейтинг: 0 / 0
использование PrimaryKey
    #32040254
Фотография AVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
давайте по порядку: может ли человек работать в бригаде несколько раз?
...
Рейтинг: 0 / 0
использование PrimaryKey
    #32040257
Фотография AVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может ли он одновременно работать в нескольких бригадах?
...
Рейтинг: 0 / 0
использование PrimaryKey
    #32040259
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
новаю таблицу kadrdept(idKadr, idDept, idSurrogate) и
дополнительную таблицу history(idSurrogate, dBeg, dEnd).


Плохое решение и непонятно чем мотивировано.
Вы или подробно опишите задачу или решайте все сами, с теми данными которые Вы предоставили Вам никто ничего толкового не скажет.
...
Рейтинг: 0 / 0
использование PrimaryKey
    #32040261
sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to AVL
1. Человек в течении месяца может быть переведен в другую бригду неоднократно (более 2-х раз).
2. В каждый момент времени человек может работать только в одной бригаде.
3. Согласованность дат, - требуется только их непересекаемость, отслеживается логикой работы с данными.
...
Рейтинг: 0 / 0
использование PrimaryKey
    #32040262
Фотография AVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pk: idKadr, idDept, dbeg. Все в одной таблице.
...
Рейтинг: 0 / 0
использование PrimaryKey
    #32040266
sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача такова:
1. Существуют работники.
2. Существуют бригады.
3. В каждый момент времени работник может работать не более чем в одной бригаде, или ни в какой. Момент времени - это дата.
4. В любой момент времени работник может быть переведен в другую бригаду, или перестать работать в какой л.б.

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

Приведенное мной на форуме решение содержит ошибки.
...
Рейтинг: 0 / 0
использование PrimaryKey
    #32040278
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 sql

В Вашем первом варианте, кроме отсутствия РК я ошибок не вижу, вариант РК предложил AVL я с ним согласен. Кроме того, если человек на может работать одновременно в нескольких бригадах я бы добавил еще одно поле CurrentWork которое являлось бы флажком для обозначения того, что запись не является историей.
...
Рейтинг: 0 / 0
использование PrimaryKey
    #32040279
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет снимаю предложение с добавлением поля, для определения исторических записей вполне подойдет dEnd.
...
Рейтинг: 0 / 0
использование PrimaryKey
    #32040283
sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я просто очарован:
обновлення сущность
kadrDepartament(idKadr, idDepartament, dateEnd)
позволяет решить задачу, и, как всякая реляционная
имеет PK as {idKadr, idDepartament, dateEnd}.
Я правильно все понял ?
Если так, то какой бес навеял мне использование именно пары дат ?
...
Рейтинг: 0 / 0
использование PrimaryKey
    #32040286
Фотография AVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как же дата начала работы dbeg? уфф... у меня уже брожение мозгов....
...
Рейтинг: 0 / 0
использование PrimaryKey
    #32040294
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kadrDepartament(idKadr, idDepartament, dateBegin, dateEnd)

PK - idKadr, idDepartament, dateBegin
FK - idKadr
FK - idDepartament
...
Рейтинг: 0 / 0
использование PrimaryKey
    #32040301
sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, занесло.
Структура таблицы kadrDept не меняется, но, по условиям задачи (в каждый момент времени работник в одной бригаде) в качестве PK может использоваться набор
{idKadr, idDept, dBeg}.
По-моему, так ?
...
Рейтинг: 0 / 0
использование PrimaryKey
    #32040306
sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Genady, AVL !
Спасибо.
И всем, кто помог.
...
Рейтинг: 0 / 0
использование PrimaryKey
    #32040312
sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения за еще одно послание.
Завтра у меня день рождения, так что неплохой подарочек
приготовили мне рыцари Genady and AVL. Благодарю.
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / использование PrimaryKey
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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