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