• Как лучше для БД?

    @immelnikoff
    Изучаю БД
    В первую очередь дело не в количестве полей в таблице, а в уровнях нормализации.
    Обычно достаточно, чтобы таблицы находились в 3НФ или НФБК. Если уровень нормализации вашей таблицы ниже, то её нужно декомпозировать.
    Есть и другие соображения в пользу декомпозиции таблицы. Например, нужно для таблицы поднять вертикальное партиционирование, но ваша СУБД (в частности MySQL) этого не поддерживает. Тогда приходится делить таблицу на две или более (главное, чтобы потом не пришлось их каждый раз join-ить).
    Ответ написан
    Комментировать
  • Как получить это значение?

    @immelnikoff
    Изучаю БД
    Если данная таблица M:N, то
    SELECT dialog_id FROM table_name WHERE user_id = 101 AND dialog_id IN
    (SELECT dialog_id FROM table_name WHERE user_id = 103);

    выдаст все dialog_id диалогов, в которых эти два юзера состоят одновременно.
    Ответ написан
    1 комментарий
  • Как создать такой SQL запрос?

    @immelnikoff
    Изучаю БД
    SELECT * FROM table_name WHERE
    year = (SELECT MAX(year) FROM table_name);
    Ответ написан
    Комментировать
  • Несколько вопросов по проектированию MySQL БД?

    @immelnikoff
    Изучаю БД
    1. NULL указывает, что поле может принимать значение NULL, а DEFAULT NULL указывает, что значением по умолчанию для данного поля является NULL. Если в описании поля отсутствует [NOT NULL | NULL], то по умолчанию принимается NULL. Если в описании поля отсутствует [DEFAULT default_value], то при NULL по умолчанию принимается DEFAULT NULL, в противном случае значение по умолчанию не определено.
    Например,
    5c7048fc61843823713050.png
    То есть, если поле NULL, то DEFAULT NULL можно не указывать.
    2. Если поле id является PRIMARY KEY, то независимо оттого, является оно автоинкрементным или нет, нельзя указать для него NULL (будет ошибка). При этом, если отсутствует NOT NULL, то оно подразумевается по умолчанию. Так, что для первичного ключа NOT NULL можно не писать.
    3. см. п.2
    4. Тип BINARY хранит двоичные (бинарные) строки. Для бинарных данных понятие кодировки не определено, так как понятие кодировки имеет смысл только для текстовых данных. Можно ли менять кодировку для поля BINARY или нет, я не знаю, но это просто бессмысленно.
    5. Как реализовано в MySQL я не знаю, но из чисто теоретических соображений, если текстовое поле не может содержать (исходя из модели данных) символов за пределами однобайтовой кодировки, то лучше установить для поля эту однобайтовую кодировку. Во-первых, это уменьшит занимаемое пространство (русские буквы в UTF-8 весят по 2 байта), а во-вторых, если у вас данное поле типа CHAR, то в однобайтовой кодировке оно будет иметь фиксированный размер в байтах, что должно положительно сказаться на производительности.
    Ответ написан
    2 комментария
  • Как построить график уравнения равнодействующей Максвелла?

    @immelnikoff
    Изучаю БД
    Я понял, что верхняя точка графика - наиболее вероятная скорость молекул. Но как ее найти...

    df(v)/dv = 0.
    и как найти остальные скорости?

    Что такое "остальные скорости"?
    Ответ написан
    Комментировать