• Использование EXPLAIN. Улучшение запросов

    • Перевод
    Когда вы выполняете какой-нибудь запрос, оптимизатор запросов MySQL пытается придумать оптимальный план выполнения этого запроса. Вы можете посмотреть этот самый план используя запрос с ключевым словом EXPLAIN. EXPLAIN – это один из самых мощных инструментов, предоставленных в ваше распоряжение для понимания MySQL-запросов и их оптимизации, но печальным фактом является то, что многие разработчики редко его используют. В данной статье вы узнаете о том, какие данные предлагает EXPLAIN на выходе и ознакомитесь с примером того, как использовать его для оптимизации запросов.
    Читать дальше →
  • Руководство по проектированию реляционных баз данных. Каскадное удаление данных

      Дополнение к циклу переведенных статей.
      Статьи: 1-3, 4-6, 7-9, 10-13, 14-15


      Информация в статье относится к 5-й части руководства.

      В комментариях один из пользователей небеспричинно упрекнул в отсутствии информации о каскадном удалении данных. Восполняю пробел. У автора статей нет информации на эту тему, поэтому я написал небольшую статью об этом. Она достаточно логично впишется в указанный цикл.
      Для начала, чтобы не было путаницы, стоит сказать, что речь не столько и не только о каскадном удалении данных, а о теме ссылочной целостности и внешних ключах, частью которой и является каскадное удаление данных.


      Введение.


      Если отталкиваться от обывательской позиции человека, который разрабатывает базы данных, то внешние ключи – это удобно и упрощает жизнь (в большинстве случаев, всегда есть исключения.). Даже будучи невеждой в реляционной теории баз данных, к осознанной необходимости использования внешних ключей, на определенном этапе своего развития, приходит практически любой практик (утверждение — более относится к начинающим), который не стоит на месте в своем развитии и продолжает мыслить. Даже если он еще не знает, что то, что ему нужно называется связью по внешнему ключу, он начинает самостоятельно организовывать данные определенным образом, разбивать на отдельные таблицы и связывать их между собой. Настолько это становится очевидным.
      Но при использовании внешних ключей, даже если не знать такого определения, возникает необходимость следить за связываемыми данными. Рассматриваемым объектом данной статьи является, если так можно сказать, своеобразный спутник, который следует за такой организацией данных. И в данном случае уже гораздо полезнее знать теорию, т.к. это может значительно упростить жизнь в процессе работы с базой данных.
      Читать дальше →
      • +9
      • 54,3k
      • 2
    • Руководство по проектированию реляционных баз данных (14-15 часть из 15) [перевод]

      • Перевод
      Продолжение.
      Предыдущие части: 1-3, 4-6, 7-9, 10-13
      Продолжение. Каскадное удаление данных.

      14. Другой пример: база данных интернет-магазина.


      Вы познакомились, я надеюсь, с основными концепциями создания баз данных и теперь вы можете спроектировать простую реляционную базу данных. В примере ниже я резюмирую задачи, с которыми вы столкнетесь при разработке базы данных.
      P.S. Информация ниже в очень упрощенной форме моделирует мыслительный процесс при создании базы данных.

      Система интернет-магазина.

      Для того, чтобы получить представление о данных, которые будут использоваться, давайте обозначим задачи, которые должен выполнять интернет-магазин.

      • Отображение товаров
      • Классификация товаров
      • Регистрация клиентов
      • Добавление товаров в корзину покупок
      • Отображение содержимого корзины покупок
      • Оформление заказов посетителями
      • И т.д.


      Определяем сущности и отношения.

      Из списка задач мы можем вывести сущности, которые имеют важные роли в нашей системе. Товары, категории, клиенты и заказы – сущности, которые можно найти почти в каждой базе данных интернет-магазина. В данном примере я покажу вам модель, содержащую только следующие сущности: клиент, заказ и товар. Определившись с сущностями, мы можем подумать над связями между ними.
      Читать дальше →
      • +6
      • 73,8k
      • 3
    • Руководство по проектированию реляционных баз данных (10-13 часть из 15) [перевод]

      • Перевод
      Продолжение.
      Предыдущие части: 1-3, 4-6, 7-9

      10. Нормализация баз данных


      Указания для правильного проектирования реляционных баз данных изложены в реляционной модели данных. Они собраны в 5 групп, которые называются нормальными формами. Первая нормальная форма представляет самый низкий уровень нормализации баз данных. Пятый уровень представляет высший уровень нормализации.

      Нормальные формы – это рекомендации по проектированию баз данных. Вы не обязаны придерживаться всех пяти нормальных форм при проектировании баз данных. Тем не менее, рекомендуется нормализовать базу данных в некоторой степени потому, что этот процесс имеет ряд существенных преимуществ с точки зрения эффективности и удобства обращения с вашей базой данных.
      Читать дальше →
    • Руководство по проектированию реляционных баз данных (7-9 часть из 15) [перевод]

      • Перевод
      Продолжение.
      Предыдущие части: 1-3, 4-6

      7. Связь один-ко-многим.


      Я уже показал вам как данные из разных таблиц могут быть связаны при помощи связи по внешнему ключу. Вы видели как заказы связываются с клиентами путем помещения customer_id в качестве внешнего ключа в таблице заказов.

      Другой пример связи один-ко-многим – это связь, которая существует между матерью и ее детьми. Мать может иметь множество детей, но каждый ребенок может иметь только одну мать.

      (Технически лучше говорить о женщине и ее детях вместо матери и ее детях потому, что, в контексте связи один-ко-многим, мать может иметь 0, 1 или множество потомков, но мать с 0 детей не может считаться матерью. Но давайте закроем на это глаза, хорошо?)

      Когда одна запись в таблице А может быть связана с 0, 1 или множеством записей в таблице B, вы имеете дело со связью один-ко-многим. В реляционной модели данных связь один-ко-многим использует две таблицы.

      image
      Схематическое представление связи один-ко-многим. Запись в таблице А имеет 0, 1 или множество ассоциированных ей записей в таблице B.
      Читать дальше →
    • Руководство по проектированию реляционных баз данных (4-6 часть из 15) [перевод]

      • Перевод
      Выкладываю продолжение перевода цикла статей для новичков.
      В настоящих и последующих — больше информации по существу.
      Начало — здесь.

      4. ТАБЛИЦЫ И ПЕРВИЧНЫЕ КЛЮЧИ


      Как вы уже знаете из прошлых частей, данные хранятся в таблицах, которые содержат строки или по-другому записи. Ранее я приводил пример таблицы, содержащей информацию об уроках. Давайте снова на нее взглянем.

      image

      В таблице имеются 6 уроков. Все 6 – разные, но для каждого урока значения одинаковых полей хранятся в таблице, а именно: tutorial_id (идентификатор урока), title (заголовок)и category (категория). Tutorial_idпервичный ключ таблицы уроков. Первичный ключ – это значение, которое уникально для каждой записи в таблице.
      В таблице клиентов ниже customer_id – первичный ключ. В данном случае первичный ключ – также уникальное значение (число) для каждой записи.

      image
      Читать дальше →
      • +14
      • 101k
      • 7
    • Руководство по проектированию реляционных баз данных (1-3 часть из 15) [перевод]

      Перевод цикла из 15 статей о проектировании баз данных.
      Информация предназначена для новичков.
      Помогло мне. Возможно, что поможет еще кому-то восполнить пробелы.

      Руководство по проектированию баз данных.



      1. Вступление.

      Если вы собираетесь создавать собственные базы данных, то неплохо было бы придерживаться правил проектирования баз данных, так как это обеспечит долговременную целостность и простоту обслуживания ваших данных. Данное руководство расскажет вам что представляют из себя базы данных и как спроектировать базу данных, которая подчиняется правилам проектирования реляционных баз данных.
      Читать дальше →