Шаг 4 - Связь между таблицами

Примеры простейших баз данных, приведенные во втором шаге, на самом деле не совсем базы, а всего лишь таблицы с данными, отформатированными определенным образом. Если бы вся необходимая информация могла храниться в таких простых структурах, то необходимость создания специальных СУБД просто отпала. На практике, при накоплении информации приходится иметь дело с намного более сложными структурами, в состав которых входят не одна, а множество связанных между собой таблиц. Такие базы, содержащие связанные таблицы, еще называют реляционными базами данных.

Рассмотрим базу данных частного магазина, занимающегося продажей книг. Для того чтобы знать, какие книги есть в наличии, какие доставлены на склад, какие заказаны в издательстве и уже отправлены, а какие еще только печатаются в типографии - магазину нужна база данных. Конечно, можно завести 5-6 толстых тетрадей и записывать все это туда, но значительно проще предоставить эту функцию компьютеру менеджера магазина.

Все эти данные можно хранить в одной таблице, но в таком случае таблица станет очень громоздкой и неудобной для работы. В ней могут появится повторы данных, возникающие всякий раз, как будет поступать в продажу книга одного автора, но с разными названиями. Ведь Ф.И.О. автора не меняется, меняется только название книги или например название издательства, перекупившего права на эту книгу. Поэтому значительно удобнее сделать несколько таблиц.

В одной хранить сведения про авторов и индивидуальный код автора (например, цифровой порядковый номер).

4_1.gif (3916 b)

В другой код книги, название, раздел, год издания, издательство и цену.

4_2.gif (4976 b)

В третьей наличие книги в магазине, на складе и необходимость заказа новой партии.

4_3.gif (4856 b)

После этого отдельные поля созданных таблиц связывают. Если в таблице Автор указан Айзек Азимов, то система управления базой данных мгновенно найдет в таблице Книги все внесенные туда произведения этого автора, с указанием издательства, года издания и цены, а в таблице Наличие сведения про количество книг в магазине и на складе, а также позволит отметить необходимость заказа новой партии. Правильно заданные связи позволяют работать с разными таблицами, как с одной цельной базой данных. Так при заполнении таблицы Наличие, информацию в поля Автор и Книга, можно вносить автоматически, выбирая значения из списков, уже сформированных таблицей Автор и таблицей Книги. На самом деле в таблице Наличие будут хранится только код автора и код книги (эти поля числовые, а не текстовые), пользователю же отображается вся связанная с этими кодами информация, взятая из соответствующих таблиц.

Следует отметить, что доступ к некоторым таблицам может быть ограничен. Если у продавца есть терминал, то он может получить доступ к информации про авторов, названия книг и их наличие. При необходимости он может заполнить заказ на востребованную покупателем книгу. Но к информации про оплату заказов, количество проданного товара, планируемые объемы закупок - доступ запрещен. Это финансовая информация и она доступна главному бухгалтеру и директору, но не продавцу. Продав книгу, продавец фиксирует факт продажи, уменьшая показатель наличия. В то время как поступившие на склад с новой партией книги, будут добавлены к уже имеющимся и увеличат этот показатель.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Урсатий Владимир - 27.11.2002