Страница 1 из 1

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

Добавлено: 11 Ноябрь 2021, 17:48
kreator
Прилетела задача. Хочу поспрашивать у народа. Есть таблица сотрудников. И есть таблица проблем, где есть поле "Виновный сотрудник (виновник)". Они связаны как положено в теории БД. Поле "Виновник" может оставаться пустым (в SQL - null), заполняется в определённых случаях. Задача такая. Дать возможность выбрать не сотрудника, а поставить отметку "Виновник не определён". Естественно это надо хранить в базе. Идея сделать запись в таблице сотрудников "Виновник не определён" мне совсем не нравится. Склоняюсь к дополнительному полю в таблице проблем. Есть ещё мысли?

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

Добавлено: 11 Ноябрь 2021, 17:59
ingasoftplus
Так а что мудрить?? Поле "Виновник" может оставаться пустым - я надеюсь оно есть sysref на таблицу сотрудкинов? Так и хорошо - если оно пустое или Null или = 0 - то этого достаточно, чтобы понять что "Виновник не определён". Т.е. Поле "Виновник" должно быть необязательным

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

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

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

Добавлено: 11 Ноябрь 2021, 18:42
Дед Пахом
kreator писал(а): 11 Ноябрь 2021, 17:48 Задача такая. Дать возможность выбрать не сотрудника, а поставить отметку "Виновник не определён".
Так это речь о дизайне окна, или о чём?

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

Добавлено: 11 Ноябрь 2021, 18:59
finsoftrz
Пустое значение ссылки на сотрудника не обязательно означает, что виновный не определен, так как надо время, чтобы определить и, соответственно, другой статус решения проблемы. Поэтому, скорее всего, второе поле в записи проблем. Или, как изначально предложено, виновный не определен, либо статус решения проблемы. Я бы использовал второй вариант,наверно.

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

Добавлено: 11 Ноябрь 2021, 22:20
gromov
Виновник не определен ... Глупость какая-то. Если ей следовать, то два поля нужно. 1) vinovnik - значения 0/1 невиновник/виновник. 2) osadok (нужно наполовину), т.е. если поле виновник=0, а значение поля осадок=1, то это означает, что чел. вроде-бы и не виновен, но осадок остался :D

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

Добавлено: 12 Ноябрь 2021, 17:26
kreator
Глупость/не глупость, а что-то делать надо. Ещё раз. Пустое поле "Виновник" не означает, что он не определён. А означает, что его не должно быть. ДП, дизайн окна вторичен. Он в зависимости от варианта хранения. Похоже склоняемся ко второму варианту?

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

Добавлено: 12 Ноябрь 2021, 17:50
RaFaeL
kreator писал(а): 12 Ноябрь 2021, 17:26 Пустое поле "Виновник" не означает, что он не определён. А означает, что его не должно быть.
Это, видимо, зависит от каких то других параметров?
Типа при этом статусе должен быть виновник или он не определен, а при другом его и быть не может
Ну значит нужно сделать процедуру с параметрами, которая вернет в одном случае пустую строку, а в другом - "виновник не определен" либо виновника

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

Добавлено: 13 Ноябрь 2021, 16:07
kreator
RaFaeL, Вы правы. Но меня сейчас интересует хранение в базе. Лучше моего второго варианта решения нет?

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

Добавлено: 13 Ноябрь 2021, 16:28
gromov
Наверное правильнее будет назвать поле "Виновность не определена".

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

Добавлено: 13 Ноябрь 2021, 16:35
kreator
Кто-то виноват, а кто неизвестно. Пользователь (поскольку поле становится обязательным) выбирает первого по алфавиту. Предложили вот такое решение.

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

Добавлено: 13 Ноябрь 2021, 16:38
finsoftrz
kreator писал(а): 13 Ноябрь 2021, 16:07 RaFaeL, Вы правы. Но меня сейчас интересует хранение в базе. Лучше моего второго варианта решения нет?
Написали же, отдельное поле статуса проблемы. Оно первично по смысловой нагрузке. А указание виновного это вторичная информация для тех значений статуса, когда он определен. Мы еще считаем, что виновный всегда один по задаче.

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

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