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