Уже не новый, но оттого не ставший хуже перевод большой статьи, объясняющей, как работают реляционные базы данных. Рекомендую всем, кто хочет перестать использовать MySQL или PostgreSQL вслепую и всё-таки попытаться понять, что там внутри.
Все заметки с тегом «database»
-
Как работает реляционная БД
24 марта 2016
Комментировать -
Как хранить упорядоченный список в базе данных
15 февраля 2015
8 комментариевВремя от времени мне прилетают в почту занятные вопросы. Последний про хранение упорядоченного списка в базе данных.
Имеется возможность загрузки фото в альбомы. Нужно реализовать возможность упорядочивать фото в пределах альбома. Автор уже хранит порядок в поле
order, но его напрягает, что при перетаскивании какой-либо из картинок нужно обновлятьorderу фотографий всего альбома.Для начала, стоит оценить частоту изменений порядка фото. Если операция не очень частая и выполняется, например, только админом раз в день и в альбомах не очень много фото, можно смело хранить
orderкакintegerи обновлять, как автор и делает.Если же операция достаточно частая, можно схитрить и хранить
orderкакdecimal. В этом случае при вставке или перемещении фото между двумя другими необходимо обновить толькоorderнепосредственно перемещаемой записи.Если мы перемещаем фото
Cи засовываем его между фотоAи фотоB, то значениеorderдля него вычисляется какC.order = A.order + (B.order - A.order) / 2;
UPD: из за ограничений точности следует проверять, влезет ли в базу очередное значение. Если нет — пересчитывать
order. Даже несмотря на то, что от пересчётов мы не избавились, их частота сократилась для худшего случая на порядок. -
Yii: читаем пустые значения как null
7 мая 2011
18 комментариевДля того, чтобы Yii читал пустые значения как
null, а не как пустую строку достаточно добавить один параметр в конфигурацию компонентаdb:'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=test', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'nullConversion' => PDO::NULL_EMPTY_STRING, ),


