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

    @Akela_wolf
    Extreme Programmer
    В целом выглядит прилично. У меня 2 замечания:
    1. "Кольцо" между subs и projects: subs.project_id ссылается на project, project.sub_id ссылается на sub. Мне так кажется что-то одно тут лишнее.
    2. Связь между projects и modules вида "много-много". У вас реально один модуль может входить в несколько проектов? Если да, то ОК. Если нет - то я бы убрал промежуточную таблицу.
    Ответ написан
    1 комментарий
  • Правильно ли я спроектировал бд рецептов на ER-диаграмме?

    1. Очень странно выглядит, что БЖУ привязано к блюду, а ккал - к рецепту.
    2. Между рецептом и ингредиентом связь 1-к-1, а должно быть 1-ко-многим.
    3. Кол-во ингредиентов лишнее, тк может быть посчитано из количество связей между ингредиентами и рецептом. Во всяком случае, оно точно не должно указываться в блюде.
    4. Рецепт разве не инструкция?
    5. Раз уж у нас тут книга рецептов, то где шаги по готовке? Даже описания никакого у рецепта нет. Даже заголовка или названия.
    6. Граммовки у ингредиентов могут различаться от одного рецепта к другому, так что должны быть указаны в строчке рецепта.

    Попробуйте сначала построить модель своей предметной области, вычлените из неё сущности и данные в них, а потом уже стройте схему на уровне БД.
    Ответ написан
    Комментировать
  • Конвертация типа и условие?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Почему не просто

    SELECT *
    FROM email
    WHEN public.email.campaign_id IS NULL


    ?

    Ну или если вдруг вот офигеть как нужна эта дополнительная колонка, то

    SELECT *, 'false' AS campaign_id_bool
    FROM email
    WHEN public.email.campaign_id IS NULL


    нужно, чтоб были значения и тру и фолс в зависимости от того пустое ли поле


    SELECT *, 
           CASE WHEN public.email.campaign_id IS NULL
                THEN 'false' 
                ELSE 'true' 
                END AS campaign_id_bool
    FROM email

    Или так:
    SELECT *, 
           ELT(1 + public.email.campaign_id IS NULL, 'true', 'false' ) AS campaign_id_bool
    FROM email
    Ответ написан
    6 комментариев