база данных сайта что это
База данных сайта
7 ноября 2017 Опубликовано в разделах: Азбука терминов. 31796
База данных по автомобилям состоит из множества таблиц. Это модели: ВАЗ, ГАЗ, FORD, VW, Ferrari и т.д. Каждая таблица имеет поля.
ВАЗ: 2101, 2104, 2105, 2107 и т.д.
В каждом поле внесены записи со значениям-характеристиками: цветовые гаммы, ЛС, мощность движка и т.д.
Таблицы связаны специальными отношениями, поэтому с записями можно работать: объединять, сортировать, делать выборку посредством указания одного запроса. Современные веб-ресурсы используют базы данных для своего функционирования.
Базы данных и организация веб-ресурса
Каждый сайт состоит из HTML-страниц. На них есть определенный каркас — то, что одинаково на любой странице. И есть контент — на каждой странице он разный.
Раньше интернет-сайты создавали на чистом HTML, и это было неудобно, так как все данные были представлены как отдельные HTML-файлы. Нельзя было осуществлять поиск, группировку, сортировку информации. К тому же, информация могла часто дублироваться. При появлении PHP у веб-мастеров появилась возможность разделения сайта на его каркас и данные в базе. Теперь структуру сайта можно хранить отдельно от контента, что позволяет быстрее и удобнее администрировать веб-ресурс, легко дорабатывать его дизайн и функционал.
Преимущества использования базы банных
Как работать с БД
Если вы в совершенстве владеете html и css, то все равно обращаетесь к Dreamweaver, чтобы снизить сложность работы с версткой сайта. Для работы с БД необходима также программа обработки SQL под названием MySQL. Она установлена на хостинге в оболочке phpMyAdmin.
По умолчанию сама БД сайта находится в каталоге data на веб-сервере интернет-проекта. К примеру, если БД имеет название bd, то все ее значения находятся в data/bd. Как правило, на хостинге доступ к файлам БД закрыт, их следует “вытягивать” посредством запросов SQL через консоль. Упрощает работу с запросами именно MySQL. Для того чтобы попасть в MySQL, необходимо зайти по ссылке, которую дает хостинг-провайдер, и ввести логин-пароль от базы.
Подключение базы к сайту происходит в конфигурационном файле при помощи указания названия, пользователя и пароля. Название файла и его и месторасположение зависит от вида вашей CMS. Для MODx это config.inc по пути /core/config/.
Необходимо периодически создавать бэкапы — резервные копии сайта и базы данных. Обычно хостинги предоставляют услуги по созданию копий сайта.
Восстановить предыдущую версию можно с той даты, за которую сохранены база и конфигурация сайта. Легче периодически делать копии, чем восстанавливать портал с нуля.
Путеводитель по базам данных в 2021 г
Данные — это один из наиболее важных компонентов геопространственных технологий и, пожалуй, любой другой отрасли. К управлению данными сейчас относятся серьезно во всех отраслях, поэтому знания по этой дисциплине имеют важное значение для карьеры ИТ-специалистов. Этот цикл статей задуман как универсальное руководство, в котором мы рассмотрим тему от и до, начиная с вопроса «Что такое данные?» и заканчивая изучением и применением геопространственных запросов.
Основные понятия баз данных
Что такое данные?
Данные могут представлять собой любую информацию, которая сохраняется с целью обращения к ней в будущем. Эта информация может включать числа, текст, аудио- и видеоматериалы, местонахождение, даты и т. д. Она может быть записана на бумаге либо сохранена на жестком диске компьютера или даже в облаке.
Что такое база данных?
Множество записей данных, собранных вместе, образуют базу данных. Базы данных обычно создаются для того, чтобы пользователи могли обращаться к большому количеству данных и массово выполнять с ними определенные операции.База данных может хранить что угодно: представьте себе, например, блокнот вашей бабушки со всеми ее вкусными рецептами, учетную книгу ваших родителей, куда они записывают все доходы и расходы, или свою страницу в Facebook со списком всех ваших друзей. Из этих примеров видно, что все данные в базе данных относятся более-менее к одному типу.
Зачем нужна база данных?
Создание базы данных упрощает разным пользователям доступ к наборам информации. Приведенные выше примеры показывают, что в базе данных мы можем хранить записи с информацией похожего типа, но это правда лишь отчасти, поскольку с появлением баз данных NoSQL это определение меняется (подробнее читайте далее в статье).Так как размер веб-сайтов становится все больше и степень их интерактивности все выше, данные о пользователях, клиентах, заказах и т. д. становятся важными активами компаний, которые испытывают потребность в надежной и масштабируемой базе данных и инженерах, способных в ней разобраться.
Система управления базами данных (СУБД)
Итак, мы уже знаем, что данные и базы данных важны, но как осуществляется работа с базами данных в компьютерных системах? Вот тут на сцену и выходит СУБД. СУБД — это программное обеспечение, предоставляющее нам способ взаимодействия с базами данных на компьютере для выполнения различных операций, таких как создание, редактирование, вставка данных и т. д. Для этого СУБД предоставляет нам соответствующие API. Редко какие программы не используют СУБД для работы с данными, хранящимися на диске.Помимо операций с данными СУБД также берет на себя резервное копирование, проверку допуска, проверку состояния базы данных и т. д. Поэтому рекомендуется всегда использовать СУБД при работе с базами данных.
Пространственные данные и база данных
Особое внимание мы уделим обработке пространственных данных, поэтому я хотел бы обсудить здесь этот тип данных. Пространственные данные несколько отличаются от остальных. Координаты необходимо сохранять в особом формате, который обычно указан в документации на веб-сайте о базе данных. Этот формат позволяет базе считывать и правильно воспринимать координаты. Если обычно для поиска данных мы используем запросы типа Получить все результаты, где возраст > 15, то пространственный запрос выглядит как-то так: Получить все результаты в радиусе 10 км от определенной точки. Поэтому пространственные данные необходимо хранить в надлежащем формате.
Типы баз данных
Базы данных обычно делятся на два типа: реляционные и нереляционные. Оба типа имеют свои плюсы и минусы. Было бы глупо утверждать, что один лучше другого, поскольку это будет зависеть от варианта использования. Конкретно для пространственных данных я в 99 % случаев использую реляционные базы данных, и вы скоро поймете почему.
Реляционные базы данных и РСУБД
Допустим, ваш начальник просит вас создать электронную таблицу с важной информацией, включающей имена, местонахождения, адреса электронной почты, номера телефонов и должности всех сотрудников. Вы сразу же откроете таблицу Excel или Google Spreadsheets, напишете все эти названия столбцов и начнете собирать информацию.
Образец таблицы с информацией
Закономерность здесь заключается в том, что каждая запись содержит ограниченный и фиксированный набор полей, которые нам нужно заполнить. Таким образом мы создали таблицу со всей информацией, где у каждой записи имеется уникальный первичный ключ, который определяет ее однозначным образом и делает ее доступной для всех операций. В реляционных базах данных любая таблица содержит фиксированное количество столбцов, и можно устанавливать связи между разными столбцами.
Связь между двумя столбцами
Взаимосвязи в реляционных базах данных мы подробно рассмотрим позже.
По сравнению с базами данных NoSQL, недостатком реляционных баз данных является относительно медленное получение результатов, когда количество данных стремительно увеличивается (по мнению автора статьи — прим. пер.). Еще один недостаток заключается в том, что при добавлении каждой записи нужно следовать определенным правилам (типы столбцов, количество столбцов и т. д.), — мы не можем просто добавить отдельный столбец только для одной записи.В реляционных базах данных используется SQL (Structured Query Language — язык структурированных запросов), с помощью которого пользователи могут взаимодействовать с данными, хранящимися в таблицах. SQL стал одним из наиболее широко используемых языков для этой цели. Мы подробнее поговорим об SQL чуть позже.Вот примеры некоторых известных и часто используемых реляционных баз данных: PostgreSQL, MySQL, MS SQL и т. д. У каждой крупной компании, занимающейся реляционными базами данных, есть собственная версия SQL. В большинстве аспектов они выглядят одинаково, но иногда требуется немного изменить какой-нибудь запрос, чтобы получить те же результаты в другой базе данных (например, при переходе из PostgreSQL в MySQL).
Нереляционные базы данных (NoSQL)
Все базы данных, не являющиеся реляционными, относятся к категории нереляционных баз данных. Обычно данные хранятся в нетабличном формате, например:
Основное преимущество баз данных NoSQL состоит в том, что все строки независимы и могут иметь разные столбцы. Как показано на изображении ниже, оба пользователя относятся к одной и той же таблице Core_user, но их записи содержат разную информацию.
База данных NoSQL реального времени в Google Firebase
База данных NoSQL реального времени в Google Firebase
При использовании баз данных NoSQL пользователям иногда приходится прописывать собственную логику, чтобы добавить уникальный ключ к каждой записи и тем самым обеспечить доступ к записям. В большинстве стандартных баз данных NoSQL, таких как Firebase и MongoDB, для хранения данных используется формат JSON. Благодаря этому очень легко и удобно выполнять операции с данными из веб-приложений, используя JavaScript, Python, Ruby и т. д.
Рекомендации по выбору типа базы для хранения пространственных данных
Очевидно, что нам хотелось бы сохранить точку, линию, многоугольник, растры и т. д. так, чтобы это имело смысл, вместо того чтобы сохранять просто координаты. Нам нужна СУБД, которая позволяет не только сохранять данные, но и запрашивать их пространственными методами (буфер, пересечение, вычисление расстояния и т. д.). На сегодняшний день для этого лучше всего подходят реляционные базы данных, поскольку в SQL есть функции, помогающие выполнять подобные операции. Использование таких дополнительных средств, как PostGIS для PostgreSQL, открывает разработчикам возможности для написания сложных пространственных запросов. С другой стороны, NoSQL тоже работает в области геопространственных технологий: например, MongoDB предоставляет кое-какие функции для выполнения геопространственных операций. Однако реляционные базы данных все же лидируют на рынке с большим отрывом.
Работа с РСУБД
Основное внимание мы уделим РСУБД, так как именно эти системы в большинстве случаев мы будем использовать для хранения пространственных данных и работы с ними. В качестве примера мы будем использовать PostgreSQL, поскольку это самая перспективная реляционная база данных с открытым исходным кодом, а ее расширение PostGIS позволяет работать и с пространственными данными. Вы можете установить PostgreSQL, следуя инструкциям из документации. Помимо PostgreSQL рекомендуется также загрузить и установить pgAdmin. Платформа pgAdmin предоставляет веб-интерфейс для взаимодействия с базой данных. Также для этого можно загрузить и установить какое-либо другое совместимое ПО или использовать командную строку.
pgAdmin 4 на Mac
Пользователи могут изменять множество настроек для баз данных, включая порт, имя пользователя, пароль, доступность извне, выделение памяти и т. д., но это уже другая тема. В этой статье мы сосредоточимся на работе с данными, находящимися в базе.
Создание базы данных. Нам нужно создать базу данных (в идеале должно быть по одной базе данных для каждого проекта).
Создание новой базы данных для проекта
В инструменте запросов (Query Tool) база данных создается следующим образом:
Создание таблиц. Создание таблицы требует некоторых дополнительных соображений, поскольку именно здесь нам нужно определить все столбцы и типы данных в них. Все типы данных, которые можно использовать в PostgreSQL, вы найдете здесь.
pgAdmin позволяет нам выбрать в таблице различные ключи и ограничения, например Not Null (запрет на отсутствующие значения), Primary Key (первичный ключ) и т. д. Обсудим это подробнее чуть позже.
Создание таблицы пользователей
Заметьте, что мы не добавляли столбец первичного идентификатора в список столбцов, поскольку PostgreSQL делает это автоматически. Мы можем создать сколько угодно таблиц в одной базе данных. После того как таблицы созданы, мы можем установить связи между разными таблицами, используя определенные столбцы (обычно столбцы с идентификаторами).В инструменте запросов таблица создается следующим образом:
CRUD-операции с данными в таблицах
CRUD-операции (создание, чтение, обновление и удаление — Create, Retrieve, Update, Delete) — это своего рода hello world в мире СУБД. Поскольку эти операции используются наиболее часто, команды для их выполнения одинаковы во всех РСУБД. Мы будем писать и выполнять запросы в инструменте запросов в pgAdmin, который вызывается следующим образом:
Инструмент запросов (Query Tool) в pgAdmin
1. Создание новой записи
Для добавления новой записи в таблицу используйте следующую команду:
INSERT, INTO, VALUE являются ключевыми словами в SQL, поэтому их нельзя использовать в качестве переменных, значений и т. д. Чтобы добавить новую запись в нашу таблицу пользователей, мы напишем в инструменте запросов следующий запрос:
Обратите внимание: строки всегда следует заключать в ‘ ‘ (одинарные кавычки), а не в » » (двойные кавычки).
2. Получение записей (всех или нескольких)
Данные, хранящиеся в базе данных, можно извлечь и отобразить на экране. При этом мы можем получить все данные или ограниченное количество записей. Код для получения данных:
Этот код извлекает весь набор данных. Если вы хотите получить только 20 записей, напишите:
Если вы хотите получить данные из всех столбцов, то вместо перечисления названий всех столбцов можно написать:
Если вы хотите получить результат с определенным условием, используйте ключевое слово WHERE, как показано ниже:
Вы можете создавать даже сложные запросы, о которых мы поговорим позже.В нашем примере мы можем получить нужные нам данные:
3. Обновление записей (всех или нескольких)РСУБД позволяет нам обновить все или только некоторые записи данных, указав новые значения для столбцов.
Если вы хотите обновить определенные строки, добавьте условия с использованием ключевого слова WHERE:
В нашем случае мы обновим таблицы с помощью следующих запросов:
Обновление записей
4. Удаление записей (всех или нескольких)Удалять записи в SQL легко. Пользователь может удалить либо все строки, либо только определенные строки, добавив условие WHERE.
Удаление записей из таблицы
CRUD-операции используются очень часто, поскольку выполняют основные функции в базе данных.
Перевод подготовлен в рамках курса «Базы данных». Все желающих приглашаем на бесплатный двухдневный онлайн-интенсив «Бэкапы и репликация PostgreSQL. Практика применения». Цели занятия: настроить бэкапы; восстановить информацию после сбоя. Регистрация здесь.
База данных. Реляционная база данных
Что такое базы данных (БД) и зачем они нужны
База данных (БД) — это программа, которая позволяет хранить и обрабатывать информацию в структурированном виде.
БД это отдельная независимая программа, которая не входит в состав языка программирования. В базе данных можно сохранять любую информацию, чтобы позже получать к ней доступ.
Пример использования
Базы данных нужны для хранения информации. Чтобы получить полное понимание необходимости использования БД в современном веб-программировании, необходимо ответить на три вопроса:
Предположим, вы решили сделать сайт, где каждый пользователь может вести личный дневник наблюдения за погодой в своем городе.
Такой сайт должен иметь как минимум одну форму ввода со следующими полями: город, дата, температура, облачность, погодное явление, и так далее.
Каждый день наблюдатель записывает показания погоды в эту форму, чтобы когда-нибудь в будущем вернуться на сайт и посмотреть, какая была погода месяц или даже год назад.
Из этого примера следует, что программист каким-то образом должен сохранять данные из формы для дальнейшего использования.
Кроме обычного просмотра дневника погоды за месяц в виде таблицы, можно сделать и более сложный проект.
Например, чтобы электронный дневник чем-то качественно отличался от своего бумажного аналога, будет неплохо добавить туда возможности для простого анализа: показать какой день был самым холодным в ноябре или какой продолжительности была самая длинная серия пасмурных дней.
Получается, что данные надо не просто как-то хранить, но и иметь возможность их обрабатывать и анализировать.
Именно для этих целей и существуют базы данных.
Как хранится информация в БД
В основе всей структуры хранения лежат три понятия:
База данных
База данных — это высокоуровневное понятие, которое означает объединение совокупности данных, хранимых для выполнения одной цели.
Если мы делаем современный сайт, то все его данные будут храниться внутри одной базы данных. Для сайта онлайн-дневника наблюдений за погодой тоже понадобится создать отдельную базу данных.
Таблица
По отношению к базе данных таблица является вложенным объеком. То есть одна БД может содержать в себе множество таблиц.
Аналогией из реального мира может быть шкаф (база данных) внутри которого лежит множество коробок (таблиц).
Таблицы нужны для хранения данных одного типа, например, списка городов, пользователей сайта, или библиотечного каталога.
Таблицу можно представить как обычный лист в Excel-таблице, то есть совокупность строк и столбцов.
Наверняка каждый хоть раз имел дело с электронными таблицами (MS Excel).
Заполняя такую таблицу, пользователь определяет столбцы, у каждого из которых есть заголовок. В строках хранится информация.
В БД точно также: создавая новую таблицу, необходимо описать, из каких столбцов она состоит, и дать им имена.
Запись
Запись — это строка электронной таблицы.
Это неделимая сущность, которая хранится в таблице. Когда мы сохраняем данные веб-формы с сайта, то на самом деле добавляем новую запись в какую-то из таблиц базы данных. Запись состоит из полей (столбцов) и их значений. Но значения не могут быть какими угодно.
Определяя столбец, программист должен указать тип данных, который будет храниться в этом столбце: текстовый, числовой, логический, файловый и т.д. Это нужно для того, чтобы в будущем в базу не были записаны данные неверного типа.
Соберем всё вместе, чтобы понять, как будет выглядеть ведение дневника погоды при участии базы данных.
Теперь можно быть уверенными, что наблюдения наших пользователей не пропадут, и к ним всегда можно будет получить доступ.
Реляционная база данных
Английское слово „relation“ можно перевести как связь, отношение.
А определение «реляционные базы данных» означает, что таблицы в этой БД могут вступать в отношения и находиться в связи между собой.
Что это за связи?
Например, одна таблица может ссылаться на другую таблицу. Это часто требуется, чтобы сократить объём и избежать дублирования информации.
В сценарии с дневником погоды пользователь вводит название своего города. Это название сохраняется вместе с погодными данными.
Но можно поступить иначе:
Так мы решим сразу две задачи:
Связи между таблицами в БД бывают разных видов.
В примере выше использовалась связь типа «один-ко-многим», так как одному городу может соответствовать множество погодных записей, но не наоборот!
Бывают связи и других типов: «один-к-одному» и «многие-ко-многим», но они используются значительно реже.
База данных сайта: что это такое?
Приветствую вас, читатели cccp-blog.com! 🙂
Сегодня мы на мгновение вернёмся к основам создания сайта и поговорим о таком важном компоненте как база данных сайта. Я намеренно не касался данного вопроса в предыдущих публикациях, т.к. он требует особого отношения и не может быть рассмотрен вскользь.
Без базы данных сайта, при переходе на ресурс Вы бы увидели множество картиночек (и то только те, которые прописаны в html и css), кучу рекламы и, наверное, всё… Даже надписей на кнопках не найдёте, поэтому и не поймёте, что на них нужно нажимать. Согласитесь, Вы приходите на сайт не за этим 🙂
То, что нужно пользователям от Интернет-ресурсов, — это информация. Вот она-то как раз и хранится в базе данных сайта. Вот поэтому-то и важно изучать данный вопрос…
Необходимость изучения базы данных сайта
С первого взгляда, может показаться, что вникать в тонкости устройства базы данных сайта есть смысл только разработчикам, решившим делать свой проект «с нуля».
Такая точка зрения вполне оправданна ввиду того, что пользователям, выбравшим из всех способов создания сайтов CMS и онлайн-конструкторы, нет смысла разбираться со структурой их БД ввиду её стандартности и готовности продуктов. Да и просто незачем туда соваться, если всё и так прекрасно работает, верно? 🙂
На самом же деле данные знания ни для кого не будут лишними. Нередко случаются ситуации, когда уже в готовой БД не представлены какие-либо сущности. Или владельцу ресурса необходимо поменять какой-либо тип или длину поля таблицы. Наконец, нужно по какой-то причине добавить, изменить или удалить запись напрямую в базе.
Вот тогда данное руководство Вам и пригодится. Поэтому мы продолжаем 🙂
База данных сайта — что это?
Для начала, как всегда, немного терминологии. Как я уже и говорил, понятие базы данных сайта относится к основам веб-строительства. Но, поскольку я не говорил о ней в одноимённой статье, посвятим ей пару строк здесь.
База данных (сокращённо БД) — это хранилище всей информации, расположенной на сайте. И совершенно неважно, к какому типу сайта принадлежит ресурс. Если он имеет больше одной страницы, БД у него гарантировано есть.
Ещё одной вещью, которую нужно запомнить, является то, что БД состоит из таблиц, у которых есть набор полей. В них-то вся информация и расположена в виде кортежей (записей). Например, «Красная Феррари» будет кортежем в таблице «Модели», у которой есть поля «Производитель» и «Цвет». Таблица, в свою очередь, будет частью БД «Машины».
К основным понятиям, связанным с базой данных сайта, относятся «сущность», «атрибут сущности» и «отношения». Пару слов о каждом из них, чтобы не возникало вопросов по ходу повествования.
Сущность — это объект предметной области.
Если Вы проектируете базу данных сайта книг, то сущностями у вас будут «книга», «автор», «издательство» и т.д. В структуре БД сущности представлены таблицами.
Атрибут сущности — это свойство объекта.
В нашем примере атрибутами книги будут являться «ФИО автора», «количество экземпляров», «год выхода», «переплёт». В структуре БД они представлены полями таблиц.
Отношения — это логические связи между таблицами.
Например, у книги есть автор. Данное отношение будет выражено одинаковыми полями в обоих таблицах.
Структура таблиц будет зависеть от типа отношений, которые бывают:
«один-к-одному» — одной записи из первой таблицы соответствует один объект другой таблицы.
Пример: издательство печатает произведения одного-единственного автора. Довольно часто такие таблицы объединяются;
«один-ко-многим» — записи из первой таблицы соответствует несколько записей из второй таблицы.
Пример: у автора может быть много книг, у книги может быть много авторов. как и в предыдущем случае, каждому участнику отношений соответствует отдельная таблица;
«многие-ко-многим» — множеству записей из первой таблицы может соответствовать множество записей из второй таблицы.
Пример: одну книгу может печатать много издательств в то же время, как одно издательство может печатать множество книг. При данном типе связи целесообразно создать промежуточную таблицу вроде «издательства-книги».
Для наглядности своих слов привожу изображение всех структурных элементов базы данных Интернет-магазина в программе phpMyAdmin, о которой я уже упоминал в статье «Программы для создания сайтов«:
По поводу таблиц хотелось бы отметить, что в каждой из них в обязательном порядке есть ключевое поле. Это поле или группа полей, которые служат идентификатором записи таблицы. Т.е. в каждой таблице базы данных сайта не может быть 2 или более записей с одинаковыми значениями ключевых полей.
По поводу полей таблиц следует отметить, что у каждого поля есть:
А вот по поводу отношений мы поговорим более подробно, т.к. это интересная тема не только в области психологии, но и в базах данных сайта она простотой не отличается 🙂
База данных сайта — нормализация отношений
Следующем темой, которую бы я хотел затронуть, является нормализация отношений. Речь тут пойдёт не о гармоничном развитии отношений с вашим партнёром, о чём привыкло думать большинство людей при встрече этого словосочетания 🙂 Мой блог посвящён немного другому…
Поговорим мы о нормализации отношений базы данных сайта, которая подразумевает приведение их к одной из 6 нормальных форм. Это делается для борьбы с избыточностью данных. Она заключается в содержании в БД повторяющейся информации.
Как раз для борьбы с этим и были введены нормальные формы, назначением которых как раз и является оптимизация структуры базы данных сайта таким образом, чтобы в ней не было избыточных данных.
Рассмотрим, какие же нормальные формы бывают:
1. Первая нормальная форма
Отношение находится в 1НФ, если все его атрибуты являются простыми и в таблицах нет повторяющихся кортежей. Взяв для примера приведённую ранее таблицу «Машины», отметим, что сейчас она является приведённой к 1НФ.
Если бы в ней были записи типа «Ferrari => Красный, Жёлтый, Малиновый» — это было бы нарушением ввиду того, что атрибуты не являются простыми. В таком случае её нормализация заключалась бы в разбиении этой записи на 3: «Ferrari => Красный», «Ferrari => Жёлтый», «Ferrari => Малиновый».
2. Вторая нормальная форма
Отношение находится во 2НФ, если оно находится в 1НФ и все его НЕ ключевые атрибуты неприводимо зависят от первичного ключа. И в составе первичного ключа не должно быть меньшего подмножества атрибутов. Проще говоря, не должно быть посторонних, чужих по смыслу полей.
Если бы в нашей таблице помимо полей «Фирма» и «Цвет» было бы поле «Скидка», она не была бы нормализованной, т.к. скидка зависит от цвета, но не зависит от фирмы машины. Нормализация заключалась бы в разбиении её на 2 таблицы: «Фирма» и «id цвета» были бы в одной. А «id цвета», «Цвет» и «Скидка» были бы в другой.
3. Третья нормальная форма
По смыслу она очень похожа на 2НФ. Обе они предусматривают зависимость НЕ ключевых атрибутов от первичного ключа. Отношение находится в 3НФ, если оно находится во 2НФ и его НЕ ключевые атрибуты зависят от ПФ.
Единственное отличие в том, что во 2НФ зависимость неприводимая, а в 3НФ она нетранзитивная. Страшное слово «нетранзитивная» на самом деле подразумевает вынесение всех НЕ ключевых полей, которые могут относиться к нескольким записям таблицы, в отдельную таблицу.
Если бы в нашей таблице помимо полей «Фирма» и «Цвет» было бы поле «Возраст фирмы», она не была бы нормализованной, т.к. возраст фирмы не зависит от модели машины. Нормализация заключалась бы в разбиении её на 2 таблицы: «Цвет» и «id фирмы» были бы в одной, а в другой были бы «id фирмы», «Название фирмы», «Возраст фирмы».
Частным случаем 3НФ является нормальная форма Бойса-Клодда, которая дополнительно учитывает наличие в таблице нескольких потенциальных ключевых полей, которые являются составными и пересекаются (имеют хотя бы один атрибут).
Я, честно говоря, с трудом ощущаю разницу между 2НФ и 3НФ, даже не знаю, зачем ввели две формы, если на практике они означают одно и тоже: в таблице не должно быть посторонних полей. При проектировке советую вам запомнить и применять этот тезис 🙂
Остальные формы я не буду рассматривать ввиду сложности их определения и достаточно тонких отличиях друг от друга. Да в этом и нет необходимости, т.к. на практике не всегда нужно доходить до 6НФ. В большинстве случаев достаточно приведение к 3НФ, чтобы в отношениях базы данных сайта отсутствовала избыточность и они считались нормализованными.
4НФ, 5НФ, 6НФ и их частные формы представляют скорее академический интерес, т.е. они могут быть интересны только узкому кругу учёных, которые защищают диссертации и проводят свои исследования, пытаясь открыть что-либо новое.
При реальном проектировании баз данных сайта эти заморочки могут только лишний раз запутать и отбить охоту, поэтому я в них и не углублялся 🙂 Если Вам будет интересно, Вы всегда можете прочитать об остальных нормальных формах на специализированных ресурсах. Мы же двигаемся дальше.
База данных сайта — денормализация отношений
Последним понятием, связанным с базами данных сайта, с которым я бы хотел вас познакомить, является денормализация отношений. Она является обратным явлением нормализации отношений. И заключается в преднамеренном приведении структуры БД в состояние, не соответствующее ни одной из нормальных форм.
Денормализацию есть смысл проводить, если в вашей БД:
1. Много соединений таблиц в запросах
Если Ваша база данных сайта нормализована, в ней будет масса таблиц, в большинстве которых будет всего 2 поля: ключевое и поле со значением, подтягивающимся по ключевому полю. Да, избыточности данных в таком случае не наблюдается, но и производительности тоже, т.к. операции объединения очень трудоёмкие 🙂
Поэтому в данной ситуации есть смысл объединить несколько таблиц в одну для ускорения запросов по выборке данных.
Если у Вас на сайте происходит много расчётов значений, которые хранятся в базе данных сайта, есть смысл подумать о денормализации. Особенно эта ситуация характерна для Интернет-магазинов, где постоянно рассчитывается стоимость заказов, цены товаров с учётом скидок и т.д.
В данном случае денормализация будет заключаться в хранении наиболее используемых рассчитываемых значений в базе данных сайта, чтобы при необходимости не производить выборку данных и их пересчёт, а взять уже готовое значение.
Если в вашей базе данных сайта есть длинные поля (фотографии, хранимые в blob-полях; огромные текстовые описания товаров), то запросы, подсчитывающие количество записей в таких таблицах будут выполняться оооочень медленно 🙂
Поэтому в данном случае есть смысл провести денормализацию путём создания отдельных таблиц, содержащих всего 2 поля: id записи и поле, содержащее «тяжёлое» значение. В основном таблице, в которой до этого это тяжёлое поле хранилось, вместо него будет идентификатор, и подсчёт количества записей будет производиться гораздо быстрее.
Подытожив всё вышесказанное, хочу сказать, что денормализация баз данных сайта проводится с целью повышения производительности веб-проекта, которая заключается в ускорении загрузки страниц и потребляемости ресурсов сервера, на котором он расположен.
На этом я заканчиваю своё повествование, в котором нами была рассмотрена база данных сайта — её основные понятия и определения, а также меры по оптимизации её структуры. В дальнейших публикациях я более подробно коснусь БД отдельных типов ресурсов (первый на очереди Интернет-магазин), в которых более подробно будут рассмотрены их сущности и атрибуты, а, следовательно, структура их таблиц и отношений между ними.
С нетерпением жду ваших отзывов и вопросов. Делитесь записью со своими друзьями в социальных сетях, привлекайте их к обсуждению. Чем больше людей — тем больше интересных мыслей!
И в завершение предлагаю вашему вниманию интересное экскурсное видео о том, что такое БД и зачем она нужна. Приятного просмотра 🙂
P.S.: если вам нужен сайт либо необходимо внести правки на существующий, но для этого нет времени и желания, могу предложить свои услуги.
Более 5 лет опыта профессиональной разработки сайтов. Работа с PHP, OpenCart, WordPress, Laravel, Yii, MySQL, PostgreSQL, JavaScript, React, Angular и другими технологиями web-разработки.
Опыт разработки проектов различного уровня: лендинги, корпоративные сайты, Интернет-магазины, CRM, порталы. В том числе поддержка и разработка HighLoad проектов. Присылайте ваши заявки на email cccpblogcom@gmail.com.
И с друзьями не забудьте поделиться 😉