Задать вопрос
  • Как использовать переменную в названии столбца?

    @Draconian
    Oracle Developer
    Тут есть много опций, если когда такое происходит, значение row_name - Null, то можно использовать
    coalesce (row_name, other_column). Если значения всегда непустые, то проще написать функцию, которая будет подставлять необходимое название колонки.
    Ответ написан
  • Oracle AQ: варианты чтения очереди?

    @Draconian
    Oracle Developer
    Запускать необходимую обработку по триггеру на инсерт на эту таблицу?

    По-моему, все остальные варинты предполагают использование некой сторонней сущности (джоб, внешний сервис и т.д.).
    Ответ написан
    Комментировать
  • Как оптимизировать выборку из БД с большим количеством insert/update?

    @Draconian
    Oracle Developer
    Я правильно понял, что у вас два индекса на таблице по пять полей каждый, но в выборке вы используете комбинацию полей, отличную от тех, что в индексах?

    Я бы разделил эти индексы как-то более вменяемо (если этот ваш запрос является критичным и часто используемым).
    Ответ написан
  • Как применить сертификат IELTS наилучшим образом в профессии веб-разработчика?

    @Draconian
    Oracle Developer
    IELTS обычно сдают, чтобы переехать зарубеж, либо по требованию работодателя. Ну, или доказать себе, что ты знаешь английский язык.
    У него ведь есть и срок годности, через 2 года, если мне не изменяет память, если надумаете переезжать, придется сдавать снова.

    Можно еще в качестве доказательства знания языка в резюме писать добавить строчку, в принципе.
    Ответ написан
    Комментировать
  • Как исключить ошибку пустого запроса в ORACLE?

    @Draconian
    Oracle Developer
    Простейший способ - сделать этот запрос курсором и там уже проверять наличие или отсутствие строк.
    Ответ написан
    2 комментария
  • Название таблицы в множественном числе или нет?

    @Draconian
    Oracle Developer
    Без разницы, главное, чтобы стиль был одним и тем же в пределах одной БД.
    Ответ написан
    Комментировать
  • Какую БД выбрать?

    @Draconian
    Oracle Developer
    Всё зависит от архитектуры самой БД и производительности сервера, начните с MySql.
    Ответ написан
  • Какой софт от Oracle используют в РФ?

    @Draconian
    Oracle Developer
    Есть еще Oracle E-Business Suite (OEBS).

    Продукты Oracle используют реже, поскольку адаптировать их под заказчика сложнее, чем SAP, к тому же, последний намного гибче, интерфейсы приятней (в новых версиях) и т.д.
    Ответ написан
    1 комментарий
  • Стоит ли делать связи в phpmyadmin?

    @Draconian
    Oracle Developer
    Это не плохая практика, это опасная практика, если пользоваться ей бездумно.

    Например, вы (или еще лучше, некий ваш коллега) решите, что некая запись в неком справочнике вам больше не нужна, а из-за этого удалится куча связанных с ней, нужных вам данных.
    Ответ написан
  • Как просуммировать время простоя?

    @Draconian
    Oracle Developer
    Нужно иметь две выборки - статусы запусков и статусы остановок по одному из интерфейсов.
    Если мы отсечем первый запуск, количество пусков-остановок у нас будет одинаковое (если интерфейс в данный момент работает), при правильной сортировке можно две эти выборки соединить друг с другом по порядковому номеру строки.
    MySql под рукой нет, а в Oracle удаление первой строки довольно довольно страшно выглядит (писал на коленке):
    with q as (
        select 1 as id, 1 as interface, 1 as status, to_date('01.01.2017','dd.mm.yyyy') as dd, to_date('01.01.2017 00:00','dd.mm.yyyy HH24:MI:SS') as time from dual
            UNION ALL
        select 2 as id, 1 as interface, 2 as status, to_date('01.01.2017','dd.mm.yyyy') as dd, to_date('01.01.2017 18:20','dd.mm.yyyy HH24:MI:SS') as time from dual
            UNION ALL
        select 3 as id, 1 as interface, 1 as status, to_date('01.01.2017','dd.mm.yyyy') as dd, to_date('01.01.2017 18:30','dd.mm.yyyy HH24:MI:SS') as time from dual
            UNION ALL
        select 4 as id, 1 as interface, 2 as status, to_date('01.01.2017','dd.mm.yyyy') as dd, to_date('01.01.2017 19:20','dd.mm.yyyy HH24:MI:SS') as time from dual
            UNION ALL
        select 5 as id, 1 as interface, 1 as status, to_date('01.01.2017','dd.mm.yyyy') as dd, to_date('01.01.2017 21:00','dd.mm.yyyy HH24:MI:SS') as time from dual
    )
    
    SELECT SUM(ROUND ( (end_date - begin_date) * 24, 2)) as hours
    FROM (
            SELECT 
                   q2.id,
                   q2.status,
                   q2.time begin_date,
                   q.time end_date
            FROM (SELECT ROWNUM r, q.*
                         FROM (SELECT ROWNUM rr, q.*
                                   FROM q
                                   WHERE q.interface = 1 AND q.status = 1
                                   ORDER BY time ASC) q
                        WHERE rr > 1) q
                JOIN
                    ( SELECT ROWNUM rr, q.*
                       FROM q
                       WHERE q.interface = 1 AND q.status = 2
                       ORDER BY time ASC ) q2 ON q.dd = q2.dd AND q.interface = q2.interface AND q.r = q2.rr
    )


    На этих тестовых данных всё верно.
    Ответ написан
    Комментировать
  • Как держать в БД приобретённые юзером платные тарифы?

    @Draconian
    Oracle Developer
    СУБД не указали.

    В общем случае, по-моему, будет примерно так:
    Таблица пользователей (с id активного сейчас тарифа). По умолчанию все пользователи бесплатные.
    Таблица тарифов.
    Поскольку у одного юзера может быть много тарифов, связь N-M, нужна таблица связи:
    юзер_тариф (id юзера, id тарифа, датавремя начала действия, датавремя окончания действия, признак is_active)

    Джобами проверяем пользователей на активные тарифы, если время вышло - меняем тариф на тот, у которого осталось время, ставим признак is_active в 0, меняем активный тариф в таблице пользователей. Тут же можно вести лог, какого пользователя, когда, с какого на какой тариф перевели.
    Ответ написан
  • Как организовать структуру БД для электронных журналов?

    @Draconian
    Oracle Developer
    Теоретически, json в отдельном поле нарушает атомарность данных. Если вы собираетесь так их хранить, то реляционная БД вам, возможно, и не нужна.
    Второй вариант для реляционных БД вполне юзабельный, нагрузка зависит от железа, на котором будет работать СУБД + кэширование, индексы, вот это всё.

    Если хотите идти по реляционному пути, на мой взгляд, лучше сделать так - в одной таблице хранить журналы (PK journal_id, name), в другой поля журналов (FK journal_id), в третьей значения полей без json (FK field_id). Связи везде один ко многим - у одного журнала много полей, у одного поля - много значений.

    Ваш вариант тоже рабочий, но есть небольшой минус - добавление полей будет осуществляться через alter table, насколько я понял.
    Ответ написан
  • Хватит ли ультрабука НЕ для веб программирования?

    @Draconian
    Oracle Developer
    На ультрабуках не кодил, но судя чисто по характеристикам, у вас любая современная игра пойдет, а вы про всякие вижуал студии переживаете.
    Мобильный i7 ненамного хуже десктопного.
    Ответ написан
  • Как разрешить конфликт систем?

    @Draconian
    Oracle Developer
    Попробуйте Unlocker.
    Ответ написан
    Комментировать
  • Как правильно обрабатывать exception в PL SQL?

    @Draconian
    Oracle Developer
    Отсюда:
    An exception handler lets you recover from an otherwise fatal error before exiting a block. But when the handler completes, the block is terminated. You cannot return to the current block from an exception handler.

    По ссылке есть пример, как можно продолжить выполнение скрипта через саб-блоки.
    Ответ написан
    Комментировать
  • Как должен вести себя нормальный PM?

    @Draconian
    Oracle Developer
    Стоит донести своё недовольство до руководства, посмотреть, как они отреагируют. Вариантов развития после этого может быть много: может начальству уже давно не нравится, как вы работаете? Или наоборот, их все устраивает, но они понятия не имеют, что ПМы постоянно "щелкают кнутами".

    Кроме того, вы так говорите, как будто вы единственный программист в компании. У других таких проблем с этими людьми нет? Я думаю, если даже половина программистов недовольна, то к вам прислушаются.
    ...либо пошлют нахер, но тогда вы будете понимать, с чем вам дальше придется иметь дело.

    Насчет звонков по выходным - а вы проговаривали, что звонить вам во внерабочее время не надо?
    Ответ написан
    Комментировать
  • Куда поступить будущему эникейщику?

    @Draconian
    Oracle Developer
    Лично я придерживаюсь мнения, что высшее образование лучше иметь, чем не иметь:
    1) если у вас есть желание учиться, есть неплохие шансы встретить в ВУЗе талантливых преподавателей, которые помогут направить вас в нужное русло.
    2) в ВУЗе преподаватели пытаются привить многострадальное системное мышление и научный метод, что очень важно для технаря, тем более для эникея - эникеить тоже нужно с умом :)
    3) лучше помучаться в ВУЗе, пока молодой, потому что потом получить высшее образование намного сложнее и затратней (не говорю о покупке диплома, думаю с этим и так всё понятно). В крупных конторах часто просто отказывают в повышении, если нет высшего образования, особенно это касается руководящих должностей.

    Техникум даёт прикладные знания, ВУЗ - фундаментальные. После обучения ваша задача изучать частности в той сфере, котора вас интересует, но на мой взгляд, куда лучше иметь широкие базовые знания.

    P.S. и да, если хотите стать админом - лучше сразу пытаться стать админом, эникей в качестве промежуточного этапа может затянуться надолго.
    Ответ написан
    1 комментарий
  • Как поступить в такой ситуации?

    @Draconian
    Oracle Developer
    Сайт от этого работает медленнее? Сомневаюсь.
    Вряд ли у вас в обозримом будущем будут сотни тысяч автомобильных брендов и марок, чтобы такие запросы ощутимо тормозили. С точки зрения реляционной БД здесь ничего страшного нет, в общем, особенно, если сканы идут по индексу.

    Если уж хотите что-то оптимизировать, добавьте лучше кэширование запросов, может уменьшить время выполнения для части аудитории.
    Ответ написан
  • Как создать точную копию таблицы?

    @Draconian
    Oracle Developer
    Каким образом вы хотите создать точную копию, не изменив названия таблицы\индексов\ключей?
    Тут можно только посоветовать придерживаться каких-нибудь правил именования объектов в БД, чтобы после получения всех скриптов заменять в них названия.
    Ответ написан
    1 комментарий
  • Можно реализовать поиск ассоциативных правил средствами php или sql?

    @Draconian
    Oracle Developer
    Можно. Общую схему алгоритмов можно найти в Интернете.
    Ответ написан