Изучив эту тему, вы узнаете и повторите::
- что представляет собой модель данных;
- в чем особенность иерархической модели данных;
- в чем особенность сетевой модели данных;
- в чем особенность реляционной модели данных;
- как устанавливаются связи в реляционной модели.
Реляционная модель данных, как правило, состоит из нескольких связанных между собой таблиц. Если вы связываете два объекта нитью, то к одному концу нити привязан один объект, к другому концу привязан второй объект. Также и между таблицами: один конец связи относится к одной таблице, а второй конец связи — к другой. Таким образом, связь всегда соединяет только две таблицы.
Связи между таблицами имеют один из трех типов:
- «один-к-одному»;
- «один-ко-многим»;
- «многие-ко-многим».
Как видите, название типа связи состоит из двух слов, которые обозначают два конца связи между таблицами.
Предположим у нас есть две таблицы — ТАБ1 и ТАБ2.
Связь «один-к-одному» (условное обозначение 1:1) означает, что одной записи в таблице ТАБ1 соответствует только одна запись в таблице ТАБ2, а одной записи в таблице ТАБ2 соответствует только одна запись в таблице ТАБ1. При связи «один-к- одному» обе таблицы, и ТАБ1 и ТАБ2, имеют одинаковое количество записей и между этими записями установлено взаимнооднозначное соответствие.
Например, одна таблица описывает класс Школы. В ней могут быть помещены такие данные, как номер школы, направление (образовательный уклон), адрес, телефон. Другая таблица описывает класс Директора школ по следующим параметрам: фамилия, имя, отчество, личные данные директора. Поскольку у любой школы может быть только один директор, и любой человек может быть директором только в одной школе, то между такими двумя таблицами имеет место связь «один-к-одному». Связь «один-к-одному» является довольно редким типом связей.
Связь «один-ко-многим» (условное обозначение 1:М) означает, что одной записи в таблице ТАБ1 (конец связи «один») соответствует много записей в таблице ТАБ2 (конец связи «многие»), но одной записи в таблице ТАБ2 соответствует только одна запись в таблице ТАБ1. Таблица со стороны связи «один» называется главной, а таблица со стороны связи «многие» называется подчиненной. Эта связь характерна также тем, что записи в главной таблице могут и не иметь подчиненных записей, но для каждой записи в подчиненной таблице обязательно должна быть запись в главной таблице. Связь «один-ко-многим» является наиболее распространенным типом связей.
Например, пусть таблица Дома содержит сведения об улицах и номерах домов, таблица Квартиры содержит сведения о номере квартиры в доме, количестве комнат, общей жилой площади. Между таблицами Дома и Квартиры имеет место связь «один- ко-многим» — «один» со стороны таблицы Дома, «многие» со стороны таблицы Квартиры. Это так, потому что один дом мо жет содержать много квартир, но любая конкретная квартира находится только в одном доме. Когда описывают связь типа «один-ко-многим», то сначала указывают главную таблицу, а затем подчиненную.
Связь «многие-ко-многим» (условное обозначение М:М) означает, что одной записи в ТАБ1 соответствует много записей в ТАБ2, а одной записи в ТАБ2 соответствует много записей в ТАБ1.
Например, в таблице Остановки содержатся адреса остановок для маршрутов городского транспорта, а в таблице Маршруты — перечень маршрутов. Между этими таблицами установлена связь «многие-ко-многим», так как на одну остановку могут прибывать многие маршруты, и наоборот, каждому маршруту соответствует много остановок.
Графически реляционную модель можно представить, как показано на рис. 4.9. Каждая таблица изображается в виде прямоугольника, в верхней части которого записано название таблицы (класса объектов). Ниже можно указать названия полей. Поля, являющиеся ключом, выделены. Соединительные линии между таблицами обозначают связи. Над связью в конкретной базе данных можно написать ее смысл, а также тип отношения: «один- ко-многим », «многие-ко-многим».
Рис. 4.9. Реляционная модель
Составим реляционную модель для базы данных Песни. Представим сведения о песнях в виде двух взаимосвязанных классов — Исполнители и Песни. Тогда вместо одной таблицы получится две (табл. 4.3, 4.4).
Будем рассматривать такую модель, где каждую песню исполняет только один исполнитель. Тогда можно сказать, что классы Исполнители и Песни связаны отношением «один-ко-многим». Естественно, что в таблице Исполнители будет меньше записей, чем в таблице Песни.
Таблица 4.3. Исполнители
Таблица 4.4. Песни
Если бы мы приняли условие, что каждая песня может быть исполнена несколькими исполнителями, то отношение между таблицами стало бы «многие-ко-многим», и это была бы уже другая модель.
Ключом в таблице Исполнители можно выбрать поле Исполнитель, так как названия исполнителей не повторяются. Это поле текстовое. При проектировании баз данных часто вводят дополнительное поле числового типа, в котором указывают порядковый номер каждой записи в таблице.
Как правило, это поле имеет имя Код <имя объекта>. Это поле вводится в расчете на дальнейшую компьютерную обработку данных. Дело в том, что программной среде «легче» работать с числами, чем с текстом. Порядковые номера не повторяются, поэтому такое поле можно выбрать в качестве ключевого.
Так в таблицу Исполнители можно ввести поле Код исполнителя числового типа, а в таблицу Песни — поле Код песни.
В таблицах, связанных отношением «один-ко-многим», связь между таблицами осуществляется по ключевому полю следующим образом. В таблицу Песни добавляется поле с названием Код исполнителя и для каждой песни в нем указываются соответствующие номера исполнителей. Такой номер, по сути, несет в себе всю информацию об исполнителе, представленную в соответствующей таблице. Это и означает, что связь между таблицами осуществлена по ключу Код исполнителя. Реляционная модель этой базы данных представлена на рис. 4.10.
Рис. 4.10. Реляционная модель базы данных Любимые песни
Возникает закономерный вопрос: зачем нужно было разделять одну таблицу на две? На первый взгляд может показаться, что одна таблица (см. табл. 4.1) удобнее для восприятия информации. Но в такой таблице нам надо было каждый раз полностью указывать название исполнителя и все его характеристики. Поскольку по свойству реляционных таблиц каждая запись (строка) считается независимой от других записей, то такая таблица не отражает в полной мере связь между песнями и исполнителями. Более того, если в какой-то строке вы записали исполнителя с ошибкой, то это будет восприниматься как новое значение. Если же исполнители выделены в отдельную таблицу, то такие операции как удаление или изменение данных можно производить намного легче и быстрее.
Надо заметить, что связь «многие-ко-многим» реализуется другим, более сложным, способом.
Мы познакомились с тремя моделями данных. Реляционная модель является наиболее предпочтительной моделью хранения данных. Большинство компьютерных сред ориентированы на реляционную модель. Иерархическую и сетевую модель можно свести к реляционной.
Мы уже обсуждали, что в этих моделях каждый уровень обозначает один класс объектов. В реляционной модели отдельный класс объектов описывает таблица. Поэтому, чтобы свести иерархическую и сетевую модель к реляционной, надо каждый уровень (класс) описать в виде отдельной таблицы и установить связи между ними.
Рассмотрим пример иерархической модели населенных пунктов планеты Земля (рис. 4.11). В ней выделен корневой уровень — планета Земля, второй уровень обозначает континенты, третий — страны, четвертый — населенные пункты.
Рис. 4.11. Иерархическая модель Планета Земля
Корневой уровень будет служить названием базы данных. Каждый следующий уровень описываем в виде отдельной таблицы. Получаем следующую реляционную модель (рис. 4.12).
Рис. 4.12. Реляционная модель Планета Земля
Между таблицами установлены связи типа «один-ко-многим». Связь со стороны «один» относится к таблице, описывающей верхний уровень, связи со стороны «многие» относится к таблице, описывающей подчиненный уровень.
Для сетевой модели Увлечения подростков (рис. 4.13) каждый уровень также оформляем в виде отдельной таблицы. Между таблицами установлена связь «многие-ко-многим».
Рис. 4.13. Реляционная модель Увлечения подростков
1. Что такое модель данных и для чего она нужна?
2. Приведите определение информационной модели и сопоставьте его с определением модели данных. Найдите у них общие и различающиеся характеристики.
3. Какие вы знаете формы представления информационной модели? Сравните их и сделайте вывод о том, когда лучше использовать ту или иную форму представления.
4. Приведите примеры моделей данных для разных предметных областей.
5. Что представляет собой иерархическая модель данных в общем виде?
6. Что такое узел иерархической модели данных?
7. В чем состоят свойства иерархической модели данных?
8. Приведите примеры иерархических моделей данных.
9. Что представляет собой сетевая модель данных в общем виде?
10. В чем состоят свойства сетевой модели данных?
11. Приведите примеры сетевых моделей данных.
12. Что представляет собой реляционная модель данных в общем виде?
13. Как вы понимаете связь между информационными объектами 1:1? Приведите примеры такого типа связей.
14. Как вы понимаете связь между информационными объектами 1:М? Приведите примеры этого типа связей.
15. Как вы понимаете связь между информационными объектами М:М? Приведите примеры данного типа связей.
16. В чем состоят свойства реляционной модели данных?
17. Приведите примеры реляционных моделей данных.
18. Как графически отображается реляционная модель данных?
19. Приведите примеры преобразования иерархической модели в реляционную.
20. Приведите примеры преобразования сетевой модели в реляционную.