Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Проектирование БД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6   вперед  Ctrl      все
 Re: Нужно ли связи в таблицах в sql  [new]
azsx
Member

Откуда:
Сообщений: 524
LSV, извините, что задаю вопросы один по одному, просто хочу для себя разобраться.
автор
1. Не понял вопроса.

Смотрите, мне никогда не надо делать следующую манипуляцию: а) закрываю книгу test.xls (то есть файл закрыт в программе excel); б) открываю файл test.xls для редактирования в notepad++; в) снова открываю файл test.xls в программе excel и получаю благодаря предыдущему редактированию какие то плюсы, например, что вообще заработала какая то функция в файле.
То есть excel -- самодостаточная программа. Если не было физических ошибок при записи книги, то ничего вручную там в файле не наделаешь такого, чего нельзя сделать из excel.
---
Вы пишите
автор
При разработке системы часто приходится манипулировать данными в целях отладки, поиска ошибок и т.д. При этом иногда приходится кратковременно нарушать целостность.

При этом:
автор
В хорошо спроектированной системе нештатное удаление/искажение важных данных невозможно. Констрайнты просто никогда не сработают.

То есть следуя прочитанному разработчику проще без constraint, но нормальной системе нужны constraint.
а) обратите внимание, я не со стороны разработчика, а со стороны ТП смотрю. Мне проще и легче, что всяких правил и ограничений в БД нет, но зато испортить что нибудь мне также проще. Было бы логичнее если правила заранее задаст разработчик на уровне БД. Нет?
б) у меня в голове не укладывается, что там разработчик хочет удалить вопреки бизнес логике и посмотреть что получится?
Простой пример, 2 таблицы, одна фио + id город (внешний ключ); вторая id + город. Обе заполнили данными, затем разработчик хочет удалить город delete в sql. Ему БД говорит, нельзя. Делаем те же таблицы, только внешнего ключа нет, так из приложения id узнаём. Снова удаляем город в sql и что разработчик увидит? Как поведёт себя программа, если какой то специалист ТП зная пароль от БД сам удалит город на который есть связи?
В чём ваще мысль такого удаления?
И почему разработчик, зная свою систему не может тестово сперва очистить свзяи, а затем удалить город? Он то свою БД знает.
4 авг 17, 12:23    [20700371]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
LSV
Member

Откуда: Киев
Сообщений: 30150
1. Как-о в старой версии Экселя нотпадом грохал пароль. Открылось норм. :)

И почему разработчик, зная свою систему не может тестово сперва очистить свзяи, а затем удалить город? Он то свою БД знает.
В некот. случаях это придется делать 10-100 раз в день. Ну попробуй удали город (со всеми связями), а потом опять верни все назад. И так неск. раз. :)

Связей может быть много к разным таблицам (город много где может используется). Запарися удалять/возвращать.

Мне кажется я и так подробнейше описал почему констрайнты могут мешать в реальной повседневной работе....
По моему опыту пользы от них меньше, чем вреда. Чисто ИМХО.
Далее впустую дискутировать не хочу.
4 авг 17, 12:41    [20700453]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
azsx
Member

Откуда:
Сообщений: 524
автор
В некот. случаях это придется делать 10-100 раз в день. Ну попробуй удали город (со всеми связями), а потом опять верни все назад. И так неск. раз. :)

Ясно, спасибо.
4 авг 17, 13:05    [20700561]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
Сид
Member

Откуда: Москва
Сообщений: 298
LSV
1. Как-о в старой версии Экселя нотпадом грохал пароль. Открылось норм. :)

И почему разработчик, зная свою систему не может тестово сперва очистить свзяи, а затем удалить город? Он то свою БД знает.
В некот. случаях это придется делать 10-100 раз в день. Ну попробуй удали город (со всеми связями), а потом опять верни все назад. И так неск. раз. :)

Связей может быть много к разным таблицам (город много где может используется). Запарися удалять/возвращать.

Мне кажется я и так подробнейше описал почему констрайнты могут мешать в реальной повседневной работе....
По моему опыту пользы от них меньше, чем вреда. Чисто ИМХО.
Далее впустую дискутировать не хочу.


Да, лучше не пишите больше. И уходите из профессии, пока не поздно.
4 авг 17, 14:13    [20700814]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
LSV
Member

Откуда: Киев
Сообщений: 30150
Сид
Да, лучше не пишите больше. И уходите из профессии, пока не поздно.
Сына, не тебе решать. :)
4 авг 17, 15:52    [20701331]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 33583
stomsky
Я почему так подробно интересуюсь, - есть мнение, что SQL в качестве языка для реализации сложной бизнес-логики слишком неудобен. Поэтому бизнес логику лучше выносить на уровень сервисов, которые пишутся на JAVA, C# и прочих Питонах.


Так на Java бизнес-логику ещё хуже писать, чем на SQL...
4 авг 17, 18:11    [20701816]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 33583
LSV
Например удобно хранить пустую ссылку как = 0, а не null. Но тогда констрайнту не наложишь.


А если это строка или дата, как пустую ссылку хранить ?
4 авг 17, 18:13    [20701819]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 33583
schi
Чем больше таких утверждающих и дискутирующих, тем лучше - мне гарантирована востребованность на рынке труда.

"Танцуйте, ребятки, танцуйте, и ваш нос вырастет длинным-длинным. А мы распилим его на дубинки."


Во. Я тоже тешу себя этой мыслью...
4 авг 17, 18:14    [20701820]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
vmag
Member

Откуда: г. Одинцово
Сообщений: 2671
На самом деле думаю LSV сейчас просто уссывается над всеми...
Типа ну-ну... пилите Шура, пилите - они золотые...
Он просто нашел одного-двух денежных клиентов/лохов, сделал им пару помоек и им теперь ни дыхнуть ни пёрднуть без него, только и остается, что бабло слюнявить...
4 авг 17, 22:13    [20702091]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
vmag
Member

Откуда: г. Одинцово
Сообщений: 2671
Успокаивает, что это в Киеве... пусть даже это в гос структуре...
4 авг 17, 22:15    [20702092]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
s_ustinov
Member

Откуда: Lugano, CH
Сообщений: 1865
vmag
На самом деле думаю LSV сейчас просто уссывается над всеми...
Типа ну-ну... пилите Шура, пилите - они золотые...
Он просто нашел одного-двух денежных клиентов/лохов, сделал им пару помоек и им теперь ни дыхнуть ни пёрднуть без него, только и остается, что бабло слюнявить...

Думаю, все проще - 1С
5 авг 17, 12:16    [20702495]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
LSV
Member

Откуда: Киев
Сообщений: 30150
MasterZiv
LSV
Например удобно хранить пустую ссылку как = 0, а не null. Но тогда констрайнту не наложишь.
А если это строка или дата, как пустую ссылку хранить ?
Какие однако дилетантские вопросы :).
Строка = пустая строка (не null),'-', '?', 'пусто' или что-то типа того на усмотрение разработчика.
Дата = некое значение, принятое в системе за "пусто", н-р 2000-01-01 или 1900-01-01. Это для примера.
7 авг 17, 09:40    [20704396]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 33583
vmag
Успокаивает, что это в Киеве... пусть даже это в гос структуре...


Проф. безграмотность везде обидно видеть. Киев не исключение.
10 авг 17, 14:49    [20713688]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 33583
LSV
MasterZiv
пропущено...
А если это строка или дата, как пустую ссылку хранить ?
Какие однако дилетантские вопросы :).
Строка = пустая строка (не null),'-', '?', 'пусто' или что-то типа того на усмотрение разработчика.
Дата = некое значение, принятое в системе за "пусто", н-р 2000-01-01 или 1900-01-01. Это для примера.


Я знал, что ты так ответишь!
:-)

0) ты в курсе, что в некоторых СУБД НЕТ ПУСТЫХ СТРОК ? Пустая строка -- это NULL

1) классно, а что если завтра придёт клиент, и захочет завести документ именно за дату 2000-01-01 или 1900-01-01 ?
10 авг 17, 14:52    [20713694]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
LSV
Member

Откуда: Киев
Сообщений: 30150
MasterZiv
LSV
пропущено...
Какие однако дилетантские вопросы :).
Строка = пустая строка (не null),'-', '?', 'пусто' или что-то типа того на усмотрение разработчика.
Дата = некое значение, принятое в системе за "пусто", н-р 2000-01-01 или 1900-01-01. Это для примера.


Я знал, что ты так ответишь!
:-)
0) ты в курсе, что в некоторых СУБД НЕТ ПУСТЫХ СТРОК ? Пустая строка -- это NULL

1) классно, а что если завтра придёт клиент, и захочет завести документ именно за дату 2000-01-01 или 1900-01-01 ?
0) тогда принимаем за "пусто" что-то другое из вышеперечисленного.
1) за "пусто" надо принимать значение, кот. никогда не появится в системе.
Многие СУБД вообще не готовы для штатного хранения исторических дат н-р 332г. до н.э. И чо теперь ?
10 авг 17, 16:10    [20714036]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
Alex_496
Member

Откуда: Moscow https://www.dvbi.ru
Сообщений: 3510
для россейских заднеприводных манагеров и раздолбаев программиздов ни FK не нужны, ни ER диаграммы, ни много чего еще. Ибо тяп-ляп - и в продакшн.

Когда будут много миллионные иски к компаниям и штрафы для работников, тогда и понадобится комплексный подход к проектам
10 авг 17, 19:04    [20714591]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22878
LSV
зы: Тот, кто настаивает на использовании FOREIGN KEY просто мало работал с реальными данными. :)

14 лет - это мало? Когда ждать просветления? :)
13 авг 17, 11:40    [20719541]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
LSV
Member

Откуда: Киев
Сообщений: 30150
skyANA
LSV
зы: Тот, кто настаивает на использовании FOREIGN KEY просто мало работал с реальными данными. :)

14 лет - это мало? Когда ждать просветления? :)
"Мудрость не всегда приходит с возрастом. Часто возраст приходит один" (с) :)

зы: Никто так толком и не объяснил, для чего ему констрайнты ? От какого рода угроз они спасают ?

При этом, заметьте, я не сказал, что использование констрайнт "неверно" или типа того. Это просто одна из необязательных возможностей. Нравится - пользуй, не нравиццо - не пользуй.
Я из тех, кому не нравиццо. Аргументы я привел.
14 авг 17, 10:00    [20720947]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22878
LSV,

практически все Ваши аргументы опираются на задачи, когда наличие foreign key никак не мешает их успешному решению, плавали - знаем :)
14 авг 17, 10:28    [20721025]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
LSV
Member

Откуда: Киев
Сообщений: 30150
skyANA
LSV,

практически все Ваши аргументы опираются на задачи, когда наличие foreign key никак не мешает их успешному решению, плавали - знаем :)
Решить можно практически любую задачу. Весь вопрос в цене. :)
14 авг 17, 10:35    [20721057]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22878
LSV
skyANA
LSV,

практически все Ваши аргументы опираются на задачи, когда наличие foreign key никак не мешает их успешному решению, плавали - знаем :)
Решить можно практически любую задачу. Весь вопрос в цене. :)

Хм, основная задача ограничения FOREIGN KEY - это управление данными, которые могут быть сохранены в таблице внешнего ключа и контроль изменение данных в таблице первичного ключа.

Зачем же платить большую цену за свой велосипед? :)
14 авг 17, 10:44    [20721095]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
DirksDR
Member

Откуда: Пермь
Сообщений: 326
LSV
Ниодна тиражная ERP система не использует ФК.

Почему-то, никто не оспаривает это утверждение. Неужели это правда?
14 авг 17, 11:07    [20721175]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
s_ustinov
Member

Откуда: Lugano, CH
Сообщений: 1865
DirksDR
LSV
Ниодна тиражная ERP система не использует ФК.

Почему-то, никто не оспаривает это утверждение. Неужели это правда?

Распространенные - не используют. К сожалению.
Лично я считаю, что FK лучше использовать, как минимум в рамках одного модуля.
14 авг 17, 11:15    [20721206]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22878
DirksDR
LSV
Ниодна тиражная ERP система не использует ФК.

Почему-то, никто не оспаривает это утверждение. Неужели это правда?

Когда разрабатывал ERP, то это была заказная разработка под крупную нефтяную компанию (100 серверов по всей России).
Так вот там данных было до фига, а задач по работе с ними дофигища.
И ограничения FOREIGN KEY не мешали, а только не хило снижали риски того, что какой-то нерадивый админ в Ангарске ручками в базу полез и похерил что-нибудь.
14 авг 17, 12:55    [20721584]     Ответить | Цитировать Сообщить модератору
 Re: Нужно ли связи в таблицах в sql  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 33583
LSV
MasterZiv
пропущено...


Я знал, что ты так ответишь!
:-)
0) ты в курсе, что в некоторых СУБД НЕТ ПУСТЫХ СТРОК ? Пустая строка -- это NULL

1) классно, а что если завтра придёт клиент, и захочет завести документ именно за дату 2000-01-01 или 1900-01-01 ?
0) тогда принимаем за "пусто" что-то другое из вышеперечисленного.
1) за "пусто" надо принимать значение, кот. никогда не появится в системе.
Многие СУБД вообще не готовы для штатного хранения исторических дат н-р 332г. до н.э. И чо теперь ?


Я этим как бэ намекал, что сначала ты весело живёшь, а потом наступает то самое "никогда".
Именно для этого придумали NULL, документированный и хорошо всем разработчикам известный.
14 авг 17, 13:05    [20721625]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6   вперед  Ctrl      все
Все форумы / Проектирование БД Ответить