Антипаттерны SQL. Как избежать ловушек при работе с базами данных
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабынан сөз тіркестері  Антипаттерны SQL. Как избежать ловушек при работе с базами данных

Nikita Kehlerr
Nikita Kehlerrдәйексөз келтірді1 жыл бұрын
Эксперт — это человек, который совершил все возможные ошибки в очень узкой специальности. Нильс Бор
3 Ұнайды
Комментарий жазу
Руслан
Русландәйексөз келтірді2 жыл бұрын
Однако с изменениями в файлах, расположенных вне базы данных, все иначе. Если вы удаляете файл, он немедленно становится недоступным для других клиентов. И если изменить содержимое файла, то другие клиенты увидят эти изменения сразу же — вместо предыдущего содержимого файла, отображаемого, пока транзакция не подтверждена.
1 Ұнайды
Комментарий жазу
Данила
Даниладәйексөз келтірді3 күн бұрын
Если вам нужны точные дробные значения, используйте тип данных NUMERIC. Тип данных FLOAT не способен представлять многие дробные рациональные числа, поэтому с ними приходится работать как с неточными значениями
Комментарий жазу
Данила
Даниладәйексөз келтірді3 күн бұрын
Преимущество NUMERIC и DECIMAL заключается в том, что они позволяют хранить рациональные числа без округления
Комментарий жазу
Данила
Даниладәйексөз келтірді3 күн бұрын
Одно из распространенных обходных решений этой проблемы — считать, что значения с плавающей точкой «фактически равны», если они достаточно близки друг к другу в пределах небольшого порога. Вычтите одно значение из другого и удалите знак из разности при помощи функции модуля ABS(). Если результат равен нулю, значит, два значения в точности равны. Если результат достаточно мал, два значения считаются «фактически равными»
Комментарий жазу
Данила
Даниладәйексөз келтірді3 күн бұрын
SELECT * FROM Accounts WHERE hourly_rate = 59.95; Результат: пустое множество; совпадения отсутствуют.
Комментарий жазу
Данила
Даниладәйексөз келтірді3 күн бұрын
Даже если увеличить точность, вы все равно не сможете сложить три приближения 1/3, чтобы получить точное значение 1.0. Этот компромисс неизбежен при использовании конечной точности для представления чисел с повторяющимися цифрами
Комментарий жазу
Данила
Даниладәйексөз келтірді3 күн бұрын
Многие разработчики используют тип данных SQL FLOAT всегда, когда им требуются дробные числовые данные, потому что они привыкли программировать с типом данных float
Комментарий жазу
Данила
Даниладәйексөз келтірді3 күн бұрын
Не нужно выполнять проверочные запросы SELECT перед вставкой, обновлением или удалением. • Не нужно блокировать таблицы для защиты многотабличных изменений. • Не нужно периодически запускать скрипты контроля качества для исправления неизбежных осиротевших строк.
Комментарий жазу
Данила
Даниладәйексөз келтірді3 күн бұрын
Например, RESTRICT для внешнего ключа по reported_by означает, что не получится удалить учетную запись, если какие-то строки в Bugs ссылаются на нее. Ограничение блокирует удаление и инициирует ошибку. С другой стороны, при удалении значения status любые ошибки с этим статусом автоматически сбрасываются на значение статуса по умолчанию
Комментарий жазу