Как устроены таблицы, записи и связи в базе данных, зачем нужны идентификаторы и почему база — не просто большой файл.
Когда одного списка становится мало
Представим условную библиотеку. Сначала книги записывают в тетрадь: название, автор, кому выдали. Затем появляются несколько экземпляров одного романа, читатели с одинаковыми фамилиями и отдельный пункт выдачи. Теперь недостаточно найти знакомое слово: нужно понять, какую именно книгу и кому передали.
База данных — организованное собрание сведений. Работать с ним помогает система управления базой данных: программа, которая сохраняет информацию, находит записи и управляет изменениями. Такое различие между данными и управляющей программой объясняет Oracle. В разговоре оба понятия часто сокращают до слова «база», но полезно различать их роли.
Что находится в таблицах
Рассмотрим табличную, или реляционную, базу. В ней сведения представлены строками и столбцами. Строка описывает отдельную запись, а столбец — одно её свойство. Например, у экземпляра книги есть инвентарный номер, состояние и место хранения. Одна строка не обязана описывать сразу всё, что известно библиотеке.
Отдельно можно хранить читателей, отдельно — экземпляры, отдельно — выдачи. Документация PostgreSQL объясняет реляционную модель через таблицы и их строки. Это не означает, что все базы устроены одинаково: существуют и другие модели хранения. Здесь мы разбираем одну распространённую идею, без обзора всех разновидностей.
Подробнее: Oracle: что такое база данных.
Зачем записям номера
Фамилия читателя не подходит как единственный способ его найти: у двух людей она может совпадать. Название книги тоже не определяет конкретный экземпляр. Поэтому записи получают идентификаторы — значения, позволяющие отличить одну запись от другой.
В условной библиотеке выдача ссылается на номер читателя и номер экземпляра. Тогда смена фамилии не требует переписывать её во всех старых выдачах. А два одинаковых романа остаются разными предметами учёта. Такая связь похожа на ссылку между карточками: она соединяет сведения, не заставляя каждый раз копировать всё описание.
Подробнее: PostgreSQL: основные понятия.
Как находят нужные сведения
Сотруднику может понадобиться список книг, которые ещё не вернули, или история выдач одного экземпляра. Приложение обращается к системе управления базой, а та получает подходящие записи. Пользователь обычно видит удобную форму, а не внутренние таблицы.
При этом вопрос нужно сформулировать точно. «Просроченная книга» может означать, что срок возврата прошёл, но отметки о возврате нет. Если срок продлили, результат изменится. База не придумывает правила библиотеки: она помогает последовательно применять те, которые задала команда. Ошибочное правило даст ошибочный отчёт даже в исправной системе.
Почему нужны ограничения и доступы
В библиотеке полезно запретить выдачу несуществующего экземпляра и не допускать одинаковых инвентарных номеров. Такие ограничения защищают от части противоречий. Но они не проверят за человека, действительно ли книга лежит на полке и правильно ли сотрудник ввёл её состояние.
Ещё важно определить права: посетителю достаточно видеть доступность книги, сотруднику — оформлять выдачу. Личные сведения читателей не должны становиться общедоступными только потому, что находятся в той же системе. Конкретные правила доступа и резервного копирования нужно настраивать; наличие базы само по себе не решает все вопросы сохранности.
Чем это полезно новичку
Чтобы понять базу данных, начните с предметов и событий знакомой задачи. Какие сведения относятся к человеку, какие — к книге, какие — к выдаче? Что должно быть уникальным? Какие изменения допустимы? Ответы помогают представить структуру раньше, чем появится необходимость изучать инструменты.
Не нужно переносить каждую домашнюю таблицу в отдельную систему. Для небольшого личного списка обычного файла может хватить. База становится особенно полезной, когда несколько людей регулярно обновляют связанные сведения и нужны общие правила. Следующий шаг — разобраться, как язык SQL помогает задавать вопросы к таким данным.
Что почитать дальше
Обучение в NovaData
Если хотите разобраться в направлении глубже, посмотрите программу «SQL инженер». Сопоставьте темы и требования к подготовке со своей текущей задачей.


