|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
Коротко опишу ситуацию. Имеется некая база данных + пользовательский интерфейс по работе с некоей информацией. Функционал разработан по согласованному с бизнесом ТЗ. База в части реализации этих требований представляет собой несколько таблиц - основная сущность (например, документ) и подчиненные "1 к N" сущности (история изменений по документу, созданные проводки по документу и т.п.). По прошествии нескольких лет пришла мысль анализировать то что хранится в этих таблицах. Выяснилось, что в БД никаких ссылочных ограничений целостности не сделано, внешние ключи отсутствуют. В программе были реализованы только те ограничения, которые явно прописаны в ТЗ. Но например, имеются изменения по документу, а самого документа в системе нет (удален). Завожу баг на эту систему, в ответ получаю, что меня просят указать в нем требование, которое не выполнено. "Если такого нет, то значит система работает штатно". У меня волосы шевелятся от такого подхода, но не могу найти что возразить... Должна ли база быть в согласованном состоянии, с нормально прописанными хотя бы элементарными констрейнтами, внешними ключами, даже несмотря на то что в ТЗ такого ПРЯМОГО требования нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 14:26 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
avec, тут умные товарищи наставивали что "не должна", типа никто ниче никому не должен если это явно не затребовано не написал что интерфейс пользователя должен быть на русском, то могу спокойно на азербайджанском и все будет ок ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 14:39 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
Должна ли база быть в согласованном состоянии, с нормально прописанными хотя бы элементарными констрейнтами, внешними ключамиКонечно не должна. 1. Констрейнты заметно тормозят. 2. Сильно мешают некот. действиям (допустим перезалить к-л данные) 3. Временное отключение констрейнтов затруднено, т.к. требует полномочий и может создать тормоза и блокировки. 4. От искажений информации констрейнты спасают лишь частично. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 14:46 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
avec в БД никаких ссылочных ограничений целостности не сделано, внешние ключи отсутствуют. Вот это халтура ! Первичные ключи-то хоть на месте ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 14:47 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
Криптоаналитег, Первичные есть. Хотя в ТЗ про них также не говорилось, могли бы не делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 14:53 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
avec, а вы штраф на ни за первичные ключи наложите типа не было в требованиях, а вы сделали ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 14:54 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
LSV, Позицию услышал. Но в данном случае мне кажется, в ТЗ должна быть какая-то такая фраза, что внешние ключи не делаются осознанно, и привести в качестве обоснования одну или несколько из указанных причин. Если этого не сделано, то PK, FK - все же ИМХО должны быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 14:57 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
> Функционал разработан по согласованному с бизнесом ТЗ. Формально целостность данных отдельно ничем не регламентируется: целостность - результат реализации требований задачи и естественных логических ограничений. Можно, конечно, попробовать обосновать отсутствие логического ограничения как ошибку реализации, но в практических перспективах сильно сомневаюсь. Хороший пример, почему не стоит иметь дела с баранами, кстати. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 15:08 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
В старой Галактике под MSSQL тоже не было констрейнтов. 2500 таблиц ни ПК ни ФК. Целостность рулилась в триггерах, там же БЛ. Такой подход имеет место быть. Но я бы от него бежал. Но например, имеются изменения по документу, а самого документа в системе нет (удален). Вот на это следует обратить внимание. Если мусор от удаленных объектов влияет на БП, отчеты, аналитику, итд, найдите это влияние. И тыкайте им в морду. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 15:27 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
avecв ТЗ должна быть какая-то такая фраза, что внешние ключи не делаются осознаннТЗ пишут люди, понятия не имеющие о FK....PK Там только функциональные требования. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 15:31 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
R7Вот на это следует обратить внимание. Если мусор от удаленных объектов влияет на БП, отчеты, аналитику, итд, найдите это влияние. И тыкайте им в морду. +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 15:32 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
avecПо прошествии нескольких лет пришла мысль анализировать то что хранится в этих таблицах. Выяснилось, что в БД никаких ссылочных ограничений целостности не сделано, внешние ключи отсутствуют. В программе были реализованы только те ограничения, которые явно прописаны в ТЗ. Но например, имеются изменения по документу, а самого документа в системе нет (удален). Завожу баг на эту систему, в ответ получаю, что меня просят указать в нем требование, которое не выполнено. "Если такого нет, то значит система работает штатно". кому понадобилось анализировать? зачем? она работает? думаю все верно сказали - систему может через месяц-два выкинуть собираются, а тут "завожу баг". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 15:48 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
ViPRosavec, тут умные товарищи наставивали что "не должна", типа никто ниче никому не должен если это явно не затребовано не написал что интерфейс пользователя должен быть на русском, то могу спокойно на азербайджанском и все будет ок ViPRos, перегибаете. В ТЗ всегда есть некие границы контекста (как и в любом договоре). Если в ТЗ указана область применения ПО, разработчик может сам сделать выводы, какой нужен язык. А может сделать и ещё вписать в ТЗ. А может и не сделать никаких выводов - и реализовать на айзербайджанском. И тут действительно всё зависит от степени квалификации и сложившихся отношений обеих сторон. ТС завёл две темы, но поддержу и здесь: avec... Функционал разработан по согласованному с бизнесом ТЗ. ... По прошествии нескольких лет пришла мысль анализировать то что хранится в этих таблицах. ... Посмотрите ещё раз: Несколько лет назад были сформулированы требования. Несколько лет система работала. Сегодня вам в голову пришла мысль. Кто несколько лет назад должен был отвечать за то, чтобы система смогла поддержать вашу сегодняшнюю мысль? Те кто должен был отвечать - подписали ТЗ (с обеих сторон). У них же проблем нет? :) avec... У меня волосы шевелятся от такого подхода, но не могу найти что возразить... ... Должна ли база быть в согласованном состоянии, с нормально прописанными хотя бы элементарными констрейнтами, внешними ключами, даже несмотря на то что в ТЗ такого ПРЯМОГО требования нет? База никому ничего не должна. Спроектирована она в меру понимания заказчика и квалификации разработчика. И даже работает! (самый главный показатель ) Может быть, разработчики даже задавали вопрос - что делать с удалёнными документами? Сохранившаяся история редактирования без самого документа - просто мусор, который для реализации вашей мысли при анализе вы можете спокойно игнорировать. Вам это не нравится? Выбиваете финансирование, пишете новое ТЗ, получаете новую систему для реализации "пришедших мыслей" и не бередящую ваше чувство прекрасного. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 16:14 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
Извините, опечатался. Конечно же, правильно: азербайджанском . ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 16:15 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
Petro123R7Вот на это следует обратить внимание. Если мусор от удаленных объектов влияет на БП, отчеты, аналитику, итд, найдите это влияние. И тыкайте им в морду. +1 +2. Жалко только, ничего существенного ТС не найдёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 16:19 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
avecНо, например, имеются изменения по документу, а самого документа в системе нет (удален). Отлично! Есть "журнал", по которому можно увидеть, что документ таки был! avecЗавожу баг на эту систему. Можете привести цитату, как сформулирован баг? avecДолжна ли база быть в согласованном состоянии В чём её "несогласованность"? Может, пробелма в том, что у вас своё понимание этой самой "согласованности"?! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 16:25 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
АнатоЛойavecДолжна ли база быть в согласованном состоянии В чём её "несогласованность"? Может, пробелма в том, что у вас своё понимание этой самой "согласованности"?! У меня понимание такое http://ru.wikipedia.org/wiki/Ссылочная_целостность . ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 17:18 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
avecАнатоЛойпропущено... В чём её "несогласованность"? Может, пробелма в том, что у вас своё понимание этой самой "согласованности"?! У меня понимание такое http://ru.wikipedia.org/wiki/Ссылочная_целостность . 1. В ТЗ было написано, что база данных этой системы (не СУБД, а именно БД!) должна быть реляционной? 2. Почему вы считаете, что отсутствие ссылочной целостности является "ошибкой" в вашей системе и должно быть исправлено? Потому что так написано в Википедии? 3. Я приводил пример с историей изменения документов и удалённым документом. Как быть в ситуации "удаление документа", если есть внешний ключ из истории изменений на сам документ? а) удалять историю изменения, б) не удалять документ, а помечать как удалённый (и тщательно учитівать этот факт во всей бизнес-логике); в) прописывать в истории "левый ид", делать ещё какие-то пометки и телодвижения, чтобы констрейнт не ругался, и таки удалять строку с документом, г) ваш вариант.... И, самое главное, для чего всё это: удовлетворить ваше чувство прекрасного за счёт денег бизнеса и потраченного времени разработчиков ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 17:38 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
АнатоЛой, а) удалять историю изменения, - Дать возможность б) не удалять документ, а помечать как удалённый (и тщательно учитівать этот факт во всей бизнес-логике); - Дать возможность в) прописывать в истории "левый ид", делать ещё какие-то пометки и телодвижения, чтобы констрейнт не ругался, и таки удалять строку с документом, - Дать возможность г) ваш вариант.... - Дать возможность ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 19:31 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
ViPRosАнатоЛой, а) удалять историю изменения, - Дать возможность б) не удалять документ, а помечать как удалённый (и тщательно учитівать этот факт во всей бизнес-логике); - Дать возможность в) прописывать в истории "левый ид", делать ещё какие-то пометки и телодвижения, чтобы констрейнт не ругался, и таки удалять строку с документом, - Дать возможность г) ваш вариант.... - Дать возможность Вместо 1 чел./дня - имеем 5 чел./дней. Кто заплатит за 4 чел./дня? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 23:02 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
АнатоЛойViPRosАнатоЛой, а) удалять историю изменения, - Дать возможность б) не удалять документ, а помечать как удалённый (и тщательно учитівать этот факт во всей бизнес-логике); - Дать возможность в) прописывать в истории "левый ид", делать ещё какие-то пометки и телодвижения, чтобы констрейнт не ругался, и таки удалять строку с документом, - Дать возможность г) ваш вариант.... - Дать возможность Вместо 1 чел./дня - имеем 5 чел./дней. Кто заплатит за 4 чел./дня? не согласен с такой оценкой. Статус "удален/не удален" ввести - это одно дополнительное поле + корректные условия в логике. Если этому принципу подчиняется вся разработка, то условия "WHERE RecordStatus <> 'D'" пишутся разработчиками на автомате. Констрейнты в DDL описать - тоже не ахти какая сложность. Нет тут "значительного" увеличения трудоемкости. А уважения к создателям прибавляет. P.S. Конечно, базу данных можно использовать, храня в ней одну таблицу с одним полем и все значения писать туда с разделителем "точка с запятой". А че, работать же будет... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 23:07 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
АнатоЛойViPRosАнатоЛой, а) удалять историю изменения, - Дать возможность б) не удалять документ, а помечать как удалённый (и тщательно учитівать этот факт во всей бизнес-логике); - Дать возможность в) прописывать в истории "левый ид", делать ещё какие-то пометки и телодвижения, чтобы констрейнт не ругался, и таки удалять строку с документом, - Дать возможность г) ваш вариант.... - Дать возможность Вместо 1 чел./дня - имеем 5 чел./дней. Кто заплатит за 4 чел./дня? Заказчик, если ему обяснить зачем эти 4 дня но, если вы НЕ хотите заработать, то можете воще ничего не делать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 23:37 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
avecАнатоЛойпропущено... Вместо 1 чел./дня - имеем 5 чел./дней. Кто заплатит за 4 чел./дня? не согласен с такой оценкой. Статус "удален/не удален" ввести - это одно дополнительное поле + корректные услови я в логике. Если этому принципу подчиняется вся разработка , то условия "WHERE RecordStatus <> 'D'" пишутся разработчиками на автомате Констрейнты в DDL описать - тоже не ахти какая сложность. Нет тут "значительного" увеличения трудоемкости. Ну да, конечно. Сколько нужно тестерам проверить на предмет того, что во всех выборках теперь не всплывают удалённые документы)?! И это вы только один из 4-ёх вариантов расписали. avec А уважения к создателям прибавляет Кто против? У всех всегда получается убедить заказчика, что задача/проект займёт не 1 чел./день, а 2? А если счёт не на дни, а на месяцы? У ТС речь идёт про конкретный случай, и не стоит через несколько лет доказывать, что те вчерашние были неправы, поэтому давайте-ка, сегодняшние, на ровном месте делайте бесплатно работу... avecP.S. Конечно, базу данных можно использовать, храня в ней одну таблицу с одним полем и все значения писать туда с разделителем "точка с запятой". А че, работать же будет... Жарким летом кондёр в машине тоже уважения таксисту добавляет, только почему-то не все за кондёр готовы доплачивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 23:37 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
с клентом надо работать по принципу - дай палец, руку отяпает - а не фигней заниматься ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 23:38 |
|
Должна ли быть согласованность данных в базе "по умолчанию"
|
|||
---|---|---|---|
#18+
ViPRosАнатоЛойпропущено... Вместо 1 чел./дня - имеем 5 чел./дней. Кто заплатит за 4 чел./дня? Заказчик, если ему обяснить зачем эти 4 дня но, если вы НЕ хотите заработать, то можете воще ничего не делать :) Я не про концепцию в целом, я про конкретный случай, в котором уже имеем свершившийся факт на входе :). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 23:39 |
|
|
start [/forum/topic.php?fid=33&msg=38614420&tid=1547603]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 184ms |
0 / 0 |