|
|
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
stomskyLSVАбсолютно все удаления (в т.ч. логические) делаются соотв.процедурами, кот. делают много бизнес-проверок с внятными ответами на ошибки. Поэтому случайно удалить важную инфу невозможно. Т.е. на каждую сущность (читай таблицу) - отдельная процедура "Delete_<Entity>"?Да. Это единый подход, без исключений. Хранимая процедура. Возвращает причину неудачи, есличо. Причин может быть пару десятков. И только одну из них можно поймать констрайнтами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 17:19 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
LSVзы: никто внятной их нужности так и не привёл. Ждёмс... Возможно за уши притянуто, но как защита от сапорта, которому позвонил юзер в гневе и попросил удалить вот эту вот строчку срочно, и у которого ночью нет ничего кроме студии и знания, как написать delete from. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 17:44 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
buvenLSVзы: никто внятной их нужности так и не привёл. Ждёмс... Возможно за уши притянуто, но как защита от сапорта, которому позвонил юзер в гневе и попросил удалить вот эту вот строчку срочно, и у которого ночью нет ничего кроме студии и знания, как написать delete from.Студией удалять могу только я. Остальные - штатными процедурами. :) зы: Иногда приходилось править студией в обход процедур. Для заведома некритичных ситуаций. Но такое решение может принять только эксперт. Т.е. я. :) Ниодна система не защищена на 100% от ручной поломки б/логики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 18:01 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
scfИмхо, зависит от базы. Доводы за: <> - низкая квалификация программистов Доводы против: <> - вставка сущности в сложную нормализованную базу может быть делом нетривиальным "низкая квалификация программистов" -- основной довод ПРОТИВ ФК, т.к. кривые руки не дают работать со "сложными нормализованными сущностями" , а хочется махать шашкой. все высказывания ЛСВ о том, что якобы можно обеспечить целостность дешевле -- бред злобного буратины. в развивающемся приложении -- нельзя. в статичном -- после доказательства, что данная статичная реализация ни в одном случае не ломает логическую целостность. (как видим руками туда лезть никак нельзя, никакому ЛСВ -- нарушается статичность) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 18:11 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
Чисто задело, по этому тоже выскажусь... Есть БД с нормальной структурой, целостностью, прозрачностью и т.д. где все просто и красиво... Все, что вокруг (как тут говорят - много всякой информации, текстовых файлов и т.д. и т.п.) - это просто помойка и тут каждый решает для себя уже сам - брать в БД только нужное из помойки, делать тупо ссылку на помойку (кому нужно, тот будет ковыряться) или превратить свою БД тоже в помойку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 23:02 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
mr_maxПрописывать на уровне бд или это старый век? __________________________________________________________________ THE TRUTH IS OUT THERE Нужно стремиться прописывать все ограничения целостности по возможности на уровне БД и по возможности декларативно. Действительно, ведь это логические правила, которым должны отвечать данные. Например, не должно быть этапов договоров не относящихся ни к каким договорам. И декларативно прописанные мало того, что горантировано не позволяют нарушить логические ограничения в БД, так они еще и имеют модельное значение: легко понять что есть такое правило, просто просотрев ОЦ. БД - это ядро ИС - там вся информация. И поэтому ее модель, которая включает ОЦ имеет значение. А программ мало того, что много - (во всех прописывать одни и те же ОЦ?) , так в них могут быть ошибки (а БД должна оставаться целостной по возможности), в них не видно, сложней править. Да и программы - это типа внешние модели с точки зрения тех или иных пользователей. А модель БД это модель всей информации системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 23:38 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
LSVКуда именно их отправить ? Как обрабатывать ? В смысле как? Проверить наличие данных на наличие в справочниках базы слабо. Стандартная тривиальная проверка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 02:12 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
авторА можно пример такой ситуации? Для меня это как-то диковато... Могу легко дать вам пример, без имён. Есть программа, купленная на торгах + ТП ежегодная покупаемая. торги, значит выбрано дешёвое предложение. Oracle + java. По сути программа не рабочая, то есть время от времени (чаще, чем раз в месяц) в программе возникают такие проблемы, которые поправить из программы невозможно никак. Бывает, что причину увидеть из программы также невозможно никак. Заказать доработку у программистов -- это до нескольких месяцев, даже когда проблемы критические. Как выкрутились (я и ТП). 1. Лезем в БД, селектами. Буквально сверяем строки в таблицах, проблемная строка + работающая строка. Ищем какие то несоответствия. 2. Когда находим (вот в этом поле надо false убрать) рассуждаем зачем там false по закону он или по логике, как его убрать из программы, как он там очутился и т.п. 3. Затем если из программы это сделать никак нельзя -- убираем их update или даже удаляем строки delete. Мне и ТП значительно легче править БД без всяких глупостей, типа ФК. Про риски я промолчу, это кошмар! --- При этом все же понимают, что это не правильно! Просто денег мало, ищем самый быстрый способ. Или единственно реально выполнимый. Какие ещё нужны аргументы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 08:14 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
azsxМогу легко дать вам пример [...] Какие ещё нужны аргументы? Если Ваш пример сформулировать одной фразой, он будет звучать так - "в кривой и глючной системе жить без констрейнтов проще и легче". Ну, ээ, возможно :) Но, согласитесь, как аргумент в споре "проектировать ли систему, опираясь на констрейнты или нет" - он звучит слабовато. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 08:32 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
mr_maxПрописывать на уровне бд или это старый век? __________________________________________________________________ THE TRUTH IS OUT THERE нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 09:10 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, + В принципе, можно проанализировать любую готовую БД уже по факту (для этого нужен анализ каждой конкретной разработки): 1. БД спроектирована оптимально, интерфейс удобен и понятен, система в целом стабильна, иногда возникают некоторые вопросы, которые решаются по телефону после звонка в службу поддержки - это значит, что разработчик сделал ставку на массовое распространение продукта и готов вести конкурентную политику с целью максимального привлечения клиентов, и получения прибыли с продаж продукта. 2. БД и интерфейс в целом выполняют свои функции, но есть определенные моменты, которые разработчик может устранить только своим личным участием - это значит, что ввиду определенной специфики, данное ПО не имеет возможности массового распространения, а разработчик имеет огромное желание постоянно доить узкий круг своих клиентов, эксплуатирующих его ПО. 3. БД (ПО) глючное до не могу, но другой альтернативы просто нет - это значит, что ПО Федерального уровня, написанное наспех студентами за бесплатно (несмотря на выделенный на это гос бюджет) для обеспечения выполнения одного из Федеральных законов. Тут нужно тупо всей страной жаловаться во все инстанции, заваливать траблами службу поддержки и просто терпеливо ждать... 4. БД (ПО) глючное до не могу, но есть альтернатива - нужно переходить на альтернативное ПО, или пытаться писать свое (дорабатывать существующее, делать свои надстройки). Показателен пример от azsxКак выкрутились (я и ТП). 1. Лезем в БД, селектами. Буквально сверяем строки в таблицах, проблемная строка + работающая строка. Ищем какие то несоответствия. 2. Когда находим (вот в этом поле надо false убрать) рассуждаем зачем там false по закону он или по логике, как его убрать из программы, как он там очутился и т.п. 3. Затем если из программы это сделать никак нельзя -- убираем их update или даже удаляем строки delete. Мне и ТП значительно легче править БД без всяких глупостей, типа ФК. Пункты 1-3 можно автоматизировать и положить начало созданию своей надстройки контроля информации. Ну и т.д. и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 09:10 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
LSVСвязи (констрайнты) будут мешать разными способами. Поэтому многие разработчики их принципиально не используют. И правильно делают, ИМХО. мнение отдельно неправильного индивидуума неинтересно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 09:10 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
stomskyLSVСвязи (констрайнты) будут мешать разными способами. Каким образом FOREIGN KEY CONSTRAINT может мешать? говорят, плохим танцорам даже шары мешают... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 09:12 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
SERG1257Думаю, тут речь не о ресурсах. Связи мешают девелоперам другим, они требуют дисциплины - с ними ничего так просто не грохнеш не вставиш, скрипты приходится писать аккуратнее. особенно они мешали на собеседованиях. спросишь бывало "что же такое этот foreign key, и чем отличается от primary key" ? а в ответ "они только и мешают..." ну, ок, если тебе они мешают, как ты у нас работать будешь, когда из у нас в базе несколько тысяч? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 09:16 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
stomsky Но я ни разу не слышал серьезных аргументов в продолжение разговора об этих тормозах. потому что их просто нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 09:18 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
автор"в кривой и глючной системе жить без констрейнтов проще и легче" Моё мнение, что в программе нужны связи между таблицами, ключи первичные, тригеры. Процедурами для каких либо действий я сам не пользуюсь (но я любитель, пишу только для себя). Верное замечание, когда система кривая и глючная, когда вопреки всякой логике какие то левые личности прут на БД с рутом поправить чо то по быстрому -- тогда удобно без всяких проверок. Но это огромный риск и явно не верное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 09:20 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
авторПункты 1-3 можно автоматизировать и положить начало созданию своей надстройки контроля информации. Именно так я и делаю неспешно. К сожалению в мире есть два нормальных языка, на пхп http://www.sql.ru/forum/1261406/kak-podkluchitsya-k-baze-oracle у меня подключиться просто не получилось к БД, а на fpc https://www.devart.com/odac/download.html компонент платный и дорогой очень. Приходится учить java. зы извините, фокспро и vb6 также прекрасны, но они мертвы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 09:34 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
LSVstomskyТ.е. на каждую сущность (читай таблицу) - отдельная процедура "Delete_<Entity>"?Да. Это единый подход, без исключений. Хранимая процедура. Возвращает причину неудачи, есличо. Причин может быть пару десятков. И только одну из них можно поймать констрайнтами. А INSERT-ы и UPDATE-ы тоже в хранимых процедурах? Ведь ими тоже ссылочную целостность можно нарушить... Я почему так подробно интересуюсь, - есть мнение, что SQL в качестве языка для реализации сложной бизнес-логики слишком неудобен. Поэтому бизнес логику лучше выносить на уровень сервисов, которые пишутся на JAVA, C# и прочих Питонах. А ты, получается, возводишь защитную стену их хранимок на этом самом SQL... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 10:11 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
Верное замечание, когда система кривая и глючная....таких систем с т.з. канонического проектирования - 90%. В тиражных системах - тож самое или даже хуже. И вообще причем тут глючность ? Как раз сама система может работать очень даже ОК. Руками приходится лесть, когда жизненно необходимо сделать некое нештатное действие. Ради него эту систему переделывать не будут. а еще: Например удобно хранить пустую ссылку как = 0, а не null. Но тогда констрайнту не наложишь. В любой большой системе полно мест, где констрайнту не получится использовать (примеры были выше). И тогда нужно помнить, где есть констрайнта, а где нет. Выходит, констрайнта как "защита от дурака" - слабая мера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 10:18 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
авторКак раз сама система может работать очень даже ОК. Руками приходится лесть, когда жизненно необходимо сделать некое нештатное действие. Ради него эту систему переделывать не будут. У нас с Вами просто мнение разное. В excel мне никогда не понадобилось лезть в файлы xls, чтобы что то поправить нотепадом. и затем вновь открыть этот же xls этим же excel'ом. Я слышал, что у excel бывали проблемы, правили баги, но сам не сталкивался. В очень многих популярных тиражируемых программах я также никогда не думал о коде или БД. А вот некоторые программы в РФ кривые. Значит левым людям приходится лезть в БД с select'ами. Иначе никак не разобраться чо не так. А вот некоторые программы в РФ глючные. Значит левым людям приходится лезть в БД с delete'ами update'ами. Иначе никак не исправить проблемы данного софта. При этом можно заказать доработку, от 3 месяцев и выше, просто нереально по срокам. зы Если согласно Вашему опыту таких программ 90% -- то просто ужас. Странно, что программисты ваще находят время на форумах писать, им работать надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 10:33 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
Чем больше таких утверждающих и дискутирующих, тем лучше - мне гарантирована востребованность на рынке труда. "Танцуйте, ребятки, танцуйте, и ваш нос вырастет длинным-длинным. А мы распилим его на дубинки." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 10:39 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
авторСтранно, что программисты ваще находят время на форумах писать, им работать надо. Хотя так подумал, логично. Платят ли программистам за то, чтобы они программы безглючные писали в РФ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 10:40 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
Если согласно Вашему опыту таких программ 90% -- то просто ужас. Это не ужас. Это реалии жизни. Не только в БД, а вообще в любой сфере деятельности. Везде приходится отступать от неких правил, чтобы преодолеть ограничения, наложенные этими правилами. зы: ради веселья почитайте рассказик "хакер в столовой". Есть неск. его вариантов. Пля....констрайнтами они данные собрались защищать....... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 10:53 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
авторЭто не ужас. Это реалии жизни. LSV, хорошо, поясните, пожалуйста, любителю. 1. Почему Ваши реалии не работают для excel? 2. В чём негатив? Реальная программа кривая, единственный способ исправить -- это удалить строку в БД. Пусть левый человек разберётся в зависимостях, сперва удалит или исправит зависимые записи в других таблицах, затем удаляет в своей таблице напрямую. Что не так? То есть без всех этих проверок, которые пишут проектировщики системы, мне, левой личности, случайно испортить базу очень легко. А проверки чуть чуть, но спасали бы от бездумных delet'ов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 11:01 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
azsxавторЭто не ужас. Это реалии жизни. LSV, хорошо, поясните, пожалуйста, любителю. 1. Почему Ваши реалии не работают для excel? 2. В чём негатив? Реальная программа кривая, единственный способ исправить -- это удалить строку в БД. Пусть левый человек разберётся в зависимостях, сперва удалит или исправит зависимые записи в других таблицах, затем удаляет в своей таблице напрямую. Что не так? То есть без всех этих проверок, которые пишут проектировщики системы, мне, левой личности, случайно испортить базу очень легко. А проверки чуть чуть, но спасали бы от бездумных delet'ов.1. Не понял вопроса. 2. Реальная может быть и не кривой. Но иногда нужен быстрый результат, кот. достижим только прямым апдейтом. При разработке системы часто приходится манипулировать данными в целях отладки, поиска ошибок и т.д. При этом иногда приходится кратковременно нарушать целостность. Чтобы проверить свою систему ловли ошибок или просто проверить работу системы с комбинациями разных данных. И так далее до бесконечности....... пример: нужно срочно исключить один документ из выборки. Достаточно просто поменять знак ключа в шапке, чтоб связь со строками разорвалась и документ из сложной выборки исчез. Через секунду вернуть назад. И т.п. Иногда удобно править данные в порядке, кот. противоречит целостности: н-р сначала удаляем шапку, потом ее строки (это сказано просто для примера). И тут констрайнты могут мешать. При этом констрайнту всегда можно заменить диагностической выборкой, показывающей точки с ошибкой. И сделать выводы. Иногда удобно, чтоб ошибки накопились после неск. отдельных манипуляций. И опять сделать выводы. Глюк при сработавшей констрайнте обычно малоинформативен. Нельзя точно сказать, какое значение ключа вызвало глюк. А хотелось бы. В хорошо спроектированной системе нештатное удаление/искажение важных данных невозможно. Констрайнты просто никогда не сработают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 11:50 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=39500128&tid=1540145]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 412ms |

| 0 / 0 |

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