|
|
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
LSVНу очевидный же ответ: такая запись должна иметь признак "неактуален". Может иметь такой признак, а может иметь признак "архивная", или ещё какой, но при этом пользователь хочет иметь возможность её удалить с корнями. Зачем его ограничивать, если это его данные и он суперадмин, или член совета директоров? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 12:35 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
buven но особого профита от них не жди, и будь готов к возможному геморрою, связанному только с ними. Не "профит" это - а нужда. Геморрой создает не СЦ, а неумение проектировать большие системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 12:38 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
Вы ещё скажите, что всю электронную переписку храните за последние 10 лет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 12:39 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
buvenskyANAИ это кстати пример того, что не надо опыт разработки вашей системы переносить на все остальные. В том то и дело, что вопрос ТС был общий и на самом деле до сих пор нет внятных аргумент за, как заметил LSV. Вспоминается история времен зари перехода наших банков на забугорные АБС, когда представители вендора сильно округляли глаза, услышав, что одно из требований - возможность удалить проводку. И пришлось им таки это реализовывать в итоге. Это к тому что не важно, какая система. На вопрос топика "Нужно ли связи в таблицах в sql?", ответ: если хочешь - конечно нужно, но особого профита от них не жди, и будь готов к возможному геморрою, связанному только с ними. А какой такой ОСОБЫЙ профит Вам нужен-то? :) Написали уже зачем нужен FOREIGN KEY и какие бывают причины нарушений ссылочной целосности. Если у Вас с этим нет проблем, или Вы используете какие-то там признаки, или триггера, или специальным кодом обкладываете, так флаг Вам в руки :) А мы вот используем родной механизм СУБД и проблем с ним не встречали и не встречаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 12:46 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
skyANALSVНу очевидный же ответ: такая запись должна иметь признак "неактуален". Может иметь такой признак, а может иметь признак "архивная", или ещё какой, но при этом пользователь хочет иметь возможность её удалить с корнями. Зачем его ограничивать, если это его данные и он суперадмин, или член совета директоров?ЯННП. К чему этот вопрос ? Стёб такой ? Есть правила построения ИС. И они не смотрят, директор это или уборщица. Чисто технически можно и такое предусмотреть. Ничто особо не мешает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 13:34 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
LSVЕсть правила построения ИС. О каких правилах речь? Ссылку дайте. А вопрос к тому, что пользователи разные бывают и принято одним давать минимум функционала, а другим максимум. Вы с этим не согласны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 17:01 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
skyANAО каких правилах речь? Ссылку дайте.ОК. тынц :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 19:55 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
LSVskyANAО каких правилах речь? Ссылку дайте.ОК. тынц :) Что-то похоже на то, что Вы юлите. Где конкретно Дейт пишет, что не должно быть штатной возможности удаления в Б/Л? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 20:31 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
А вот тому, что Вы отрицаете, он посвятил целую главу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 20:37 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
skyANAЧто-то похоже на то, что Вы юлите. Где конкретно Дейт пишет, что не должно быть штатной возможности удаления в Б/Л?существенно дополню: удаления с нарушением СЦ . По хорошему - не должно быть. Но если "очень нужно", то можно. :) Главное помнить про это. Всё, что пишут всякие Дейты, Чены и прочие Конолли это не более чем теория и рекомендации. В любой более-менее большой инф. системе можно найти отход от канонов. Это нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 09:46 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
LSVskyANAЧто-то похоже на то, что Вы юлите. Где конкретно Дейт пишет, что не должно быть штатной возможности удаления в Б/Л?существенно дополню: удаления с нарушением СЦ . По хорошему - не должно быть.Да, не должно быть. И ограничения СЦ это гарантируют. LSVНо если "очень нужно", то можно. :) Главное помнить про это.Если "очень нужно", то можно отключить проверку ограничений, сделать то, что "очень нужно", включить проверку обратно. И не надо ничего дополнительно помнить, документировать, кодить. LSVВсё, что пишут всякие Дейты, Чены и прочие Конолли это не более чем теория и рекомендации.Вы сами привели ссылку на Дейта, и сами же от неё открестились. Вы право, чудак :) LSVВ любой более-менее большой инф. системе можно найти отход от канонов. Это нормально.С этим не спорю. Но сложилось впечатление, что Вы свой "отход от канонов" выдаёте за истину в первой инстанции :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 10:40 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
skyANAС этим не спорю. Но сложилось впечатление, что Вы свой "отход от канонов" выдаёте за истину в первой инстанции :)Впечатление складывается у не в меру впечатлительных. :) Выдаю не за истину в первой инстанции, а всего лишь за бест-практис с описанием случаев применимости. И не более. И не надо ничего дополнительно помнить, документировать, кодить.Как это не надо ? Надо, бро... Не везде можно установить СЦ, поэтому надо всегда помнить, где она есть, а где нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 10:57 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
LSVskyANAС этим не спорю. Но сложилось впечатление, что Вы свой "отход от канонов" выдаёте за истину в первой инстанции :)Впечатление складывается у не в меру впечатлительных. :)Шутка на 2 балла :) LSVВыдаю не за истину в первой инстанции, а всего лишь за бест-практис с описанием случаев применимости. И не более.Это не бест-практис хотя бы потому, что в описанных Вами случаях ограничения СЦ не создают никаких проблем. LSVИ не надо ничего дополнительно помнить, документировать, кодить.Как это не надо ? Надо, бро... Не везде можно установить СЦ, поэтому надо всегда помнить, где она есть, а где нет.Я ему про Фому, он мне про Ерёму :) Ещё раз: если использовать штатный механизм СУБД, то не надо пилить свой велосипед, документировать его и помнить о нём - это же очевидно. А "не везде можно" - это уже к вопросам проектирования и умению пользоваться. Повторюсь, что те примеры, которые Вы приводили не тянут на "не везде можно". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 11:13 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
skyANAесли использовать штатный механизм СУБДЭтого механизма для сохранения целостности Б/Л в общем случае недостаточно. Поэтому контроль целостности делается не на уровне механизмов БД, а на уровне логики конкретной системы. Реализации могут быть разными. Но чем меньше способов контроля - тем лучше. Тем легче ими управлять. СЦ на механизмах СУБД не использует подавляющее число крупных ERP/КИС: 1С/SAP/AXAPTA/NAVISION/JDE. Не знаю насчет Галактики, BAAN, OEBS. Но думаю, что и там вряд ли. Я не знаю ниодной известной тиражной системы, где это применяется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 11:57 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
Читаю про "не удалять совсем" или "удалять вопреки всякой логике" и удивляюсь ентерпрайз разработке всё больше и больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2017, 10:14 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
"удалять вопреки всякой логике" - это Вы о чём? А "не удалять совсем"... У меня это было реальное требование во времена разработки АИС ТПС, после того как в одном из регионов один из операторов удалил не те данные. Правда звучало оно не "не удалять совсем", а "на самом деле не удалять, а помечать как неактивные". Для оператора это выглядело как удаление, а пользователи с более широкими правами могли как восстановить, так и "удалять совсем". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2017, 10:30 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
LSVskyANAесли использовать штатный механизм СУБДЭтого механизма для сохранения целостности Б/Л в общем случае недостаточно. О чём конкретно речь? Можете пояснить, что за целостность бизнес логики такая? LSVЯ не знаю ниодной известной тиражной системы, где это применяется.Хм, Мастер-Тур. Очень даже известная тиражная система в своей нише. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2017, 10:34 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
skyANAВы ещё скажите, что всю электронную переписку храните за последние 10 лет :) Переписка, бухгалтерские проводки, логи с электронной проходной. С 1995г храним . . . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2017, 10:34 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
LSV, https://help.sap.com/saphelp_nw73ehp1/helpdata/en/cf/21ea77446011d189700000e8322d00/frameset.htm Это про SAP у которого ссылочная целостность не используется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2017, 10:41 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
автор"удалять вопреки всякой логике" - это Вы о чём? Простой пример. Две таблицы, 1 табл. поля: фио + город; 2 табл. поля: фирма + город. Город может поменять название или объединится с другим (удалиться). По моему мнению контроль на уровне одинаковости названий городов нужен. Третья таблица - города, внешний ключ с двух таблиц. И null для города недопустим. Причина, так как админ софта "на местах" убъётся, но заставит дать ему права root от БД, так как он ж программист и sql знает. И он обязательно найдёт причины по которым надо править и удалять города напрямую прямо в таблице и обязательно в первом варианте не подумает, что надо править не только в таблице с фио, но и в таблице с фирмами. Я могу понять зачем вы это делаете на уровне разработчиков (сам любитель). В фирме, которая пишет софт эффектный менеджер, который заставил внедрить в софт фичи "шьёт, жнёт и на дуде играет" и БД и логика в программе очень усложнена. Также программистам платят мало, они бегут как тараканы. Нафиг в такой фирме усложнять sql логику, пусть админы правят всё что хотят, типа им же хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2017, 10:55 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
982183skyANAВы ещё скажите, что всю электронную переписку храните за последние 10 лет :) Переписка, бухгалтерские проводки, логи с электронной проходной. С 1995г храним . . . А Вы лично тоже храните свою переписку за последние 10 лет? Любой спам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2017, 11:26 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
azsxавтор"удалять вопреки всякой логике" - это Вы о чём? Простой пример. Две таблицы, 1 табл. поля: фио + город; 2 табл. поля: фирма + город. Город может поменять название или объединится с другим (удалиться). По моему мнению контроль на уровне одинаковости названий городов нужен. Третья таблица - города, внешний ключ с двух таблиц. И null для города недопустим. Причина, так как админ софта "на местах" убъётся, но заставит дать ему права root от БД, так как он ж программист и sql знает. И он обязательно найдёт причины по которым надо править и удалять города напрямую прямо в таблице и обязательно в первом варианте не подумает, что надо править не только в таблице с фио, но и в таблице с фирмами. Я могу понять зачем вы это делаете на уровне разработчиков (сам любитель). В фирме, которая пишет софт эффектный менеджер, который заставил внедрить в софт фичи "шьёт, жнёт и на дуде играет" и БД и логика в программе очень усложнена. Также программистам платят мало, они бегут как тараканы. Нафиг в такой фирме усложнять sql логику, пусть админы правят всё что хотят, типа им же хуже. Извините, но ни фига не понял. Такое впечатление, что Вы просто эмоции выплёскиваете :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2017, 11:29 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
azsxИ он обязательно найдёт причины по которым надо править и удалять города напрямую прямо в таблице и обязательно в первом варианте не подумает, что надо править не только в таблице с фио, но и в таблице с фирмами. Вот тут (если использовать ограничения СЦ) ему СУБД скажет, что удаление не возможно, так как есть ссылка на город из таблицы с фирмами. Но повторюсь, что я так и не понял при чём тут "удалять вопреки всякой логике". Вроде логика ясна: надо "склеить" две записи об одном городе в одну. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2017, 11:33 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
авторВот тут (если использовать ограничения СЦ) ему СУБД скажет, что удаление не возможно, так как есть ссылка на город из таблицы с фирмами. Именно поэтому в своих любительских программах я ограничения ставлю. Но я читаю, что некоторые профессионалы ограничения на уровне СУДБ не ставят и в пример, что ограничения надо ставить только на уровне логике софта приводят названия софта, где такого контроля нет. Я ограничения ставить буду, но уже не уверен, что прав. авторНо повторюсь, что я так и не понял при чём тут "удалять вопреки всякой логике". Вроде логика ясна: надо "склеить" две записи об одном городе в одну. Логика, если город менять, то в обоих таблицах. Если есть внешний ключ, то замена сразу в обоих таблицах будет. А если разработчику внешние связи только мешают, то админ на месте может "вопреки всякой логике" sql запросом в одной таблице поменять название города, а во второй забыть. Если таких связей десятки, они не текст, а на числа и хеши -- то ограничения на уровне БД (по моему мнению) прямо спасение перед совершением непоправимой ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2017, 11:45 |
|
||
|
Нужно ли связи в таблицах в sql
|
|||
|---|---|---|---|
|
#18+
О чём конкретно речь? Можете пояснить, что за целостность бизнес логики такая?На 1 и 2 странице треда писал раза три. Целостность Б/Л это не только запрет удаления строки со ссылкой. Это комплексное понятие. Поэтому желательно ее делать в одном месте и удобным способом для данного проекта: на клиенте, в сервере приложений, ХП и пр. Туда может войти в т.ч. запрет удаления, если есть к.л. ссылка (т.е. аналог СЦ-констрайнт). Я применял ХП. При попытке удаления строки делалась куча проверок. Есть проверка ОК, то делался ряд действий (очистка журналов, смена статусов строк, пересчеты и т.д.). Весь код в одном месте. При желании можно часть проверок отключить в один клик. Также проверка возвращает вменяемое сообщение об ошибке (паруззке и со значениями ключей), что невозможно при срабатывании СЦ_СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2017, 11:45 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=39505547&tid=1540145]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
67ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 408ms |

| 0 / 0 |

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