8-916-722-04-28ТелВКонтактеВКTelegramTgMAXMAX Пробный урокПробный урок

Таблицы, записи, поля, первичный ключ, типы связей между таблицами

Понятие базы данных и СУБД

База данных (БД) — организованная совокупность структурированных данных, хранящихся и обрабатываемых в компьютерной системе таким образом, чтобы обеспечить удобный поиск, добавление, изменение и удаление информации. Управление базой данных осуществляет специальная программа — система управления базами данных (СУБД, DBMS) — комплекс программных средств для создания баз данных, наполнения их информацией и организации доступа к ней многих пользователей одновременно. Примеры распространённых СУБД: MySQL, PostgreSQL, Microsoft SQL Server, SQLite, Oracle Database.

Реляционная модель данных

Наиболее распространена на сегодняшний день реляционная модель данных, предложенная в 1970 году Эдгаром Коддом. В реляционной модели вся информация организована в виде совокупности двумерных таблиц (отношений), связанных между собой по определённым правилам. Простота, наглядность и строгая математическая основа (реляционная алгебра, теория множеств) сделали эту модель фактическим стандартом для большинства современных СУБД, работающих на основе языка запросов SQL.

Таблица, запись, поле

Базовым элементом реляционной БД является таблица, которая хранит информацию об однотипных объектах (например, таблица «Ученики» или «Товары»). Каждая строка таблицы называется записью и содержит информацию об одном конкретном объекте (об одном ученике, об одном товаре). Каждый столбец таблицы называется полем и содержит однотипную характеристику всех объектов (например, поле «Фамилия», поле «Дата рождения», поле «Цена»). Так, таблица «Ученики» с полями «Фамилия», «Класс», «Дата рождения» и тремя записями содержит информацию о трёх конкретных учениках.

Типы данных полей

Каждому полю таблицы при её создании назначается тип данных, определяющий, какие значения могут в нём храниться и какие операции над ними допустимы. Основные типы данных: числовой (целые и вещественные числа), символьный/текстовый (строки фиксированной или переменной длины), дата/время, логический (булевский тип, принимающий значения «истина»/«ложь»), а также специальные типы для хранения крупных объектов (изображений, файлов). Строгое соблюдение типов данных предотвращает ошибки при вводе информации и позволяет СУБД эффективно хранить и обрабатывать данные.

Первичный ключ

Первичный ключ (primary key) — поле или минимальный набор полей таблицы, значение которого уникально для каждой записи и однозначно её идентифицирует; ни одна запись не может иметь пустое значение первичного ключа, и никакие две записи не могут иметь одинаковое его значение. Часто в качестве первичного ключа используют специально созданное поле-идентификатор (например, «Код ученика», автоматически генерируемое СУБД целое число), а не «естественные» данные вроде фамилии, которая может повторяться у разных учеников. Наличие первичного ключа — обязательное требование реляционной модели и основа для установления связей между таблицами.

Внешний ключ и связи между таблицами

Мощь реляционной модели проявляется в возможности связывать между собой несколько таблиц, избегая дублирования данных. Внешний ключ (foreign key) — поле одной таблицы, значения которого совпадают со значениями первичного ключа другой (связанной) таблицы. Например, в таблице «Оценки» поле «Код ученика» является внешним ключом, ссылающимся на первичный ключ таблицы «Ученики» — это позволяет для каждой оценки однозначно определить, какому ученику она принадлежит, не дублируя в таблице «Оценки» полные данные об ученике (фамилию, класс и т. д.).

Типы связей между таблицами

Между двумя таблицами реляционной базы данных возможны связи трёх типов. Связь «один-к-одному» (1:1) означает, что одной записи первой таблицы соответствует не более одной записи второй таблицы, и наоборот (например, таблицы «Сотрудники» и «Паспортные данные» — у каждого сотрудника ровно один паспорт). Связь «один-ко-многим» (1:N) — самая распространённая — означает, что одной записи первой таблицы может соответствовать несколько записей второй таблицы, но не наоборот (например, одному ученику соответствует много оценок, но каждая оценка принадлежит только одному ученику). Связь «многие-ко-многим» (M:N) означает, что записи обеих таблиц могут быть связаны с произвольным числом записей друг друга (например, одному ученику соответствует много предметов, а одному предмету — много учеников); такая связь на практике реализуется через дополнительную связующую таблицу, содержащую пары внешних ключей обеих исходных таблиц.

Пример схемы базы данных

Рассмотрим две связанные таблицы: «Ученики» с первичным ключом Код_ученика и «Оценки», где поле Код_ученика служит внешним ключом (связь «один-ко-многим» — одному ученику соответствует несколько оценок).

Код_ученика (PK)ФамилияКлассДата_рождения
1Иванов11А12.03.2009
2Петрова11А05.07.2009
3Сидоров11Б21.11.2008
Код_записи (PK)Код_ученика (FK)ПредметОценка
1011Информатика5
1021Математика4
1032Информатика5

Значение поля Код_ученика в таблице «Оценки» всегда совпадает со значением первичного ключа одной из записей таблицы «Ученики»; так, обе записи с Код_ученика=1 относятся к ученику Иванову, что и реализует связь «один-ко-многим» без дублирования его фамилии, класса и даты рождения в каждой строке оценок.

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

Нормализация — процесс проектирования структуры реляционной базы данных, устраняющий избыточность (дублирование) данных и потенциальные противоречия при их изменении путём разбиения информации на несколько связанных таблиц вместо хранения всего в одной большой таблице. Существует последовательность формальных требований — нормальных форм (первая, вторая, третья и далее), которым должна удовлетворять хорошо спроектированная база данных; на базовом уровне достаточно понимать главный принцип нормализации: каждый факт должен храниться в базе данных ровно один раз.

Типичные ошибки

Частая ошибка — путать понятия «запись» и «поле»: запись — это строка таблицы (информация об одном объекте), а поле — столбец (одна характеристика всех объектов). Другая ошибка — считать, что связь «один-ко-многим» можно реализовать без внешнего ключа: без соответствующего поля, ссылающегося на первичный ключ другой таблицы, СУБД не сможет связать записи между собой. Также распространена ошибка — пытаться хранить повторяющуюся группу данных (например, несколько оценок ученика) в отдельных столбцах одной таблицы вместо вынесения их в отдельную связанную таблицу, что нарушает принципы нормализации и реляционной модели.

Краткий словарь терминов

База данных — организованная совокупность структурированных данных для хранения и обработки на компьютере.

СУБД — система управления базами данных — программный комплекс для создания и обслуживания баз данных.

Запись — строка таблицы базы данных, содержащая информацию об одном объекте.

Поле — столбец таблицы базы данных, содержащий одну характеристику всех объектов.

Первичный ключ — поле (или набор полей), уникально идентифицирующее каждую запись таблицы.

Внешний ключ — поле таблицы, ссылающееся на первичный ключ другой (связанной) таблицы.

Заключение

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

Запишитесь на бесплатный урок

Определим уровень, покажем формат занятий и составим план подготовки.