Основы работы в Dreamweaver



           

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


На этот раз таблица клиентов будет выглядеть следующим образом:

cust_ID F_name l_name str_addcitystate/provpostalcredit_card

Таблица операций будет выглядеть так:

transaction_IDcust_IDsubtotal tax total

Обе таблицы содержат поле cust_ID. В таблице клиентов поле cust_ID включает уникальные идентификаторы, называемые также первичными ключами (primary key). У каждой записи в таблице всегда существует свой идентификатор, который не повторяется. В таблице могут оказаться два клиента с одним именем, например, Джон Смит, или два одинаковых почтовых индекса 90210. Но благодаря тому, что каждой строке присваивается первичный ключ cust_ID, в таблице обеспечен порядок, предполагающий корректное обновление, удаление и добавление данных.

В таблице покупок одно и то же значение cust_ID, напротив, может повторяться больше одного раза — в зависимости от того, сколько покупок совершил тот или иной клиент. Когда первичный ключ одной таблицы применяется в качестве поля другой, он называется внешним ключом (foreign key). При использовании внешних ключей между таблицами образуются связи (relationships). Они позволяют избавиться от избыточной (дублирующей) информации и сохранить целостность данных.

Примечание. В приведенном примере таблицы являются достаточно простыми. Например, в порядке вещей будет использование третьей таблицы для хранения информации о товаре (инвентарная таблица) с полем product_ID, добавленным в таблицу покупок в качестве внешнего ключа. Помимо этого, в примере подразумевается, что клиент пользуется только одной кредитной картой. Для подгонки базы данных под все эти требования добавляются новые таблицы, поля и связи.

На приведенном ниже рисунке показана взаимосвязь между двумя таблицами, описанными в этом примере. Линия между таблицами обозначает существование между ними связи. Число 1, расположенное слева, означает, что в таблице tbl_customers параметр cust_ID является уникальным, а знак бесконечности, находящийся справа, указывает, что в таблице tbl_transactions одно и то же значение параметра cust_ID может повторяться сколько угодно. Это взаимосвязь относится к типу связи с отношением "один-ко-многим".


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

Совет. Файл с приведенным примером базы данных можно найти на компакт-диске в папке Lesson08/Start/transaction.mdb. Файл сохранен в формате Microsoft Access.




Содержание  Назад  Вперед