logo
Что такое Access

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

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

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

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

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

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

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

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

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