Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практикум БД_в_ред_11_сокр

.pdf
Скачиваний:
56
Добавлен:
08.04.2015
Размер:
4.46 Mб
Скачать

ТАБЛИЦЫ – объекты хранения данных

Теория. Сведения о представителях (экземплярах) каждой сущности из выбранной предметной области в БД записываются в отдельную таблицу – основной объект хранения структурированной, типизированной информации определенного размера. При работе с данными из нескольких таблиц устанавливаются связи между таблицами на основе специальных ключевых полей: первичного и внешнего ключа.

Упр. 2. Создание таблиц

Постройте в режиме «Конструктор» БД, состоящую из совокупности трех таблиц «Сотрудники», «Должности», «Отделы», используя результат деления информации на части (Задание 3).

Порядок выполнения упражнения

1.Загрузите программу MS Access.

2.Создайте новую БД.

3.Сохраните файл БД с именем «Кадры.mdb» в свою рабочую папку.

4.Создайте последовательно три таблицы: «Сотрудники», «Должности», «Отделы».

5.В режиме КОНСТРУКТОР для каждой новой таблицы определите основные свойства полей (см. Задание 3): имя поля , тип данных , размер поля (см. иллюстрацию на следующей странице).

6.Определите в каждой таблице специальным символом поле первичного ключа (контекстное меню – > Ключевое поле).

21

7.Для числовых значений в полях [Пол] и [Семейное положение] создайте кодификаторы (справочники) соответствия чисел и их текстового описания. Например, 0–«Не семейный», 1–«Семейный», 2–«В разводе» и т.д.

22

 

 

 

Задача «Расписание»

 

Проанализируйте информацию о расписании. Ответьте на вопрос: «Эта таблица отве-

чает требованиям таблицы-отношения?» Составьте структуру новой таблицы-отношения по

аналогии с решением в Задании 2, не производя нормализацию.

 

 

 

 

РАСПИСАНИЕ

 

занятий для студентов 1 курса очной формы обучения юридического

 

 

факультета (2006/2007 учебный год) Ауд. 310

1 сентября

9.00-10.20

История отечественного государства и права – лекция

10.35-11.55

проф. Яковлев Л.С.

пятница

12.25-13.45

Теория государства и права – лекция

 

 

 

 

14.05-15.25

проф. Оксамытный В.В.

 

 

9.00-10.20

Математика – лекция

 

 

 

проф. Усков Л.Ф.

4 сентября

10.35-11.55

Теория государства и права – лекция

понедельник

12.25-13.45

проф. Оксамытный В.В.

 

 

14.05-15.25

История отечественного государства и права – лекция

 

 

15.35-16.55

проф. Яковлев Л.С.

Построение таблицы «Расписание»

 

Ключ

Имя поля

Тип поля

Размер

 

 

 

 

23

Контрольные вопросы:

1.Что такое ИС? Примеры ИС.

2.Для чего предназначены БД?

3.Какие существуют модели хранения данных?

4.Что такое НОРМАЛИЗАЦИЯ и что является ее результатом?

5.Основное предназначение СУБД. Объекты СУБД.

6.Основные свойства полей таблиц.

7.Какие типы данных могут использоваться для построения таблиц?

8.Какие типы данных предназначены для числовой информации?

9.Какие типы данных предназначены для текстовой информации?

10.Какие виды чисел можно хранить с помощью числового типа?

11.Какие размеры существуют для целых чисел?

12.Какой тип данных подходит для поля [Почтовый индекс]=123411?

13.Какой тип данных подходит для поля [Площадь квартиры]=104,4 кв.м.?

14.Зачем необходим денежный тип данных, если имеется числовой?

15.Что такое ключевое поле? Какие бывают ключи в таблицах?

16.Почему в качестве ключа часто используются значения «Счетчика»?

17.Какое поле не может стать ключевым?

24

CВЯЗИ между таблицами

Связь «Один-ко-многим»

Теория. Обратимся к результату выполнения упр. 2. Теперь, чтобы обозначить принадлежность сотрудника отделу и занимаемую им должность, нужно указать соответствующие значения первичных ключей [Код_Отдела] и [Код_Должности] во внешних ключах таблицы «Сотрудники». Используя значения внешних ключей, можно получить всю недостающую информацию (например, об окладе или рабочем телефоне) из соответствующих таблиц «Должности» и «Отделы».

Возникает вопрос: как показать СУБД, что значения для внешнего ключа [Код_Отдела] нужно искать в таблице «Отделы». Для правильной работы этого механизма необходимо построить Схему данных, отображающую взаимосвязи между таблицами, т.е. установить СВЯЗЬ между внешним ключом [Код_Отдела] в таблице «Сотрудники» и первичным ключом [КодОтдела] в таблице «Отделы». При этом, очевидно, что единственному, уникальному значению из ключевого поля [КодОтдела] в таблице «Отделы» может соответствовать много записей с этим же значением в таблице «Сотрудники». Другими словами выполняется условие: в одном отделе работает много сотрудников. То же самое относится и к должности: одну должность имеют разные сотрудники из разных отделов. Такой тип связи называется «Один-ко-многим» (1 ).

Дополнительно можно «поручить» СУБД поддерживать целостность такой связи. Это означает, что СУБД будет следить за значением внешнего ключа при создании или измене-

25

нии любой записи в таблице, находящейся на стороне связи «-ко-многим», и проверять, есть ли запись в таблице на стороне «Один-» с таким значением первичного ключа. Если нет, то СУБД не позволит создать/изменить такую запись.

Например, нельзя сделать запись о новом сотруднике [Фамилия]=”Волков” в таблице «Сотрудники» с назначением на [Должность]=”Главный бухгалтер” в новый [Отдел]=”Бухгалтерия”, до тех пор, пока еще нет соответствующих записей в таблицах «Должности» и «Отделы». Аналогично, нельзя удалить запись о некотором отделе в таблице «Отделы», если в таблице «Сотрудники» есть записи о сотрудниках, работающих в данном отделе.

Связь «Многие-ко-многим»

Теория. Если посмотреть на пример из упр. 2 с другой стороны, то между таблицей «Должности» и таблицей «Отделы»возникаетсвязь «Многие-ко-многим»( ).Онареализует условие,чтомногосотрудниковс одной должностью могут работать в разных отделах. И, наоборот: в одном отделе могут работать сотрудники с разными должностями. Реляционная СУБД не может обеспечить целостную связь типа «Многие-ко-многим» между двумя таблицами. Для этого ей необходима третья таблица, в которой будут установлены две связи типа «Один-ко- многим» (1 ).Например,внашемслучаетакойтретьейтаблицейявляетсятаблица«Сотрудники».

Связь «Один-к-одному»

Теория. Если собрать дополнительные сведения у сотрудников (например, об образовании, увлечениях и т.д.), то для них можно создать дополнительную таблицу со связью «один-к-одному» (1 1) на основе первичного ключа [КодСотрудника].

26

Упр. 3. Создание связей

Определите и установите связи между таблицами так, чтобы информация в БД отвечала всем требованиям нормализации.

Порядок выполнения задания

1.Закройте все открытые таблицы или конструкторы таблиц, так как создавать или изменять связи между открытыми таблицами нельзя.

2.На панели инструментов нажмите кнопку «Схема данных» .

3.Если в БД до этого никаких связей не определялось, автоматически будет открыто диалоговое окно Добавление таблицы. Если нужно добавить таблицы для создания связей, а диалогового окна Добавление таблицы на экране нет, выберите пункт «Добавить таблицу таб-

лицу» контекстного меню. Если таблицы, между которыми нужно создать связь, уже отображены, перейдите к шагу 5.

4. Дважды щелкните имена таблиц, для которых требуется определить связи. Затем закройте диалоговое окно Добавление таблицы. Повторно добавленные таблицы можно скрыть. Для этого необходимо указать на них курсором и, вызвав контекстное меню правой клавишей мыши, выбрать команду Скрыть.

Смотрите иллюстрацию на следующей странице.

27

5. Выберите ключевое поле таблицы «Отделы» со стороны «Один-» создаваемой связи и перетащите его, удерживая нажатой левую клавишу мыши, совместив с именем поля нужного

внешнего ключа в

таблице «Сотрудники» со стороны «-ко- многим».

В диалоговом окне Изменение связей установите флажок только для пункта Обеспечение целостности данных.

Смотрите иллюстрацию на следующей странице.

28

6. Самостоятельно определите связь для оставшейся пары таблиц «Должности» и «Сотрудники».

В итоге Схема данных должна выглядеть как на рисунке.

29

Контрольные вопросы:

1.Что определяет связь «Один-ко-многим»?

2.Что определяет связь «Многие-ко-многим»?

3.Как реализуется связь «Многие-ко-многим» в реляционной БД?

4.Если таблицы А и В, имеющие связь типа «Многие-ко-многим», связываются через таблицу С, то на стороне каких таблиц будет стоять «один», и каких – «многие»?

5.Придумайте пример БД, в которой таблицы А и В имеют связь «Один-ко-многим», и пара таблиц В и С также имеют связь «Один-ко-многим».

6.Придумайте пример БД, в которой таблицы А и В имеют связь«Один-ко-многим», а пара таблиц A и С имеют связь «Многие-ко-многим».

7.Что такое связь «Один-к-одному»?

8.С какой целью может использоваться связь «Один-к-одному»?

9.Как создать связь между таблицами в MS Access?

10.Может ли таблица быть связана сама с собой?

11.Как можно изменить и удалить связь в MS Access?

12.Зачем используется свойство «Обеспечение целостности данных»?

13.Как работает каскадное обновление связанных полей?

14.Как работает каскадное удаление связанных полей?

30