|
|
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
|---|---|---|---|
|
#18+
Коротко опишу ситуацию. Имеется некая база данных + пользовательский интерфейс по работе с некоей информацией. Функционал разработан по согласованному с бизнесом ТЗ. База в части реализации этих требований представляет собой несколько таблиц - основная сущность (например, документ) и подчиненные "1 к N" сущности (история изменений по документу, созданные проводки по документу и т.п.). По прошествии нескольких лет пришла мысль анализировать то что хранится в этих таблицах. Выяснилось, что в БД никаких ссылочных ограничений целостности не сделано, внешние ключи отсутствуют. В программе были реализованы только те ограничения, которые явно прописаны в ТЗ. Но например, имеются изменения по документу, а самого документа в системе нет (удален). Завожу баг на эту систему, в ответ получаю, что меня просят указать в нем требование, которое не выполнено. "Если такого нет, то значит система работает штатно". У меня волосы шевелятся от такого подхода, но не могу найти что возразить... Должна ли база быть в согласованном состоянии, с нормально прописанными хотя бы элементарными констрейнтами, внешними ключами, даже несмотря на то что в ТЗ такого ПРЯМОГО требования нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 14:34 |
|
||
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
|---|---|---|---|
|
#18+
avec... Функционал разработан по согласованному с бизнесом ТЗ. ... По прошествии нескольких лет пришла мысль анализировать то что хранится в этих таблицах. ... Посмотрите ещё раз: Несколько лет назад были сформулированы требования. Несколько лет система работала. Сегодня вам в голову пришла мысль. Кто несколько лет назад должен был отвечать за то, чтобы система смогла поддержать вашу сегодняшнюю мысль? Те кто должен был отвечать - подписали ТЗ (с обеих сторон). У них же проблем нет? :) avec... У меня волосы шевелятся от такого подхода, но не могу найти что возразить... ... Должна ли база быть в согласованном состоянии, с нормально прописанными хотя бы элементарными констрейнтами, внешними ключами, даже несмотря на то что в ТЗ такого ПРЯМОГО требования нет? База никому ничего не должна. Спроектирована она в меру понимания заказчика и квалификации разработчика. И даже работает! (самый нглавный показатель ) Может быть, разработчики даже задавали вопрос - что делать с удалёнными документами? Сохранившаяся история редактирования без самого документа - просто мусор, который при анализе вы можете спокойно игнорировать. Вам это не нравится? Выбиваете финансирование, пишете новое ТЗ, получает новую систему для реализации "пришедших мыслей". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 14:51 |
|
||
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
|---|---|---|---|
|
#18+
Соглашусь с АнатоЛой другими словами. Вам не надо отвечать на известный русский вопрос "Кто виноват?", вам надо отвечать на другой русский вопрос "Что делать?" Описываете проблему в понятных бизнесу терминах, описываете возможные неприятные последствия, описываете возможные пути решения, согласуете свою докладную записку с начальством Если возражений нет, то даете ей ход как заявка на доработку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 18:01 |
|
||
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
|---|---|---|---|
|
#18+
avecЗавожу баг на эту систему, в ответ получаю, что меня просят указать в нем требование, которое не выполнено Нужно в описании воспроизведения бага написать, как можно нарушить ссылочную целостность, если уж на это действительно нет контроля, а затем указать, что от этого станет неверно работать. Например: Обнаружен баг - неверная работа отчетов. Воспроизведение: 1. Добавляем Улицу1 в справочник улиц 2. Добавляем клиента, вносим ему адрес - Улицу1. 3. Вносим оплату этого клиента. 4. Удаляем из справочника улиц Улицу1, якобы ошибочно. 5. Формируем отчет "Приход по кассе за неделю по дням" (подыскать отчет, не использующий справочник улиц) 6. Формируем отчет - приход по кассе за день в разрезе клиентов, с указанием адреса (подыскать отчет с join на справочник улиц) 7. Собственно, баг: сумма за указанный день в п.5 не совпадает с итогом по п.6, поскольку оплата клиента, как и сам клиент, из отчета п.6 пропал вместе с пропавшей улицей. Предлагается доработка: на п.4 система не должна разрешить удалить улицу, для чего нужно поддерживать ссылочную целостность средствами... ну и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 19:55 |
|
||
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
|---|---|---|---|
|
#18+
avec, По любому через два года никто ничего бесплатно устранять не будет (если автора интересует именно этот вопрос) - это однозначно будет только за новые деньги. Другое дело если бы все эти два года у вас был с разработчиком действующий договор на техническое сопровождение, по которому вы регулярно платили - тогда вы могли бы качать свои права, да и то опять же только в рамках этого договора и на условиях этого договора. А так ситуация примерно такая как если бы вы купили в магазине холодильник, а потом пришли через пять лет и начали качать права, что вам продали холодильник у которого при закрытии двери внутри не гаснет свет - конечно вас пошлют куда подальше и будут правы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 21:10 |
|
||
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
|---|---|---|---|
|
#18+
avecДолжна ли база быть в согласованном состоянии, Практически любая СУБД может реализовать и не согласованную базу как у вас, но и согласованную с поддержкой целостности данных и так далее, стоит только на этапе проектирования поставить / убрать в нужных местах нужные галочки да содать индексы, ключи и связи, но это все опять же прописывается в ТЗ, в данном случае разработчики посчитали (раз в ТЗ этого нет) - то лучше оставить историю изменения документа при удалении самого документа, чем потерять всю историю изменения документа при случайном удалении нужного документа - вот по этому вы и заметили этот факт только через два года, да еще небось и радовались когда случайно удаляли нужный документ, а его история оставалась и можно было всё восстановить за час два создав новый документ по истории старого... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 21:31 |
|
||
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
|---|---|---|---|
|
#18+
vmagavecДолжна ли база быть в согласованном состоянии, Практически любая СУБД может реализовать и не согласованную базу как у вас, но и согласованную с поддержкой целостности данных и так далее, стоит только на этапе проектирования поставить / убрать в нужных местах нужные галочки да содать индексы, ключи и связи, но это все опять же прописывается в ТЗ, в данном случае разработчики посчитали (раз в ТЗ этого нет) - то лучше оставить историю изменения документа при удалении самого документа, чем потерять всю историю изменения документа при случайном удалении нужного документа - вот по этому вы и заметили этот факт только через два года, да еще небось и радовались когда случайно удаляли нужный документ, а его история оставалась и можно было всё восстановить за час два создав новый документ по истории старого... Мне казалось, есть что-то незыблемое в работе хороших айтишников, а по высказываниям я смотрю, что айтишники превратились в унылых строителей. Им не скажешь, что надо перед окраской, например, оштукатурить или грунт нанести, ну или хотя бы старую краску счистить - так они и красят по отколупливающейся и приговаривают: "вы ж в ТЗ не написали."... грустно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 22:51 |
|
||
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
|---|---|---|---|
|
#18+
avecМне казалось, есть что-то незыблемое в работе хороших айтишников, а по высказываниям я смотрю, что айтишники превратились в унылых строителей. Когда нужен к зиме - он может быть и непокрашенный, но тёплый. А если коров можно заселять только в следующем году - всё будет с иголочки, и даже бахилы для коров... Вам ведь такая БД нравится? avecИм не скажешь, что надо перед окраской, например, оштукатурить или грунт нанести, ну или хотя бы старую краску счистить - так они и красят по отколупливающейся и приговаривают: "вы ж в ТЗ не написали."... грустно Вы присутствовали, когда несколько лет назад команда с обеих сторон согласовывала, что нужно сделать? Нет? Тогда не судите. Может коровник нужен был к зиме. Мы всего лишь пытались подсказать, что мир не однополярный. Какой мотив у айтишников, которых вы просите "исправить ошибки" сейчас, делать это? Они точно должны это делать? П.С.: "Кощей не злой - у него работа такая" (с) НеМой "Смерть, даже врага, должна вызывать слёзы. Иначе что мы за люди..." (с) Ник. Горькавый "Возвращение астровитянки". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 23:17 |
|
||
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
|---|---|---|---|
|
#18+
АнатоЛойКогда коровник нужен к зиме.... далее по тексту ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 23:18 |
|
||
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
|---|---|---|---|
|
#18+
АнатоЛойМожет коровник нужен был к зиме. Ну так его без фундамента что ли делать??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 23:21 |
|
||
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
|---|---|---|---|
|
#18+
avecАнатоЛойМожет коровник нужен был к зиме. Ну так его без фундамента что ли делать??? Какой вы непробиваемый. Коровник нужен к зиме, остался месяц, бетонных блоков нет, заливать бесполезно - уже не выстоится. Ещё раз задаю вопрос: вы участвовали при подписании ТЗ? Если да, то всё хорошо: все важные вещи вы же в ТЗ прописали? Если нет, то советы вам уже дали: 1) или оформляйте новые требования/ТЗ; 2) или ищите нарушение требования, указанного в ТЗ, которое таки потребует использования ссылочной целостности; 3) или "меняйте работу" (с) анек про программиста и запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 23:59 |
|
||
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
|---|---|---|---|
|
#18+
avecЗавожу баг на эту систему, в ответ получаю, что меня просят указать в нем требование, которое не выполнено. "Если такого нет, то значит система работает штатно". У меня волосы шевелятся от такого подхода, но не могу найти что возразить...Нормальный подход. avecДолжна ли база быть в согласованном состоянии, с нормально прописанными хотя бы элементарными констрейнтами, внешними ключами, даже несмотря на то что в ТЗ такого ПРЯМОГО требования нет?Нет, "констрейны" - инструмент для реализации бизнес-требований. Например, историю изменений документа, возможно, нужно хранить без документа, соответственно констрейн не нужен. Но естественно есть понятие "хорошая практика", так что в чём то вы правы, если говорить не конкретно про историю, а вообще. Насчёт "обязательно должно быть прописано в ТЗ" - не согласен. Есть общепринятые вещи, "хорошая практика". Допустим, не было в ТЗ требования к формированию имён таблиц и переменных, это же не значит, что можно сделать все имена GUID-ами. То же можно сказать, например, про структурирование кода, модульность. Или это получится не ТЗ, а "задание тупому кодеру", до уровня элементарных функций на несколько строк, то есть собственно практически готовая программа, остаётся только закодить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 19:24 |
|
||
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
|---|---|---|---|
|
#18+
alexeyvgИли это получится не ТЗ, а "задание тупому кодеру", до уровня элементарных функций на несколько строк, то есть собственно практически готовая программа, остаётся только закодить. Речь вообще-то не о программе, а о структуре базы данных, а если еще точнее то про то, что нет каскадного удаления, по этому есть мусор (только и всего), причем еще не ясно - хорошо это или плохо... Можно решить данную проблему несколькими запросами на удаление мусора и всё (в зависимости от длины потерянного дерева, а потом зайти в конструктор схемы и проставить каскадное удаление на будущее), при этом преподать это как рац предложение, заработать бабла и повесить на грудь медаль... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 22:22 |
|
||
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
|---|---|---|---|
|
#18+
ТС. Согласованность - очень сложный вопрос, особенно в вашем случае. Удаление документа не тривиальная задача, т.к. не понятно (и, вероятно) ТЗ этот вопрос не описывало - что делать, когда идет попытка удалить документ, имеющий подчиненные сущности. Вариантов сходу несколько: а) не давать удалять, пока существует хотя бы одна связанная сущность; б) удалять, и удалять в том числе связанные записи; в) удалять, не удаляя связанные записи; Каждый из них имеет свои плюсы и минусы в зависимости от конкретной бизнес-модели . Я бы, к примеру, сформировал четвертый вариант: не удалять, а переносить в архив. ИМХО физическое удаление в БД - зло. Всегда должна быть возможность данные восстановить. Так что требовать наличие "констреинтов" по умолчанию - это мягко сказать не верно. [QUOTE]Завожу баг на эту систему, в ответ получаю, что меня просят указать в нем требование, которое не выполнено.[QUOTE] А вот тут извините, но разработчик прав. По вашей же аналогии: дом сдан, но вы через два года требуете поставить финские стеклопакеты , вместо установленных стандартных кривых русских, а также поменять ванную на ванную с гидромассажем. При этом в спецификации было просто указано "стеклопакеты" и "сантехника" и стоимость рассчитывалась исходя из стандартных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2014, 10:55 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38614580&tid=1540924]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
174ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 267ms |
| total: | 531ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...