Вопрос по теории БД
Модератор: Дед Пахом
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Вопрос по теории БД
Прилетела задача. Хочу поспрашивать у народа. Есть таблица сотрудников. И есть таблица проблем, где есть поле "Виновный сотрудник (виновник)". Они связаны как положено в теории БД. Поле "Виновник" может оставаться пустым (в SQL - null), заполняется в определённых случаях. Задача такая. Дать возможность выбрать не сотрудника, а поставить отметку "Виновник не определён". Естественно это надо хранить в базе. Идея сделать запись в таблице сотрудников "Виновник не определён" мне совсем не нравится. Склоняюсь к дополнительному полю в таблице проблем. Есть ещё мысли?
We are hard at work… for you.
- ingasoftplus
- Ветеран
- Сообщения: 426
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 90 раз
- Поблагодарили: 5 раз
Вопрос по теории БД
Так а что мудрить?? Поле "Виновник" может оставаться пустым - я надеюсь оно есть sysref на таблицу сотрудкинов? Так и хорошо - если оно пустое или Null или = 0 - то этого достаточно, чтобы понять что "Виновник не определён". Т.е. Поле "Виновник" должно быть необязательным
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Вопрос по теории БД
А кто брал ? Папа римский брал ? (С) Золотой телёнок
Вообще ничего не делать. Вопрос хранения значения (поставить отметку "Виновник не определён") - решён.
Остался вопрос отображения. Если связь таблиц не Inner - запись проблемы без сотрудника (NULL) будет показана.
По отметке "Виновник не определён" показываем ... что виновник не определён. Всё.
За теми кто отстал - не возвращаться. (С) Кодекс
- Дед Пахом
- Старичок
- Сообщения: 3137
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4664
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 8 раз
- Поблагодарили: 37 раз
Вопрос по теории БД
Пустое значение ссылки на сотрудника не обязательно означает, что виновный не определен, так как надо время, чтобы определить и, соответственно, другой статус решения проблемы. Поэтому, скорее всего, второе поле в записи проблем. Или, как изначально предложено, виновный не определен, либо статус решения проблемы. Я бы использовал второй вариант,наверно.
C6/C11, ШВС, tps/btrieve.
-
- Старожил
- Сообщения: 263
- Зарегистрирован: 11 Февраль 2009, 8:41
- Откуда: г. Анапа
- Поблагодарили: 3 раза
Вопрос по теории БД
Виновник не определен ... Глупость какая-то. Если ей следовать, то два поля нужно. 1) vinovnik - значения 0/1 невиновник/виновник. 2) osadok (нужно наполовину), т.е. если поле виновник=0, а значение поля осадок=1, то это означает, что чел. вроде-бы и не виновен, но осадок остался
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Вопрос по теории БД
Глупость/не глупость, а что-то делать надо. Ещё раз. Пустое поле "Виновник" не означает, что он не определён. А означает, что его не должно быть. ДП, дизайн окна вторичен. Он в зависимости от варианта хранения. Похоже склоняемся ко второму варианту?
We are hard at work… for you.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1378
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Вопрос по теории БД
Это, видимо, зависит от каких то других параметров?
Типа при этом статусе должен быть виновник или он не определен, а при другом его и быть не может
Ну значит нужно сделать процедуру с параметрами, которая вернет в одном случае пустую строку, а в другом - "виновник не определен" либо виновника
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Вопрос по теории БД
RaFaeL, Вы правы. Но меня сейчас интересует хранение в базе. Лучше моего второго варианта решения нет?
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Вопрос по теории БД
Кто-то виноват, а кто неизвестно. Пользователь (поскольку поле становится обязательным) выбирает первого по алфавиту. Предложили вот такое решение.
We are hard at work… for you.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4664
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 8 раз
- Поблагодарили: 37 раз
Вопрос по теории БД
Написали же, отдельное поле статуса проблемы. Оно первично по смысловой нагрузке. А указание виновного это вторичная информация для тех значений статуса, когда он определен. Мы еще считаем, что виновный всегда один по задаче.
C6/C11, ШВС, tps/btrieve.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1378
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация: