В реляционных БД связи между таблицами могут быть трех типов:
1. В случае таблиц «Жители» и «Машины» одному значению ключа «ФИО» главной таблицы может соответствовать более одного значения внешнего ключа, так как один человек может владеть более чем одной машиной. В общем случае: если значению ключа главной таблицы может соответствовать одно, несколько или ни одного значения внешнего ключа, то такая связь между таблицами называется связью «Один–ко–многим». Такая связь возможна, когда поле связи является ключом только в главной таблице.
2. Связь «Один-к-Одному» можно установить, если поля связи в обеих таблицах являются ключами. Как следует из раздела «Таблицы реляционной БД», каждое значение ключа может встречаться в записях только один раз. Поэтому при связи по ключевым полям каждой записи в одной таблице может найтись только одна соответствующая запись или ее не найдется. Такой тип связи называется связью «Один-к-Одному». Разберем этот тип связи подробнее на примере. Предположим, что в Красноярске проведен выборочный социологический опрос (опрошены не все жители). В результате появилась таблица «Опрос» (рисунок 5). Пусть поля «ФИО» выбраны полями связи для таблиц «Жители» и «Опрос». Число опрошенных меньше числа жителей, поэтому каждой записи в таблице «Жители» будет соответствовать одна запись в «Опросе» или ни одной. Для записи в «Опросе» также всегда найдется одна соответствующая запись в «Жители». (Отметим, что удаление записи из «Жители» требует удаления записи из «Опроса». Потому таблица «Жители» при связи по полю «ФИО» является главной. Однако, при задании рассматриваемого типа связи это не существенно.)
3. Еще один тип связи «Многие-ко-Многим» между двумя таблицами осуществляется с помощью третьей, «промежуточной» таблицы. Этот, более сложный, вид связи мы не рассматриваем. Используйте «Справку» Access для получения сведений на эту тему: вызовите «Справку», введите в текстовое поле «Мастера ответов» текст «Связи между таблицами».
ФИО
адрес
возраст
За/Против
…………………….
…………..
Кулев Иван Иваныч
Рис. 5. Таблица «Опрос»
*
С помощью СУБД Access можно создать БД, состоящую из таблиц «Жители», «Машины» и «Опрос». Если задать описанные выше, в пунктах 1 и 2, два типа связи, то они изобразятся в окне «Схема данных» как это показано на рисунке 6.
Рис. 6
Контрольные вопросы
В БД созданы две, приведенные ниже таблицы.
1. Дайте определение ключа таблицы. Что является ключом в первой таблице? Какого типа этот ключ?
2. Что нужно взять за поле связи для приведенных таблиц? Какого типа будет связь? Какая из таблиц будет главной и почему?
фамилия
имя
телефон
………….
…………
33-23-16
Кулев
Петр
33-23-00
…………..
………
фамилия
имя
вид услуг
разряд
Кулев
Петр
сантехника
Сомов
Денис
монтаж окон
………
…
…
2.3. Работа с СУБД. Запросы
В качестве начального уровня освоения СУБД могут рассматриваться следующие операции:
1) создание и редактирование таблиц,
2) создание и редактирование связей между таблицами,
3) обмен таблицами с Excel,
4) сортировка данных в таблицах,
5) создание запросов,
6) перенос таблиц в WORD.
Один из основных объектов СУБД является запрос.
Запрос – это указание (инструкция), согласно которому СУБД должна выполнить определенные операции или с данными БД (выполнить манипулирование данными), или с самой БД (определение данных) [5]. Один из видов запроса на манипулирование данными – запрос на выборку: согласно критериям, которые заданы пользователем в запросе, из таблиц БД отбираются записи. Результатом запроса на выборку является определенная таблица (будем называть ее «таблица-результат»). Если отбираемые данные находятся в разных таблицах, то записи в таблице-результате будут получаться объединением записей, соответствующих друг другу (см. выше раздел «Связи между таблицами»). Подробнее запросы на выборку рассмотрены в разделе 3.5.
Другие виды манипулирования данными – это удаление отобранных записей, добавление записей и так далее. Все операции по манипулированию данными могут производиться не только над таблицами БД, но и над таблицами-результатами, полученными с помощью запросов.
При помощи запросов на определениеданных можно изменять БД целиком или ее объекты: таблицы, другие запросы и так далее.
Запросы создаются на языке SQL (Structured Query Language). Это простой язык, который «понимают» все современные СУБД. Приведем пример запроса на том варианте языка SQL, который используется в Access. А именно, пусть требуется из таблицы «Жители» вывести ФИО и место работы лиц с возрастом от 20 до 70 лет. Запрос выглядит так:
SELECT жители.ФИО, жители.[место работы]
FROM жители
WHERE (((жители.возраст)>20 And (жители.возраст)<70));
Дадим некоторые пояснения:
– SELECT означает «выбрать». В данном случае выбирается таблица (для работы с ней). Далее в строке в квадратных скобках выписываются неключевые поля;
– FROM означает «из»;
– стоящий в третьей строчке логический оператор And означает, что одновременно должны быть выполнены условия [возраст]>20 И [возраст])<70.
При работе с СУБД Access многие виды запросов создаются с помощью окна «Конструктор», то есть с помощью заполнения бланков и выбора в меню. Знания SQL при этом не требуется. (При создании запроса с помощью «Конструктора» Access одновременно создает соответствующую инструкцию на языке SQL. и ее можно и посмотреть, и отредактировать: в режиме «Конструктора» открыть список-меню кнопки «Вид» и выбрать «SQL».)
2.4. Проектирование БД
Проектирование БД – это «докомпьютерный» этап работы. На практике таблицы и система связей между ними могут быть достаточно сложными. Возможные варианты БД проще разобрать сначала на бумаге. Два последующих подраздела касаются этого этапа работы.