212 похожих чатов

Привет - подскажите с таким вопросом: на сколько вообще нужно

полагаться на бд? например в плане каскадного удаления - не наглядно в коде - нужно помнить что ага - у меня там каскадное удаление поэтому в таком-то месте можно не удалять записи в отношениях - потом конфигурация в бд меняется и ты не удаляешь сущности там где это надо

4 ответов

15 просмотров

тесты подстрахуют 🙂

Если спроектировано логично - например при удалении корзины удаляются все товары лежащие в ней- то ничего не надо придумывать. Если при удалении корзины, удаляются например статистика действий пользователя за сегодня - то лучше передизайнить и задача сводится к предыдущей.

а чего она поменялась? не меняйте конкретно эту конфигурацию.

каскадное удаление оченеь опасная фича. надо хорошо думать перед тем как это юзать. БД инструмент. Оно дает тебе гарантии для отдельных операций. То же каскадное удаление позволяет тебе не переживать. Констрейнты в базе позволяют тебе не переживать на тему того что говно попадет в базу. Транзакции позволяют тебе более безопасно менять данные. Не полагаться на эти механизмы - это значит изобретать свои. Другой вопрос что возможности можно мисюзить. Сделал ты там каскад делит, забыл об этом а потом грустишь ибо треть базы по каскаду пошла лесом. Это надо модель данных проектировать под такие вещи.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта