Вопрос по теории БД

Флейм. Только просьба - не материться! :)
Ответить
kreator
✯ Ветеран ✯
Сообщения: 4346
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Вопрос по теории БД

Сообщение kreator »

Прилетела задача. Хочу поспрашивать у народа. Есть таблица сотрудников. И есть таблица проблем, где есть поле "Виновный сотрудник (виновник)". Они связаны как положено в теории БД. Поле "Виновник" может оставаться пустым (в SQL - null), заполняется в определённых случаях. Задача такая. Дать возможность выбрать не сотрудника, а поставить отметку "Виновник не определён". Естественно это надо хранить в базе. Идея сделать запись в таблице сотрудников "Виновник не определён" мне совсем не нравится. Склоняюсь к дополнительному полю в таблице проблем. Есть ещё мысли?
We are hard at work… for you. :)
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 322
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)

Вопрос по теории БД

Сообщение ingasoftplus »

Так а что мудрить?? Поле "Виновник" может оставаться пустым - я надеюсь оно есть sysref на таблицу сотрудкинов? Так и хорошо - если оно пустое или Null или = 0 - то этого достаточно, чтобы понять что "Виновник не определён". Т.е. Поле "Виновник" должно быть необязательным
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5650
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Вопрос по теории БД

Сообщение Игорь Столяров »

kreator писал(а): 11 Ноябрь 2021, 17:48 Они связаны как положено в теории БД. Поле "Виновник" может оставаться пустым (в SQL - null)
А кто брал ? Папа римский брал ? (С) Золотой телёнок
kreator писал(а): 11 Ноябрь 2021, 17:48 Есть ещё мысли?
Вообще ничего не делать. Вопрос хранения значения (поставить отметку "Виновник не определён") - решён.
Остался вопрос отображения. Если связь таблиц не Inner - запись проблемы без сотрудника (NULL) будет показана.
По отметке "Виновник не определён" показываем ... что виновник не определён. Всё.
«V» значит Вендетта !
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2643
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Вопрос по теории БД

Сообщение Дед Пахом »

kreator писал(а): 11 Ноябрь 2021, 17:48 Задача такая. Дать возможность выбрать не сотрудника, а поставить отметку "Виновник не определён".
Так это речь о дизайне окна, или о чём?
С уважением, ДП
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 2941
Зарегистрирован: 06 Ноябрь 2014, 12:48

Вопрос по теории БД

Сообщение finsoftrz »

Пустое значение ссылки на сотрудника не обязательно означает, что виновный не определен, так как надо время, чтобы определить и, соответственно, другой статус решения проблемы. Поэтому, скорее всего, второе поле в записи проблем. Или, как изначально предложено, виновный не определен, либо статус решения проблемы. Я бы использовал второй вариант,наверно.
C6/C11, ШВС, tps/btrieve.
gromov
Старожил
Сообщения: 243
Зарегистрирован: 11 Февраль 2009, 8:41
Откуда: г. Анапа

Вопрос по теории БД

Сообщение gromov »

Виновник не определен ... Глупость какая-то. Если ей следовать, то два поля нужно. 1) vinovnik - значения 0/1 невиновник/виновник. 2) osadok (нужно наполовину), т.е. если поле виновник=0, а значение поля осадок=1, то это означает, что чел. вроде-бы и не виновен, но осадок остался :D
kreator
✯ Ветеран ✯
Сообщения: 4346
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Вопрос по теории БД

Сообщение kreator »

Глупость/не глупость, а что-то делать надо. Ещё раз. Пустое поле "Виновник" не означает, что он не определён. А означает, что его не должно быть. ДП, дизайн окна вторичен. Он в зависимости от варианта хранения. Похоже склоняемся ко второму варианту?
We are hard at work… for you. :)
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1229
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

Вопрос по теории БД

Сообщение RaFaeL »

kreator писал(а): 12 Ноябрь 2021, 17:26 Пустое поле "Виновник" не означает, что он не определён. А означает, что его не должно быть.
Это, видимо, зависит от каких то других параметров?
Типа при этом статусе должен быть виновник или он не определен, а при другом его и быть не может
Ну значит нужно сделать процедуру с параметрами, которая вернет в одном случае пустую строку, а в другом - "виновник не определен" либо виновника
kreator
✯ Ветеран ✯
Сообщения: 4346
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Вопрос по теории БД

Сообщение kreator »

RaFaeL, Вы правы. Но меня сейчас интересует хранение в базе. Лучше моего второго варианта решения нет?
We are hard at work… for you. :)
gromov
Старожил
Сообщения: 243
Зарегистрирован: 11 Февраль 2009, 8:41
Откуда: г. Анапа

Вопрос по теории БД

Сообщение gromov »

Наверное правильнее будет назвать поле "Виновность не определена".
kreator
✯ Ветеран ✯
Сообщения: 4346
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Вопрос по теории БД

Сообщение kreator »

Кто-то виноват, а кто неизвестно. Пользователь (поскольку поле становится обязательным) выбирает первого по алфавиту. Предложили вот такое решение.
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 2941
Зарегистрирован: 06 Ноябрь 2014, 12:48

Вопрос по теории БД

Сообщение finsoftrz »

kreator писал(а): 13 Ноябрь 2021, 16:07 RaFaeL, Вы правы. Но меня сейчас интересует хранение в базе. Лучше моего второго варианта решения нет?
Написали же, отдельное поле статуса проблемы. Оно первично по смысловой нагрузке. А указание виновного это вторичная информация для тех значений статуса, когда он определен. Мы еще считаем, что виновный всегда один по задаче.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1229
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

Вопрос по теории БД

Сообщение RaFaeL »

kreator писал(а): 13 Ноябрь 2021, 16:07 RaFaeL, Вы правы. Но меня сейчас интересует хранение в базе
А в базе будет тупо NULL
Ответить