Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД_ЛР.doc
Скачиваний:
10
Добавлен:
09.02.2015
Размер:
3.1 Mб
Скачать

Порядок выполнения работы.

Запустите Access. Для этого нажмите на кнопку Пуск в левом нижнем углу экрана и из меню Программы выберите строку Microsoft Access. Оказавшись в прикладном окне Access, выберите индикатор Новая база данных и нажмите ОК. В диалоговом окне создания БД выполните следующие действия:

  • Создайте на своем рабочем диске папку с именем ACS и перейдите в нее.

  • Замените предложенное системой имя db1.mdb в поле имя файла на имя будущей БД, например teach.mdb.

  • Щелкните по кнопке Создать.

На экране в рамках окна Access появляется окно БД, имеющее кнопки: Создать, Открыть, Конструктор, а также корешки: таблица, запрос, форма, отчет, макрос, модуль. Корешок таблицы выбран по умолчанию.

Для создания новой таблицы щелкните на кнопке Создатьи выберите режимКонструктор. Access перейдет в режим создания определения таблицы. В этом режиме для каждого поля создаваемой таблицы необходимо указать его имя и тип, можно также прокомментировать назначение поля в третьей колонке.

Создайте таблицу, схема которой имеет вид: PREP(FIO, Categ, Nagr, Contract). Поля FIO и Categ имеют текстовыйтип данных. Это соответственно фамилии и инициалы преподавателей и их категории (профессор, доцент, ассистент, асс.к.н.). Тип поля Nagr -числовой. Это годовая нагрузка преподавателя, которая может изменяться в пределах от 0 до 999 часов. Поле Contract представляет собой дату заключения контракта с преподавателем и имеет типДата/Время. Размеры полей указываются в первой строке области Свойства Поля. Укажите для FIO размер 25 символов, для Categ- 10, для Nagr -целое, для поля Contract размер поля указывать не надо, он устанавливается по умолчанию. Для каждого из полей в относящейся к этому полю области Свойства Поля введите значения элементаПодпись поля, например, для поля FIO введите Ф.И.О., для поля Categ - Категория, для поля Nagr - Нагрузка, а для поля Contract – Дата контракта. Укажите, что все поля, кроме Nagr, должны быть заполнены (свойствоОбязательное поледолжно иметь значениеДа). Для поля FIO задайтеУсловие на значениеLike “* ?.?.”, это означает, что сначала следует ввести несколько символов, представляющих собой фамилию, а затем две буквы с точками после них – инициалы. СвойствуСообщение об ошибкеполя FIO можно, например, присвоить значение «Ввод Ф.И.О. с ошибкой». Текст сообщения об ошибке может быть и другим, но желательно коротким и точно указывающим, при вводе в какое поле произошла ошибка и какая. Для поля Nagr задайтеУсловие на значение>=0 And <=999 иСообщение об ошибке– «Нагрузка должна быть в диапазоне от 0 до 999». Для поля Contract установите выбором из списка формат поля в значениеКраткий формат даты и с помощью построителя маски (кнопка с тремя точками...) Маску ввода -Краткий формат даты. Завершив спецификацию полей таблицы, задайте ее первичный ключ. Для этого щелкните слева от поля FIO, чтобы выделить его, а затем щелкните по пиктограмме ключа или выполните командуПравкаКлючевое поле. Сохраните созданную структуру таблицы, выполнив командуФайлСохранить как, введите имя таблицыPREPи щелкните OK.

Теперь можно заполнять таблицу данными. Для этого перейдите из режима проектирования таблицы в режим ее заполнения, щелкнув по пиктограмме таблицы, или, выполнив командуВидРежим таблицы, и введите следующие данные:

Ф.И.О.

Категория

Нагрузка

Дата_Контракта

Малышев С.В.

асс.к.н.

780

25/03/98

Никитин Е.В.

доцент

650

02/01/99

Наумов С.А.

асс.к.н.

760

12/01/02

Васильев С.Л.

профессор

580

17/05/97

Матвеев Л.Б.

доцент

790

09/01/96

Андреева А.И.

ассистент

800

05/01/96

Иванов Н.П.

профессор

620

20/01/96

Соколова Н.Н.

доцент

720

31/08/01

Сидоров С.С.

профессор

95

01.03.97

Для перехода к новому полю и к новой строке используйте клавишу ТАВ.

Создайте таблицу PREP1(FIO, FAK, DIS, GR), выполнив копирование таблицы PREP, а затем удалив все поля кроме FIO и добавив поля FAK,DIS и GR. Для этого закройте таблицу, вернитесь в окно БД и выполните:

  • команду ПравкаКопироватьпо отношению к таблице PREP;

  • команду Правка Вставитьи в диалоговом окнеВставка Таблицывведите имя таблицы PREP1, параметр вставкиСтруктура и данныеустановлен по умолчанию, можно было бы скопировать только структуру или только данные, но в данном случае нам нужно и то и другое;

  • щелкните OK.

В списке таблиц БД teach появилась еще одна таблица с именем PREP1. Выберите ее и перейдите в режим Конструктора. В этом режиме удалите все поля таблицы PREP1 кроме FIO. Для этого выделите все ненужные поля (полностью строку)и нажмите Del. Access выведет диалоговое окно с предупреждением, что при удалении полей будет утрачено их содержимое. ЩелкнитеOK, и удаление будет завершено. После удаления ненужных полей добавьте следующие поля:

Поле

Тип данных

Описание

Размер поля

FAK

текстовый

Сокращенное название факультета

4

DIS

текстовый

Сокращенное название предмета

5

GR

текстовый

номер группы

4

В качестве значений элементов Подпись полявведите соответственно Факультет, Дисциплина, Группа. Для всех полей кроме FIO укажитеДав качестве значения элементаОбязательное поле. Для поля GR задайтеУсловия на значение- Like “#[1-7]#[1-6]”. Это означает, что номер группы состоит из четырех цифр, из которых первая и третья могут быть любыми, вторая не может быть равна 0,8,9, а четвертая не может быть равна 0,7,8,9. СвойствуСообщение об ошибкеприсвойте значение «Неверный номер группы». Снимите установку первичного ключа с поля FIO, щелкнув при выделенном поле по пиктограмме ключа, поскольку запрет повторения фамилии преподавателя в этой таблице является семантически неверным. Каждый преподаватель может вести занятия в нескольких группах и/или читать несколько предметов.

Сохраните созданную структуру таблицы и перейдите в режим ее заполнения. Должны быть введены следующие данные:

Ф.И.О.

Факультет

Дисциплина

Группа

Малышев С.В.

ФАВТ

БДиБЗ

5341

Никитин Е.В.

ФАВТ

ТУ

2351

Наумов С.А.

ФЭТ

ОП

3422

Васильев С.Л.

ФЭТ

ОП

4441

Матвеев Л.Б.

ФАВТ

ОП

2351

Андреева А.И.

ФКЭА

ОП

5531

Иванов Н.П.

ФАВТ

ОСРВ

2351

Соколова Н.Н.

ФАВТ

ТУ

2352

Сидоров С.С.

ФАВТ

ОП

3456

Никитин Е.В.

ФЭТ

ОП

3421

Наумов С.А.

ФАВТ

БДиБЗ

5342

Сидоров С.С.

ФАВТ

ТУ

3456

Сидоров С.С.

ФКЭА

ТУ

2345

Определите связи между таблицами.

Для этого вернитесь в окно БД, закрыв текущее окно таблицы, и выполните команду СервисСхема данных. Откроется пустое окноСхема Данных, а затем диалоговое окноДобавление таблицы. Выбирайте по очереди таблицы PREP и PREP1 и щелкайте по кнопкеДобавить. Затем щелкните по кнопкеЗакрыть. В окнеСхема Данныхпоявятся заголовки обеих таблиц со списками их полей. Таблица PREP должна быть связана с таблицей PREP1 отношением один-ко-многим (устанавливается по умолчанию), так как каждый преподаватель может вести несколько предметов и преподавать в разных группах. Для первичного ключа FIO таблицы PREP существует соответствующий ему внешний ключ FIO в таблице PREP1. Для установки связи щелкните по полю FIO таблицы PREP, перетащите и опустите его на поле FIO таблицы PREP1. В открывшемся диалоговом окнеСвязищелкните по флажкуОбеспечение целостности данныхи по флажкамКаскадное обновление связанных полейиКаскадное удаление связанных записей. Щелкните также по кнопкеОбъединениеи выберите установку 2, чтобы обеспечить возможность найти преподавателя, который ничего не преподает. Для завершения процесса создания связи щелкнитеСоздать. Для удаления связи достаточно щелкнуть по изображающей ее линии и нажатьDel, но не стоит делать это сейчас. Чтобы отредактировать связь, надо щелкнуть по ней дважды. Закройте окноСхема данных. Вы завершили установку связей между таблицами БД и создание БД в целом.

Установить связь между таблицами удается не всегда. Не удастся сделать это в следующих случаях:

  • таблицы, между которыми устанавливается связь, открыты;

  • поле связи не является первичным ключом родительской таблицы;

  • типы или размеры полей, по которым устанавливается связь, не совпадают;

  • нарушена ссылочная целостность данных, то есть в подчиненной таблице есть значения поля связи, отсутствующие в родительской таблице, например, в таблице Prep1 есть какая – то фамилия и инициалы, отсутствующие в таблице Prep.