1. Что такое базы данных и реляционные СУБД
Что такое базы данных и реляционные СУБД
Добро пожаловать в курс «Основы SQL: Структура и данные». Мы начинаем с фундамента. Прежде чем писать запросы и анализировать данные, необходимо разобраться, где эти данные живут, как они устроены и почему таблица в Excel — это еще не база данных.
От хаоса к системе: Зачем нужны базы данных
Представьте, что вы владелец небольшого книжного интернет-магазина. В самом начале вы записываете заказы в блокнот. Когда заказов становится больше, вы переносите их в электронные таблицы (например, Excel или Google Sheets). Это удобно, пока у вас 100 клиентов.
Но что произойдет, когда клиентов станет 100 000? Файл начнет открываться по несколько минут, поиск нужной строки станет мучением, а если два менеджера попытаются одновременно отредактировать файл, данные могут потеряться. Здесь на сцену выходят базы данных.
База данных (БД) — это организованная структура для хранения, изменения и обработки взаимосвязанной информации. Это не просто склад файлов, а система, которая гарантирует надежность и скорость доступа.
> База данных — это электронное хранилище, в котором информация организована так, чтобы с ней можно было быстро, удобно и безопасно работать. > > blog.skillfactory.ru
Важно различать два понятия, которые новички часто путают:
Если провести аналогию с библиотекой: БД — это книги на полках, а СУБД — это библиотекарь, который точно знает, где стоит нужная книга, и выдает её вам по запросу.
Реляционные базы данных: Мир таблиц
Существует множество типов баз данных, но самым популярным стандартом в мире бизнеса и аналитики остаются реляционные базы данных (Relational Database Management System — RDBMS). Эту модель предложил Эдгар Кодд в 1970 году.
Слово «реляционная» происходит от английского relation (отношение). В математическом смысле отношение — это набор элементов. В прикладном смысле реляционная база данных — это набор связанных между собой таблиц.
> Реляционная база данных — это тип БД, в которой данные организованы в виде связанных таблиц, также называемых отношениями. > > selectel.ru
Главное отличие реляционной БД от простого списка файлов — это строгая структура и наличие связей. Вы не храните всё в одной куче. Вы разделяете данные на логические группы (сущности) и настраиваете связи между ними.
Анатомия таблицы: Строки и Столбцы
В реляционной базе данных вся информация хранится в таблицах. Давайте разберем структуру таблицы на примере таблицы Clients (Клиенты).
| ClientID | FirstName | LastName | Email | RegistrationDate | | :--- | :--- | :--- | :--- | :--- | | 101 | Иван | Петров | ivan@mail.ru | 2023-01-15 | | 102 | Анна | Сидорова | anna@yandex.ru | 2023-02-20 | | 103 | Дмитрий | Волков | volkov@gmail.com | 2023-03-05 |
1. Столбцы (Columns)
Столбец также называют полем или атрибутом. Каждый столбец описывает конкретную характеристику объекта. В нашей таблице столбцами являютсяFirstName (Имя), Email (Почта) и так далее.Важное правило: В одном столбце могут храниться данные только одного типа. Вы не можете записать в столбец с датой регистрации слово «Вчера».
2. Строки (Rows)
Строку часто называют записью или кортежем. Каждая строка — это отдельный объект или событие. В нашем примере одна строка — это один конкретный клиент со всеми его характеристиками.3. Ячейка (Cell)
Это пересечение строки и столбца, где хранится единичное значение данных (например, конкретный emailivan@mail.ru).Типы данных: Почему порядок важен
В Excel вы можете написать в одной ячейке число 100, а в ячейке под ней — текст сто рублей. СУБД такого не позволит. При создании таблицы вы обязаны определить тип данных для каждого столбца. Это гарантирует целостность информации.
Основные типы данных:
* Числовые (Integer, Decimal, Float): Для хранения количества, цен, возраста. С ними можно производить арифметические операции.
* Строковые (Char, Varchar, Text): Для хранения имен, адресов, описаний. Varchar(50) означает, что в строку можно записать текст длиной до 50 символов.
* Логические (Boolean): Хранят только два значения: TRUE (Истина) или FALSE (Ложь). Например, столбец IsActive (Активен ли клиент).
* Дата и время (Date, Timestamp): Для хранения календарных дат и точного времени событий.
Использование правильных типов данных критически важно для производительности и корректности расчетов. Например, если вы сохраните цены как текст, вы не сможете просто так посчитать сумму заказа.
Первичный ключ (Primary Key)
Как отличить одного Ивана Петрова от другого? В реальной жизни мы используем паспортные данные или ИНН. В базах данных для этого существует Первичный ключ (Primary Key).
Первичный ключ — это столбец (или набор столбцов), который уникально идентифицирует каждую строку в таблице.
Требования к первичному ключу:
ClientID.В примере выше первичным ключом является столбец ClientID. Даже если у Ивана Петрова появится полный тезка, у них будут разные ID (например, 101 и 154), и система их не перепутает.
Нормализация данных: Борьба с избыточностью
Одна из главных концепций реляционных баз данных — нормализация. Это процесс организации данных для уменьшения избыточности.
Представьте, что мы храним данные о заказах вот так:
| OrderID | ClientName | ClientAddress | Product | Price | | :--- | :--- | :--- | :--- | :--- | | 1 | Иван Петров | ул. Ленина, 1 | Ноутбук | 50000 | | 2 | Иван Петров | ул. Ленина, 1 | Мышка | 1000 |
Здесь мы видим проблему: имя и адрес Ивана Петрова дублируются. Если Иван переедет, нам придется искать все его заказы и менять адрес в каждой строке. Это долго и чревато ошибками.
Нормализация предлагает разделить эту информацию на две таблицы:
Эффективность нормализации можно оценить математически. Допустим, мы храним текст адреса длиной байт. Если у клиента заказов, то в ненормализованной таблице адрес займет объем памяти :
где — объем памяти для хранения адресов в плохой структуре, — количество заказов, — размер строки адреса в байтах.
При нормализации мы храним адрес один раз в таблице клиентов, а в таблице заказов храним только короткий идентификатор клиента (ID) размером байт. Общий объем составит:
где — объем памяти в нормализованной структуре, — память на одну запись адреса, — количество заказов, — память на хранение ID (обычно 4 или 8 байт).
Поскольку (число) значительно меньше (длинная строка), при большом экономия места становится колоссальной. Кроме того, это исключает аномалии при обновлении данных.
Итоги
Мы разобрали фундамент, на котором строится работа с данными. Вот ключевые моменты:
В следующей статье мы перейдем к практике и изучим язык SQL, с помощью которого мы будем «разговаривать» с базой данных.