Информационные системы менеджмента - Бажин И.И
..pdfГлава 11. Организация информационных потоков в базах данных 491
Определение в базе данных связей между таблицами
После создания различных таблиц, содержащих данные, относящиеся к раз личным аспектам базы данных, разработчик должен продумать, каким образом Microsoft Access будет объединять эти данные при их извлечении из базы дан ных. Первым шагом при этом является определение связей между таблицами.
После этого становится возможным соз дание запросов, форм и отчетов, в кото рых выводятся данные из нескольких таблиц сразу. Ниже приводится пример многотабличной формы.
Как работает связь между таблицами?
Связь между таблицами устанавливает отношения между совпадающими значе ниями в ключевых полях - обычно между полями разных таблиц, имеющими одина ковые имена. В большинстве случаев с "ключом" одной таблицы, являющимся
10022: LAMAI уникальным идентификатором каждой за писи, связывается "внешний ключ" другой
таблицы. Например, для сопоставления сведений о сотрудниках и о принятых ими заказах следует определить связь по по
лям "КодСотрудника" в двух таблицах (рис.11.4). Ключевые поля дают возмож ность установить связи между несколькими таблицами (рис.11.5).
|
-Таблица "Сотрудники' |
|
|
|
|||
|
i—Таблица "Клиенты" |
JZТаблица "Заказы" |
|||||
Е»Б Заказы |
|
|
|
а П о пучатель: Maison Dewey |
|||
< оплате!лшшЕгшв |
|
||||||
Rue J* seph-Bens 532 |
|
|
|
Rue Joseph-Bens 53 |
|||
Брюсе ель |
Бельгия |
_J |
|
ЁИ!?.,??в.я^З С |
|
||
|
|
|
|
|
|||
Продавец: |
Buchanan. Steven |
| т | |
|
|
|
||
К о д з а к а з а : | 1 0 5 2 9 j |
Р а з м е щ е н : |
2 1 - М а р - 9 3 |
Н а з н а ч е н о : 28-Апр-ОЗ |
|
|||
К о д т о в |
|
Т о в а р : |
|
|
Ц е н а : |
К о л и ч е с т в : С к и д к а |
|
55 |
Pate c h i n o i s |
|
|
$ 24 . 00 |
14 |
0.00% |
|
68 |
Scottish |
Longbreads |
|
|
$ 12 . 50 |
"20" |
О.ОО'Х. |
69 |
Gudbrandsdal sost |
|
|
$36.00 |
|
и.ии-х. |
|
№__\ |
|
|
У |
|
|
|
^L. |
|
|
|
|
|
|
|
|
|
|
блица |
" Т о в а р ы ' |
блица |
|||
"Заказано"
Рис.11.5.
Глава 11. Организация информационных потоков в базах данных |
493 |
|||||||||
Отношение "один-к-одному" |
|
|
|
|
|
|
|
|||
При отношении "один-к-одному" запись в таблице |
А" может иметь не более од |
|||||||||
|
|
|
ной связанной записи в таб |
|||||||
И Сотрудни»»*; таблица |
|
лице "В", и наоборот. Этот тип |
||||||||
сотруд^ |
Фамилий |
имя |
связи |
используют |
не |
очень |
||||
-1 |
Davoho |
Nancy |
часто, поскольку такие данные |
|||||||
2 |
Fuller |
Andrew |
могут быть помещены в одну |
|||||||
3 |
Levelling |
Janet |
таблицу. Связь с отношением |
|||||||
4 |
Peacock |
Margaret |
||||||||
"один-к-одному" |
используют |
|||||||||
5 |
Buchanan |
: Steven |
||||||||
Каждый футболист имеет по |
для |
разделения очень |
широ |
|||||||
ких |
таблиц, для |
отделения |
||||||||
одной соответствующей записи |
||||||||||
в таблице "Сотрудники". |
части |
таблицы по |
соображе |
|||||||
Футболисты : таблица |
|
ниям защиты, а также для со |
||||||||
|
хранения |
сведений, |
относя |
|||||||
Код ™><тщ1розвище игрока Уровень |
||||||||||
щихся |
к |
подмножеству |
запи |
|||||||
\JEL. |
Ас |
|
сей в главной таблице. На |
|||||||
3 |
Бочка |
|
||||||||
5 |
Крюк |
|
пример, такой тип связей ме |
|||||||
•—Этот набор значений является поднабором |
жду таблицами подходит для |
|||||||||
сохранения сведений |
об уча |
|||||||||
поля КодСотрудника таблицы "Сотрудники". |
||||||||||
|
Рис.11.8. |
стии |
сотрудников |
в |
спортив |
|||||
|
ных мероприятиях. |
|
|
|
||||||
|
|
|
|
|
|
|||||
Для того чтобы создать связь между таблицами, следует добавить таблицы в окно Схема данных и перенести с помощью мыши ключевое поле одной таб лицы в другую таблицу (рис.11.9).
Тип создаваемой связи зависит от
— Перетащите поле из одной таблицы |
|
полей, для которых определяется |
||||||
в соответствующее поле другой таблицы. |
связь. |
|
|
|
|
|||
|
|
|
|
|
|
|
||
[Сотрудники |
|
|
• |
Отношение |
"один-ко-многим" |
|||
|
|
|
создается в том случае, когда |
|||||
JKuilCuiuwlH |
Кодзэказа |
|
|
|||||
|
|
только одно из полей является |
||||||
Фамилия |
|
|
||||||
КодКлиента |
|
|
ключевым или имеет уникаль |
|||||
Имя |
twnCoTPvaHw |
|
|
|||||
|
|
ный индекс. |
|
|
|
|||
|
|
|
|
|
|
|
||
Ключ из таблицы |
г- Линия связи определяет |
• |
Отношение |
"один-к-одному" |
||||
"Сотрудники" |
отношение один-ко-многим |
|
создается в том случае, когда |
|||||
|
if||p&!|ljl |
|
|
оба |
связываемых |
поля |
явля |
|
|
|
|
ются |
ключевыми |
или |
имеют |
||
—Ц КодСотрудн |
КодЗаказа |
|
|
уникальные индексы. |
|
|||
|
• |
Связь с отношением "многие- |
||||||
Фамилия |
Код Клиента |
|
||||||
Имя |
КодСотрудник |
|
|
ко-многим" фактически являет |
||||
|
|
|
|
ся двумя связями с отношени |
||||
Соответствующее поле таблицы "Заказы" |
' |
|
ем "один-ко-многим" через тре |
|||||
|
Рис.11.9. |
|
|
тью таблицу, ключ которой со |
||||
|
|
|
|
стоит из, по крайней мере, двух |
||||
полей, которые являются полями внешнего ключа в двух других таблицах.
494 Часть 2. Практика новых технологий менеджмента
Примечание. Если перенести с помощью мыши поле, не являющееся ключе вым или не имеющее уникального индекса, создается неопределенное отноше ние. В запросах, содержащих таблицы с неопределенным отношением, Micro soft Access по умолчанию создает линию объединения между таблицами, но условия целостности данных при этом не накладываются, и нет гарантии уни кальности записей в любой из таблиц.
Уникальный индекс - индекс, определенный для поля с заданными свой ствами "Индексированное поле" (Indexed) значением "Да (Совпадения не допус каются)". При этом ввод в индексированное поле повторяющихся значений ста новится невозможным. Для ключевых полей уникальный индекс создается ав томатически.
Внешний ключ - это одно или несколько полей в таблице, содержащих ссылку на ключевое поле или поля в другой таблице. Поле внешнего ключа оп ределяет способ связывания таблиц, содержимое поля внешнего ключа должно совпадать с содержимым ключевого поля. Например, таблица "Товары" содер жит поле внешнего ключа "Поставщик", которое ссылается на ключевое поле "Поставщик" в таблице "Поставщики". С помощью данной связи в таблице "Товары" для каждого товара выводится имя поставщика из таблицы "Поставщики".
Целостность данных - это правила, обеспечивающие поддержание уста новленных межтабличных связей при вводе и удалении записей. Если наложе ны условия целостности данных, Microsoft Access не позволит добавлять в связанную таблицу записи, для которых нет соответствующих записей в главной таблице; изменять записи в главной таблице так, что после этого в связанной таблице появятся записи, не имеющие главных связей; удалять записи в глав ной таблице, для которых имеются подчиненные записи в связанной таблице.
11.3. СОЗДАНИЕ ЗАПРОСА
Запросы представляют собой средства для извлечения информации из ба зы данных, отвечающей некоторым критериям, задаваемым пользователем. В результатах запроса приводятся не все записи из таблицы, а только те, которые удовлетворяют запросу. С помощью запроса можно определить условие, опи сывающее включаемое подмножество записей; при выполнении запроса Access отображает в режиме таблицы только удовлетворяющее этому условию запи си.
Запросы могут быть простыми - например, можно вывести все записи, в ко торых цена книги превышает 70 руб., - или сложными, в которых производится ряд последовательных сравнений содержимого полей и учитываются альтерна тивные условия. Так, в результате запроса могут быть найдены записи о книгах в мягкой обложке, купленных за последние 2 года, и книгах в жесткой обложке, купленных за последние 5 лет.
В основе любого запроса лежит бланк запроса, в строках и столбцах кото рого вводятся используемые поля и условия.
Глава 11. Организация информационных потоков в базах данных 495
С помощью запросов можно просматривать, анализировать и изменять данные из нескольких таблиц. Они также используются в качестве источника данных для форм и отчетов. Например, запросы позволяют:
Показать данные из многих таблиц и отсортировать их в нужном |
|
|
|
|||||
порядке. |
|
|
|
|
|
Выполнить вычисления |
||
Запрос: на выбору Товары и поставщики |
|
|
над данными из группы |
|||||
|
|
записей. |
|
|||||
Марка |
I |
Поставщик |
Телефон |
|
|
|||
|
|
1 |
|
|||||
Анисовый сироп |
ТОО "Пряности" |
|
|
|
|
|||
Запрос на выборку: Выработка сотрудников |
|
|||||||
Ветчина |
|
Завод "Сапфир" |
|
Сумма заказов |
Общий объем |
|||
Зефир |
|
Фабрика "Сластена" |
|
|
125 |
197 110 840 р |
||
|
|
|
|
|
|
|||
Икра |
ТОО "Пряности" |
^ w , „ r . f ; 4 |
|
53: |
86737 |
340р |
||
Крабы |
|
АО "Далиры( |
|
|
||||
|
Перекрестный запрос: Распределение заказов по |
|
||||||
|
|
|
|
|||||
Вычислять итоговые |
Категория |
Квартал 1 |
Квартал 2 |
Квартал 3 I |
||||
значения и выводить их в |
Кондитерские изделия |
7 696 110 р |
26 942 160 р! 13 800 180 р'3' |
|||||
компактном Формате, |
Молочные продукты |
2 666 220 pi |
5 449 500 р |
5 988 400 р 1- |
||||
подобном формату |
||||||||
электронной таблицы. |
Мясо/птица |
7 737 140 р |
6 175 750 р; 17 118 930 р.1! |
|||||
|
|
|
Напитки |
|
13 665 870 р| 10 494 940 р; 15 921 140 р 2i |
|||
|
|
|
Приправы |
|
11624 000 р; |
9 160 840 р' |
3 685 070 р Т |
|
Наиболее часто используется запрос на выборку. При его выполнении данные, удовлетворяющие условиям отбора, выбираются из одной или нескольких таблиц и выводятся
вопределенном порядке.
Впроцессе выполнения запроса выбираются
требуемые данные.. |
-- |
- -— — |
|
~\0" Организация |
|
J ^ |
Телефон |
|||
|
|
|
|
|||||||
|
W |
|
/ |
• |
АО "Восток" |
|
f |
(514) 5-55-222 |
||
... затем они |
Марка |
Ж |
АО "Дальрыба" |
|
Ж |
(514) 5-55-955 |
||||
X |
|
|
Ж |
|
|
/ |
||||
объединяется |
f |
Анисовый сироп |
// |
|
Завод "Сапфир" |
|
| / |
5-552-222 |
||
указанным |
§ |
Ветчина |
1 |
|
„ |
.,„•„ |
/ |
/ |
5-55&Э14 |
|
способом и |
/ |
|
|
/ |
|
-Пивзавод №17 |
|
|||
|
|
|
|
|
|
|
|
4-442-343 |
||
выводятся в |
/ |
.?*И Р |
I |
|
j ТО О "Пряности" |
1 |
||||
виде таблицы. |
\ |
|
|
I |
|
1 Фабрика "Сластена" |
J |
|
5-553-267 |
|
|
|
.Jfeafiu |
1 |
„ -.L—L.-J- |
-:-:..:.:..::::.jL--LLLL-- |
(503)5-55-931 |
||||
Запрос н =» выборку: Товары и поставщики |
|
|
||||||||
|
Г (103)4-44-343 |
|||||||||
Марка |
|
Организация |
|
Телефон |
|
|
|
|||
Анисовый сироп |
|
ТОО "Пряности" |
|
|
4-442-343 |
|
||||
Ветчина |
|
|
Завод "Сапфир" |
|
|
5-552-222 |
|
|||
Зефир |
|
|
Фабрика "Сластена" |
5-553-267 |
|
|||||
Икра |
|
|
TOO "Пряности" |
|
|
4-442-343 |
|
|||
500 Часть 2. Практика новых технологий менеджмента
Использование условий отбора в запросах или расширенных
фильтрах для загрузки конкретных записей
Условиями отбора называют ограничения, которые накладываются на за прос или фильтр для отбора конкретных записей. Например, требуются сведения не обо всех поставщиках, работающих с фирмой, а только с поставщиками из Ук
|
|
|
|
раины. Для |
этого |
сле |
||||
Поле:КодЗаказеДатаИсполнения НазваниеПолучателя |
дует |
указать |
условия |
|||||||
Имя таблицы: Заказы |
Заказы |
Заказы |
отбора, |
которые позво |
||||||
Сортировка: |
И |
И |
И |
ляют включать в набор |
||||||
Вывод на экран: |
записей только те, у ко |
|||||||||
Условие отбора: |
|
#04.07.Э5# |
; "QUICK-Stop" |
торых |
в |
поле |
"страна" |
|||
Отбор заказов компании |
Г |
|||||||||
находится |
|
значение |
||||||||
|
QUICK-Stop за 04.07.95 |
- I |
|
|||||||
|
|
Рис.11.14. |
|
"Украина". |
Для |
того |
||||
|
|
|
чтобы |
задать |
в бланке |
|||||
|
|
|
|
|||||||
|
|
|
|
условие |
отбора |
для |
||||
конкретного поля, нужно ввести выражение в ячейку строки "Условие отбора" для этого поля (рис.11.14). В предыдущем примере таким выражением является строка "Украина".
Выражение - это любая комбинация операторов, имен констант, констант в явном представлении, функций и имен полей, элементов управления или свойств, результатом которой является конкретное значение. С помощью выра жений определяются условия отбора и вычисляемые поля в запросах. Допуска ется использование более сложных выражений, например, Betwen 1000 And
5000.
Можно одновременно определить несколько условий отбора для одного по ля или для разных полей. При вводе выражений в несколько ячеек "Условие отбора" Microsoft Access объединяет их с помощью оператора And или Or. Если выражения находятся в разных строках бланка, применяется оператор Or.
Запрос на выборку
Это запрос, в котором формулируются условия отбора данных, сохраняемых в таблицах, и возвращается отбор записей, удовлетворяющий указанным усло виям, без изменения возвращаемых данных. После вывода результатов запроса на экран становится возможным их просмотр, а в некоторых случаях изменение данных в базовых таблицах. В отличие от этого, в запросах на изменение проис ходит изменение данных.
Сходство и различие между запросами на выборку и фильтрами
Сходство между запросами на выборку и фильтрами состоит в том, что в них проводится поиск и извлечение подмножества записей из базовой таблицы или запроса. Выбор применения фильтра или запроса зависит от того, как предпола гается использовать отобранные записи.
Фильтр обычно используют при работе в режиме формы или в режиме таб лицы для просмотра изменения подмножества записей. Запрос следует исполь зовать для выполнения следующих действий:
