"Информатика (в 2-х частях)", Горячев А.В., Островский С.Л., Паволоцкий А.В., Семёнов А.А., Чернышёва Т.Л., Широков Д.В.
База данных помогает хранить сведения в упорядоченном виде и быстро находить нужное. Чтобы она действительно отвечала на вопросы пользователя, её структуру продумывают заранее: определяют цель, выбирают объекты учёта и их свойства, задают поля и типы данных. Таблица состоит из записей и полей, а первичный ключ позволяет отличать одну запись от другой. Проверка будущих запросов помогает заметить пропуски и лишние сведения до начала работы с базой.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
База данных — организованная совокупность сведений, которую создают для хранения и поиска информации. Её структуру продумывают заранее, чтобы собирать именно нужные данные и затем быстро получать ответы на вопросы. Если не решить заранее, как сведения будут связаны и найдены, информация может оказаться неполной или неудобной для обработки.
Таблица базы данных — способ представить сведения об однотипных объектах в строках и столбцах. Например, в таблице книг каждая строка может описывать одну книгу, а столбцы — её свойства. Такая форма помогает хранить объекты по общему порядку и сравнивать их данные.
Поле — столбец таблицы, содержащий значения одного свойства объектов. Название поля подсказывает, какие сведения должны находиться в столбце: в поле «Автор» указывают имена авторов, а не названия книг. Разделение свойств по полям облегчает поиск, сортировку и обработку данных.
Первичный ключ — поле или набор полей, по значениям которых можно однозначно определить запись таблицы. Например, если названия книг повторяются, одного названия недостаточно, чтобы понять, о какой книге идёт речь. Подходящий ключ помогает отличить каждую запись от остальных.
Проектирование начинается с определения цели базы данных и вопросов, на которые она должна помогать отвечать. Причина проста: сведения, нужные для учёта книг, отличаются от данных для расписания кружков. Если заранее представить будущие запросы, станет понятнее, какую информацию собирать, а какую можно не включать.
После этого выделяют типы объектов, о которых будут храниться сведения, и выбирают свойства каждого объекта. Например, если база описывает книги, объектом учёта будет книга, а возможными свойствами — название, автор и год издания. Такой шаг нужен, чтобы таблицы не смешивали данные о разных предметах и давали достаточно сведений для поставленной цели.
Для каждого свойства создают отдельное поле, выбирают ему понятное название и подходящий тип данных. Тип данных задаёт, какие значения можно хранить: год издания удобно записывать как число, а название — как текст. Это помогает сохранять значения в едином виде и уменьшает риск ошибок, например случайной записи слова в поле для числа.
Затем решают, какие значения образуют одну запись, и выбирают ключ. Запись должна описывать один объект, а ключ — позволять отличить его от других, даже если часть сведений совпадает. Если ключевые значения повторяются, поиск может вернуть несколько записей, поэтому поле или сочетание полей выбирают с учётом реальных данных.
Готовую структуру проверяют на примерах будущих запросов: можно ли найти нужную книгу, узнать её автора или отобрать записи по году. Такая проверка показывает, хватает ли полей и не записано ли одно и то же без необходимости. Если важный вопрос остаётся без ответа, структуру стоит исправить до заполнения базы.
| Элемент | Где расположен | Что содержит или для чего нужен | Пример для базы данных книг |
|---|---|---|---|
| Таблица | В базе данных; состоит из строк и столбцов | Объединяет сведения об однотипных объектах | Таблица «Книги» |
| Поле | Столбец таблицы | Хранит значения одного свойства объектов | «Название», «Автор», «Год издания» |
| Запись | Строка таблицы | Содержит значения полей для одного объекта | Данные об одной книге |
| Первичный ключ | Одно из полей или сочетание полей | Однозначно определяет запись | Уникальный номер книги |
Пользуясь таблицей, сначала различайте строки и столбцы: строка описывает объект, столбец — его свойство. Затем проверьте, что выбранный ключ действительно различает все записи. Пример в последнем столбце показывает, как общий термин применить к данным о книгах.
Условие: спроектировать структуру небольшой базы о книгах в фонде и их авторах. Нужно понять, какие данные необходимы, чтобы увидеть перечень книг и установить, кто написал каждую из них. Начинаем не с добавления всех возможных сведений, а с цели учёта.
Ответ: таблица «Книги» с полями «Название» и «Автор» подходит для указанной цели. Для учёта отдельных экземпляров стоит добавить поле-ключ, например уникальный номер книги. Добавлять его полезно, если один и тот же экземпляр нужно находить отдельно от других.
Условие: хранить название кружка, кабинет и сведения о преподавателе, предложив поля и типы данных. Сначала каждое свойство превращаем в отдельное поле, а затем решаем, какие значения в нём будут записываться. Так мы не смешиваем в одной ячейке сведения разного назначения.
Ответ: таблица «Кружки» содержит поля «Название кружка» (текст), «Кабинет» (текст) и «Преподаватель» (текст). Если база должна различать кружки с одинаковым названием, нужно добавить подходящее поле-ключ. Тип данных выбирают не только по внешнему виду значения, но и по тому, как его предполагается использовать.
Условие: в таблице есть названия, авторы и годы издания, причём названия могут совпадать. Нужно предложить ключ и проверить, можно ли найти книгу по автору и году. Совпадение названий означает, что название само по себе не всегда указывает на одну запись.
Ответ: надёжный вариант — отдельный уникальный номер. По автору и году можно искать книгу, но такая комбинация не обязательно однозначна; структуру следует проверить на возможных совпадениях. Если по условиям базы сочетание этих значений гарантированно уникально, его тоже можно рассматривать как ключ.
Составлять поля, не выяснив цель базы, — значит рисковать пропустить нужные сведения или накопить ненужные. Так поступают, когда начинают проектирование со списка любых известных фактов об объектах. Проверьте себя: перечислите вопросы, ради которых создаётся база, и убедитесь, что для каждого ответа предусмотрены данные.
Записывать разные свойства в одно поле, например автора вместе с названием книги, неудобно для поиска и сортировки. Ошибку допускают, когда стремятся уместить все сведения в одну ячейку. Проверьте, можно ли отдельно отобрать книги по автору или по названию: если нет, разделите значения на самостоятельные поля.
Выбирать ключ, значения которого могут повторяться, — значит не иметь возможности однозначно найти запись. Название кажется удобным ключом, пока в таблице нет одноимённых объектов. Для проверки найдите возможные совпадения или добавьте уникальный идентификатор, если повторения возможны.
Считать, что каждая строка может содержать произвольный набор данных, — ошибка: записи одной таблицы соответствуют одной структуре полей. Она возникает, если воспринимать таблицу как свободный список заметок. Проверьте несколько строк: в каждой должны быть предусмотрены одни и те же поля, даже если отдельное значение пока неизвестно.
Чтобы проектировать таблицу, нужно понимать, как в ней организованы данные: столбцы соответствуют полям, строки — записям. Это помогает перейти от описания объектов к конкретной структуре, в которой значения занимают понятные места. Различение строк и столбцов также необходимо при чтении таблиц.
Проектирование связано с поиском, сортировкой и обработкой информации в базах данных. Например, чтобы отсортировать книги по году, поле с годом должно содержать значения подходящего типа, а чтобы найти одну запись — структура должна включать нужные данные и ключ. Поэтому удобство дальнейшей работы зависит от того, насколько продуманно выбраны поля и их типы.
С чего начать проектирование базы данных?
Сформулируйте цель: какие сведения нужно хранить и на какие вопросы база должна отвечать. Затем определите объекты учёта и подберите их свойства, которые станут полями таблицы.
Чем поле отличается от записи?
Поле — это столбец, описывающий одно свойство объектов, например автора книги. Запись — строка таблицы со значениями всех полей для одного объекта.
Зачем таблице нужен первичный ключ?
Он позволяет однозначно определить каждую запись. Это нужно, чтобы различать объекты, даже если некоторые их свойства совпадают.
Можно ли использовать название объекта как ключ?
Можно, если названия гарантированно не повторяются и не меняются. Если возможны совпадения, лучше выбрать другое поле или сочетание полей, которое однозначно различает записи.
Как понять, какие поля нужно включить в таблицу?
Составьте список вопросов, на которые должна отвечать база, и включите поля с данными, необходимыми для ответа. Проверьте, что каждое поле описывает одно свойство, а ненужные сведения не дублируются.
§ 7. Проектирование базы данных