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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А что мешает заранее получить нужные значения start_time там же, где устанавливаются переменные @first_event и @second_event? С place_id не совсем понятно, сколько может быть событий с одним event_id? Если только одно - то тоже получать заранее.
    Ответ написан
    7 комментариев
  • Как посчитать число добавленных строк в течении часа (mysql)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    С ходу только UNION из 24 SELECT'ов по часу каждый или предварительное дописывание ежечасной отметки. Но проще в программе переносить данные в обнулённый массив.
    Ответ написан
    1 комментарий
  • Как оптимизировать базу данных?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если TIME - реальное время, то одна таблица, если ограниченный нерасширяемый список ("утро', 'день', 'вечер', 'ночь')- одна таблица с ENUM, если расширяемый список, то две таблицы.
    Ответ написан
    Комментировать
  • Как правильно спроектировать базу данных музыкальных наград?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Таблица `nominees` с полями `id_actor`, `id_award`, `is_win` - соответственно кто номинировался, на какую награду номинировался, выиграл ли. А запросы смотреть надо, обычно всё решается через JOIN'ы.
    Ответ написан
    Комментировать
  • Сколько таблиц будет в БД, чтобы она соответствовала 3й нормальной форме?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если всё что надо - имя автора, название книги и название магазина, то 5. `Книги`, `Авторы`, `Магазины`, `Авторы_книг`, `Книги_в_магазинах`. Последние две таблицы определяют отношение many-to-many.
    Ответ написан
    2 комментария
  • Где достать базу sql районов городов РФ?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В KLADR ничего страшного нет, нужен только KLADR.DBF.
    1. Ищем NAME='Омск' и SOCR='г' - получаем CODE='5500000100000'.
    2. Ищем SOCR='тер' и CODE LIKE '55000001%' - получаем NAME:
    Советский АО
    Центральный АО
    Центральный (Куйбышевский) АО
    Ленинский АО
    Октябрьский АО
    Кировский АО
    Огородное общество Вишенка (ОАО)
    Огородное общество Овражек (ОАО)

    3. При желании, аналогично SOCR='мкр' и CODE LIKE '55000001%' - получаем NAME:
    Береговой
    Загородный
    Крутая Горка
    Входной
    Булатово
    Осташково
    Новоалександровский
    Омский
    Ответ написан
    3 комментария
  • Как организовать бд для эффективного поиска?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    При хорошем поиске примерно так и делается, только заносятся не словоформы, а словарные формы слова (лексемы) и места, в которых они встречаются (для поиска отдельно по заголовку, по тексту, по авторам...). Для этого нужна морфологическая база данных русского языка (например по словарю Зализняка). Зачастую также используются словари синонимов и расчёт близости положения слов в тексте.
    Ответ написан
    Комментировать
  • Как лучше спроектировать базу данных (mysql)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Обычно сначала приводят базу к третьей нормальной форме (1NF, 2NF, 3NF) а затем частично денормализуют если есть проблемы с производительностью.
    Ответ написан
    Комментировать
  • Что значит DEFAULT в выражении CREATE DATABASE в mysql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Так.
    CREATE DATABASE `abc` CHARACTER SET = 'utf8';
    SHOW CREATE DATABASE `abc`;
    +----------+--------------------------------------------------------------+
    | Database | Create Database                                              |
    +----------+--------------------------------------------------------------+
    | abc      | CREATE DATABASE `abc` /*!40100 DEFAULT CHARACTER SET utf8 */ |
    +----------+--------------------------------------------------------------+

    То есть слово DEFAULT добавляется автоматически при необходимости. /*!40100 */ означает, что этот код будет обрабатываться в mysql 4.01.00 и выше.
    Ответ написан
    Комментировать
  • Архитектура MySQL таблицы: строки или числа

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Пусть в вашей таблице объектов есть поле objectId - идентификатор объекта. Создадим дополнительную таблицу, связанную по полю objectId с таблицей объектов. Таблица содержит поля номера сервиса serviceNum и его статуса serviceStatus.
    CREATE TABLE `service_states` 
      `objectId` BIGINT NOT NULL DEFAULT '0',
      `serviceNum` INT NOT NULL DEFAULT '0',
      `serviceState` tinyint(1) DEFAULT '0',
      PRIMARY KEY (`objectId`,`serviceNum`),
      KEY `byServiceState` (`serviceState`),
      KEY `byServiceNum` (`serviceNum`))
    ENGINE=InnoDB DEFAULT CHARSET=utf8';

    Запрос всех объектов, аналогичный вашему, будет выглядеть как
    SELECT * FROM `test_b` as tb
    RIGHT JOIN `service_states` as ss USING(objectId)
    WHERE ss.serviceNum = 3 AND ss.serviceState = 2;
    Ответ написан