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

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

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

8.Поля =Sum([Зарплата]) и =Avg([Возраст]) и их надписи Sum и Avg переместите из Примечаний группы „отдел‟ в область Заголовка группы „отдел‟.

9.В области данных расположите поля в два яруса для более компактного представления данных. В этом же порядке расположите надписи в области заголовков группы „отдел‟.

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

81

Примерно так должен выглядеть отчет в режиме просмотра.

82

Задача «Монеты»

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

ОПЕРАЦИИ С МОНЕТАМИ ИЗ ДРАГОЦЕННЫХ МЕТАЛЛОВ

Металл, проба

Наименование монеты

Номинал на монете

Содержание химически чистого

драгоценного металла, г

 

 

 

 

Монеты Банка России

 

Серебро 925

Соболь-95

3 рубля

31.1

Золото 900

Червонец

10 рублей

7.74

 

Монеты Австралии

 

Серебро 999

Кролик (австрал.)-99

1 австрал. доллар

31,1

Серебро 999

Австрал. Кукабурра-03

1 австрал. доллар

31.1

 

Монеты Великобритании

 

Золото 916.7

Полсоверена (англ.)-05

0,5 фунта стерлингов

3.66

Золото 916.7

Соверен (англ.)-05

1 фунт стерлингов

7.32

 

Монеты Замбии

 

Серебро 999

Слон (замб.)-03

5000 замб. квачей

31.1

 

Монеты Белоруссии

 

Серебро 925

"Маленький принц " (бел.)-05

20 белорус. рублей

26,15

Серебро 925

"Снежная королева" (бел.)-05

20 белорус. рублей

26,15

83

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

 

1.Какой объект БД готовит данные для отчета?

2.Какие разделы могут содержать отчеты?

3.Как задать группировку записей в отчете?

4.Каково максимальное число уровней группировки в отчете MS Access?

5.Какая функция используется для подсчета числа записей в группе?

6.Как добавить надпись в отчете?

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

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

9.Какие вычисления возможны в отчетах?

10.Чем определяется форма отчета?

11.Чем определяется размер страницы отчета?

12.Как добавить новые поля в отчет?

84

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

Введение в проблему

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

Возникает задача развития БД «Кадры» для удовлетворения потребностей кадровой службы.

Требуется разработать новый проект ИС, позволяющий сохранять историю перемещений сотрудников по службе от приема на работу, включая увольнение. На основе предыдущего проекта БД «Кадры» нужно создать новую БД «Кадры с приказами», решающую поставленную задачу.

Теория. Если мы хотим решить эту задачу, то между таблицами «Должности» и «Сотрудники» обнаруживается связь «Многие-ко-многим». Иными словами, одну и ту же должность могут занимать многие сотрудники, и один сотрудник теперь может занимать последовательно разные должности. Между таблицами «Отделы» и «Сотрудники» также суще-

85

ствует связь «Многие-ко-многим»: в отделе работает много сотрудников и сотрудник банка может поработать последовательно во многих отделах. Проблема состоит в том, что реляционная СУБД не поддерживает обеспечения целостности по связи «Многие-ко-многим». Действительно, попробуйте в рамках существующей схемы данных попытаться сохранить все должности, которые занимал сотрудник в течение его работы в АКБ «Буревестник».

Можно попытаться ввести в таблицу «Сотрудники» поля [Код_должности_1] [Код_должности_2] …[Код_должности_N]. Однако, что делать, если вдруг сотрудник перемещался по службе N+1 раз? Более того, чтобы эти коды были внешними ключами таблицы «Сотрудники», нужно установить много связей между таблицами «Сотрудники» и «Должности». Но этого не позволит сделать реляционная СУБД, так как она может следить за обеспечением целостности только одной связи между двумя таблицами. Поэтому для решения данной проблемы необходимо создать новую таблицу, в которой будет храниться информация о назначениях и перемещениях сотрудников. То есть, нужно перестроить базу данных, из старой создать новую, внеся в нее необходимые изменения.

Упр. 12. Кадры с приказами

Для конкретизации задач, решаемых в новой БД, предположим, что нам нужно провести следующие операции:

1.Сделать в записи о приеме на работу всех имеющихся сотрудников с 01.01 текущего года.

2.Уволить Синичкину с 01.02 по собственному желанию в связи с выходом на пенсию.

3.Переместить на должность Главного управляющего Птичкину.

86

4.Переместить Сидорова с должности Помощника управляющего Валютным отделом на должность Управляющего того же отдела c 01.02.

5.Изменить структуру нашей организации и добавить отделы Бухгалтерия и Кадры.

6.Изменить штатное расписание и добавить должности Главного бухгалтера и Инспектора отдела кадров.

7.Принять на работу в эти отделы Зайцева и Волкова.

8.Принять с 01.03 двух практикантов на работу в отделы Кредитный и Бухгалтерия и через месяц поменять практикантов местами.

СОТРУДНИКИ

КодС

Фамилия

1

Иванов

2

Петров

3

Сидоров

4

Птичкина

5

Синичкина

6

Зайцев

7

Волков

ОТДЕЛЫ

КодО

Отдел

1

Кредитный

2 Валютный

3 АХО

4Бухгалтерия

5Кадров

ДОЛЖНОСТИ

КодД

Должность

1Управляющий

2Пом. управляющ

3Гл. упраляющ.

4Гл. бухгалтер

5Инспектор ОК

6Практикант

7Бухгалтер

Для того, чтобы выполнить операции 1–8 нам придется создать дополнительную таблицу «Журнал приказов».

87

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

1.Откройте в проводнике папку, где хранится файл БД «Кадры». Создайте копию БД «Кадры», переименовав файл «копия_Кадры.mdb» в файл «Кадры с приказами.mdb».

2.Откройте новую БД «Кадры с приказами». Она ни чем не отличается от предыдущей БД «Кадры». Постройте в КОНСТРУКТОРЕ новую таблицу «Журнал приказов» на основе следующей структуры:

Ключ

Имя поля

Тип данных

Размер/Примечание

П.Кл

КодПрик

Счетчик

Номер приказа

 

 

 

 

Вн.Кл

Код Сотрудника

Числовой

Длинное целое

Вн.Кл

Код Отдела

Числовой

Байт

Вн.Кл

Код Должности

Числовой

Целое

 

Тип Приказа

Числовой

Байт

 

Дата Приказа

Дата/время

 

 

Надбавка

Денежный

Надбавка в рублях

3.Удалите все старые связи в схеме данных БД «Кадры с приказами»: между таблицами «Отделы», «Сотрудники» и «Должности». Для этого откройте Схему данных, выделите курсором каждую связь и в контекстном меню выберите команду «Удалить».

4.Добавьте в Схему данных таблицу «Журнал приказов».

88

5.

Удалите ненужные, уже имеющиеся в «Журнале приказов» поля из таблицы «Сотрудни-

 

ки»: внешние ключи [Код_Должности] и [Код_Отдела], а также поле [Надбавка].

6.

Создайте новые связи между таблицами «Журнал приказов» и «Сотрудники», «Журнал

 

приказов» и «Отделы», «Журнал приказов» и «Должности» на основе первичных (П.Кл) и

 

внешних ключевых (Вн.Кл) полей. Установите свойство «Обеспечение целостности дан-

 

ных» для новых связей. См. упр. 3.

 

 

7.

Определите подстановки в таблице «Журнал приказов» для внешних ключей. См. упр. 6.

8.

Задайте подстановку в поле [Тип Приказа] на основе фиксированного списка. По-

 

смотрите в упр. 6 аналогичную подстановку, например, в поле [Семейное положение].

 

Таблица фиксированных значений для «типа приказа» выглядит следующим образом:

 

 

1

Принят

 

 

 

2

Переведен

 

 

 

3

Уволен

 

9.

Задайте для поля [Дата Приказа] значение по умолчанию равное текущей дате. Вспомните, какая функ-

 

ция возвращаеттекущую дату, мыееиспользовали ввыражении длявычисления возраста.

10.

Удалите все старые запросы и формы кроме трех форм «Штатное расписание», «Кар-

 

точка сотрудника», «Структура организации». Отредактируйте форму «Карточка со-

 

трудника», удалив из нее поля, более не принадлежащие таблице «Сотрудники».

11.

Создайте новую форму с именем «Журнал приказов» ленточного вида для заполнения

 

таблицы «Журнал приказов». С ее помощью занесите информацию о перемещениях

 

сотрудников. Можно воспользоваться примером перемещений «Журнал приказов».

89

 

 

Журнал приказов

 

 

 

 

 

 

 

 

 

 

Код

Код Со-

Код Отдела

Код Должности

Тип Прика-

Дата При-

Надбавка

приказа

трудника

 

 

за

 

каза

 

1

Иванов

Кредитный

Управляющий

Принят

1

января

1 тыс. руб

 

 

 

 

 

 

2

Петров

Кредитный

Пом. управляющего

Принят

1

января

1 тыс. руб

 

 

 

 

 

 

3

Сидоров

Валютный

Пом. управляющего

Принят

1

января

1 тыс. руб

 

 

 

 

 

 

4

Птичкина

Валютный

Управляющий

Принят

1

января

1 тыс. руб

 

 

 

 

 

 

5

Синичкина

Административный

Главный управляющий

Принят

1

января

0 тыс. руб

 

 

 

 

 

 

6

Зайцев

Кадров

Инспектор отдела кадров

Принят

1

января

1 тыс. руб

 

 

 

 

 

 

7

Волков

Бухгалтерия

Главный бухгалтер

Принят

1

января

1 тыс. руб

 

 

 

 

 

 

8

Синичкина

Административный

Главный управляющий

Уволен

1

февраля

0 тыс. руб

 

 

 

 

 

 

9

Птичкина

Административный

Главный управляющий

Переведен

1

февраля

2 тыс. руб

 

 

 

 

 

 

10

Сидоров

Валютный

Управляющий

Переведен

1

февраля

2 тыс. руб

 

 

 

 

 

 

11

Студент1

Бухгалтерия

Практикант

Принят

1

марта

0 тыс. руб

 

 

 

 

 

 

12

Студент2

Кредитный

Практикант

Принят

1

марта

0 тыс. руб

 

 

 

 

 

 

13

Студент1

Кредитный

Практикант

Переведен

1

апреля

0 тыс. руб

 

 

 

 

 

 

14

Студент2

Бухгалтерия

Практикант

Переведен

1

апреля

0 тыс. руб

 

 

 

 

 

 

15

Студент1

Кредитный

Практикант

Уволен

1

мая

1 тыс. руб

 

 

 

 

 

 

Внимание. При заполнении «Журнала приказов» необходимо учитывать, что даты приказов должны быть согласованы и идут по возрастанию. Под согласованностью подразумевается, что первая запись о сотруднике – это запись о его приеме на работу и последующие записи о перемещениях имеют даты позднее даты его приема, а дата увольнения этого сотрудника является самой поздней.

90