Ответы пользователя по тегу Базы данных
  • Как решить проблему с удалением статей?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Значит между таблицами создана связь с опцией ON DELETE CASCADE.
    В принципе, это логично. Публикации содержат в себе идентификатор категории. Если удалить категорию, то идентификатор будет указывать на несуществующую запись в таблице категорий, нарушится логическая целостность БД.
    Можете изменить связь, задав опцию ON DELETE SET NULL. В этом случае в поле идентификатора категории запишется NULL и вам придётся учитывать факт существования публикаций без какой-либо категории.
    Ответ написан
    2 комментария
  • Как вложенный запрос в select'ах вынести отдельно в WITH?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Полностью уберите условие присоединения. Тогда строка из Max_amount будет присоединена к каждой строке из book.
    Ответ написан
  • Почему PARTITION BY в запросе сгруппировал 1 строку неправильно?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Это у вас просто что-то с отображением на экране. Там вообще нет ни одной жирной линии.
    627a18bfc2c65066104115.png
    Ответ написан
    1 комментарий
  • Как правильно составить sql запрос?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    SELECT `p`.`id_user`, `u`.`name`, `u`.`surname`, `u`.`avatar`, `p`.`chat_id`
      FROM `party` AS `o`
      JOIN `party` AS `p`
        ON `o`.`id_user` = :user
          AND `p`.`chat_id` = `o`.`chat_id`
          AND `p`.`id_user` != :user
      JOIN `users` AS `u` ON `users`.`id_user` = `p`.`id_user`
    Ответ написан
    Комментировать
  • Как организовать режим работы заведения в базе данных?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Например, так:
    `organization_id` INT,
    `weekdays` SET(1,2,3,4,5,6,7),
    `date` DATE,
    `from` TIME,
    `to` TIME

    Поле date для организации исключений, например на праздниках.
    Ответ написан
    Комментировать
  • В чем смысл связи один к одному?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если нет отдельной сущности "телефон" со своими параметрами (есть только номер), то так делать бессмысленно.
    Если есть (например, IP-телефон со всеми настройками), то это просто закрепление факта, что за каждым телефоном закреплён один конкретный уникальный пользователь.
    Ответ написан
    1 комментарий
  • Какую БД выбрать для маленького файлового сервиса?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Любую, какую лучше знаете. На таких количествах любая БД будет работать без проблем.
    Ответ написан
    1 комментарий
  • Как из *.dat файла -> в *.sql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Первым идёт дескриптор PDA2, потом какие-то бинарные данные.
    По смещению 0x20 начинается заголовок. Все поля текстовые, разделяются концом строки (0xD 0xA). В начале каждого поля идёт название, затем двоеточие и значение поля.
    В начале заголовка идёт общее описание данных
    spoiler
    beginheader:                            // признак начала заголовка
    clk:0.01                                // скорее всего, частота дискретизации данных
    typ:real                                // тип данных
    starttime:20.02.2017 09:24:07.100000    // время начала 
    frames:0003600000                       // количество кадров данных
    starttrigger:0000000000
    stoptrigger:0000000000
    $PDA_RefTimestamp:00063623161262590000  // таймстамп с устройства ??
    Module_name_0:Generic unicast UDP       // названия модулей
    Module_name_1:Generic unicast UDP
    Module_name_2:Generic unicast UDP
    Module_name_3:Generic unicast UDP
    Module_name_4:Bits01
    Module_name_5:Bits02
    Module_name_6:Bits03
    Module_name_7:Bits04
    version:ibaPDA 6.24.6                    // версия прошивки ??
    PDAKeyInfo:0168b02050020302060068a4280021018b0c246a842850a2008114154880800023040918106880804080040d101068a08040800205001028008040800201081028200040800207
    PDAKeyInfo2:0140008114520001040000040904700081141002040914700081040140000004700001040040000104700001041040000104300041041041008104600001040041200104600001114000011450000104104004090470008104104204091470008104114000010470000104104000010470000104104102050c70204184104100010c602001041040000104702041
    PDADongleId:0100000010400000000000040800600080000002040810600080000100000000600000000000000000200000000000000000200000000000000000200000000000000000200000
    endheader:                               // признак конца заголовка

    Затем идут описатели каналов
    spoiler
    beginchannel:0                     // начало канала и его номер
    unit:                              // единица измерения
    $PDA_comment1:IBA[1]               // комментарий с устройства
    $PDA_Tbase:0.01                    // ??
    $PDA_Typ:int16                     // тип данных
    minscale:-32768                    // минимальное значение
    maxscale:32767                     // максимальное значение
    xoffset:000000000000               // ??
    channel_offset:O6E6B36E540406460   // смещение данных
    endchannel:                        // признак конца описателя

    В конце идёт endASCII, после которого начинаются бинарные данные каналов, полученные с устройства. Тут уже надо разбираться серьёзно, особенно учитывая, что записано порядка 500 каналов и не имея представления о том, что должно быть в результате.
    Ответ написан
  • Какие есть языки разметки без строгой вложенности?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А что значит "без строгой вложенности"? Вложенность либо есть, либо её нет.
    Вашу структуру легко сделать на XML, отдельно описав года, месяцы и недели, указав, сколько дней занимает тот или другой элемент:
    <calendar>
      <years>
        <year days="4">
        <year days="6">
        <year days="1">
      </years>
      <months>
        <month days="2">
        <month days="4">
        <month days="5">
      </months>
      <weeks>
        <week days="1">
        <week days="2">
        <week days="2">
        <week days="2">
        <week days="2">
        <week days="2">
      </weeks>
    </calendar>
    Ответ написан
  • Зачем данные в всех БД хранятся в HEX?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Не можете понять то, что сами придумали?
    Базы хранят бинарное представление данных, зависящее от их типа. Никто не будет перекодировать, например, числа в HEX-строку, это никакого смысла не имеет.
    Ответ написан
  • Many-to-many как избежать Race conditions?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Блокировка таблицы или SQL-запрос, составленный так, чтобы возникала ошибка при попытке добавлении лишней записи.
    Например, для MySQL
    INSERT 
      INTO `users_subscriptions` (`user_id`, `subscription_id`)
      SELECT IF(`count` < 5, :userId, NULL), :subscriptionId
        FROM (
          SELECT COUNT(*) AS `count`
            FROM `users_subscriptions`
            WHERE `user_id` = :userId
        ) AS `t`
    Ответ написан
    Комментировать
  • Как уменьшить нагрузку при использовании foreach для считывания БД?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Всё зависит от решаемой кодом задачи. Если это вывод всех пользователей, например в админке, то нормально. А если вы таким образом проверяете наличие пользователя при аутентификации, то очень плохо.
    Ответ написан
  • Роль интерфейса пользователя в программировании СУБД?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Трудно найти чёрную кошку в тёмной комнате. Особенно, если её там нет.
    Большинство СУБД предоставляют один и тот же интерфейс для всех пользователей. Скажем, в SQLite, MySQL и PostgreSQL это консоль с командной строкой. Разница только в правах на доступ к базам/таблицам и на конкретные операции с ними.
    Ответ написан
  • Как получить файл из вложения в виде 0х504B...?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    0x50 - P
    0x4B - K
    Похоже на стандартный заголовок запакованного файла. Значит просто запишите данные в файл в бинарном режиме.
    Ответ написан
    3 комментария
  • БД SQL - нормальны ли magic numbers в БД, которые имеют константы в back end коде? Или лучше сделать таблицу и отношение?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если дальнейшего расширения не предполагается, сделайте поле с типом ENUM.
    Ответ написан
    2 комментария
  • Шифрование телефонных номеров пользователей через RedBean?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Шифровать то не проблема. Только если эти номера ещё и использовать где-то, то их придётся расшифровывать. А значит злоумышленник, получивший доступ к вашему серверу сольёт не только базу, но ещё и скрипты, в том числе расшифровывающие номера телефонов.
    Ответ написан
    Комментировать
  • Почему SQL-инъекции - это опасно?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Опасны - потому, что можно увести всю информацию из базы, ну или поломать её.
    Скажем, в своём запросе подставьте $id = '1 OR true'
    Защита - использование подготовленных выражений с плейсхолдерами.
    Ответ написан
  • Какое решение выбрать для этой ситуации?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Сделайте для сотрудников Web-приложение, пусть получают задания и отмечают их выполнение прямо в нём.
    Добавьте скрипты импорта и экспорта для обмена со страховыми.
    Ответ написан
    Комментировать
  • Важен ли порядок столбцов в индексе Mysql при поиске Where?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В вашем примере речь идёт, скорее, не о порядке сравнений во WHERE, а о порядке колонок в индексе.
    При поиске используется только начальная часть составного индекса. То есть индекс (a, b, c) можно использовать при поиске по a, ab или abc. Поиск по b, c или bc использовать такой составной индекс не будет.

    Обратите внимание на строчку 'rows' в ответе EXPLAIN'a, подозреваю, что у вас в таблице всего семь строк, а значит запрос просмотрел их все, не воспользовавшись индексом.

    Эврика! Здесь говорится, что в случае покрывающего индекса (а здесь именно такой случай) записи индекса используются для ускорения доступа к данным при переборе, так как записи индекса, в общем случае, занимают меньше места и расположены компактнее, чем записи самой таблицы.
    Ответ написан
    Комментировать
  • Email или User id в БД created_by?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Как раз Id пользователя в БД меняться не должен никогда. А вот email можно менять как угодно.
    Ответ написан
    1 комментарий