<rmcreative>

RSS

Все заметки с тегом «database»

Можно уточнить:

    (1)
    (1)
  1. Как работает реляционная БД

    24 марта 2016

    Уже не новый, но оттого не ставший хуже перевод большой статьи, объясняющей, как работают реляционные базы данных. Рекомендую всем, кто хочет перестать использовать MySQL или PostgreSQL вслепую и всё-таки попытаться понять, что там внутри.

    Читаем

    Комментировать
  2. Как хранить упорядоченный список в базе данных

    15 февраля 2015

    Время от времени мне прилетают в почту занятные вопросы. Последний про хранение упорядоченного списка в базе данных.

    Имеется возможность загрузки фото в альбомы. Нужно реализовать возможность упорядочивать фото в пределах альбома. Автор уже хранит порядок в поле order, но его напрягает, что при перетаскивании какой-либо из картинок нужно обновлять order у фотографий всего альбома.

    Для начала, стоит оценить частоту изменений порядка фото. Если операция не очень частая и выполняется, например, только админом раз в день и в альбомах не очень много фото, можно смело хранить order как integer и обновлять, как автор и делает.

    Если же операция достаточно частая, можно схитрить и хранить order как decimal. В этом случае при вставке или перемещении фото между двумя другими необходимо обновить только order непосредственно перемещаемой записи.

    Если мы перемещаем фото C и засовываем его между фото A и фото B, то значение order для него вычисляется как

    C.order = A.order + (B.order - A.order) / 2;
    

    UPD: из за ограничений точности следует проверять, влезет ли в базу очередное значение. Если нет — пересчитывать order. Даже несмотря на то, что от пересчётов мы не избавились, их частота сократилась для худшего случая на порядок.

    8 комментариев
  3. Yii: читаем пустые значения как null

    7 мая 2011

    Для того, чтобы Yii читал пустые значения как null, а не как пустую строку достаточно добавить один параметр в конфигурацию компонента db:

    'db'=>array(
      'connectionString' => 'mysql:host=localhost;dbname=test',
      'username' => 'root',
      'password' => '',
      'charset' => 'utf8',
     
      'nullConversion' => PDO::NULL_EMPTY_STRING,
    ),
    18 комментариев