Аналогично создадим таблицу сотрудникишт_т
База данных «РОГА и КОПЫТА»
Задача.Разработчик баз данных получил от заказчика задачу: создать базу данных для ООО «Рога и копыта». Из документов ему представлена таблица Сотрудники – сведения о работниках ООО и занимаемых ими должностях. При этом отмечено, что на совмещение должностей берутся лишь штатные сотрудники (совместителей брать нельзя).
Фамилия Имя Отчество | Дата рожд. | Пол | Должность | Ставка | Дата приема | Дом. Тел. |
Бендер Остап Ибрагимович | 28/02/1973 | муж | Ген. директор | 04/02/03 | 777-88-99 | |
Бендер Остап Ибрагимович | 28/02/1973 | муж | Вед. специалист | 0,5 | 04/02/03 | 777-88-99 |
Берлага Натан Иосифович | 22/10/1967 | муж | Бухгалтер | 18/02/03 | 111-33-77 | |
Балаганов Александр Михайлович | 06/06/1979 | муж | Менеджер | 04/02/03 | ||
Балаганов Александр Михайлович | 06/06/1979 | муж | Кладовщик | 0,5 | 04/02/03 | |
Паниковский Михаил Самуэльевич | 11/11/1943 | муж | Менеджер | 04/02/03 | ||
Паниковский Михаил Самуэльевич | 11/11/1943 | муж | Рабочий | 0,5 | 04/02/03 | |
Синицына Зося Станиславовна | 07/07/1986 | жен | Секретарь | 13/02/03 | 555-77-44 | |
Синицына Зося Станиславовна | 07/07/1986 | жен | Вед. специалист | 0,5 | 13/02/03 | 555-77-44 |
Лоханкин Васисуалий Андреевич | 13/11/1970 | муж | Вед. специалист | 18/02/03 |
Анализируя эту таблицу , разработчик отметил следующее.
Некоторые записи в таблице Сотрудники практически полностью повторяются, то есть она обладает избыточностью. Избыточность устраняется разбиением этой таблицы на три:
Штаты
№ п.п. | Должность | Разряд | Количество |
Сотрудники штатные
№ п.п. | Фамилия | Имя | Отчество | Дата рожд. | Пол | Должность | Дата приема | Дата увольнения | Дом телефон |
Сотрудники совместители
№ п.п. | Фамилия | Должность | Ставка | Дата приема | Дата увольнения |
Связи между этими таблицами такие:
· Значения поля Должность в таблицах Сотрудники штатные и Сотрудники совместители берем из таблицы Штаты
· Значения поля Фамилия в таблицу Сотрудники совместители берем из таблицы Сотрудники штатные
Получим 3 связанных таблицы:
Штаты
№ п.п. | Должность | Разряд | Количество |
1. | Ген. Директор | ||
2. | Бухгалтер | ||
3. | Вед. специалист | ||
4. | Менеджер | ||
5. | Секретарь | ||
6. | Зав. Складом | ||
7. | Кладовщик | ||
8. | Рабочий |
Сотрудники штатные
№ п.п. | Фамилия | Имя | Отчество | Дата рожд. | Пол | Должность | Дата приема | Дата увольнения | Дом телефон |
1. | Бендер | Остап | Ибрагимович | 28/02/1973 | муж | Ген. Директор | 04/02/03 | 777-88-99 | |
2. | Берлага | Натан | Иосифович | 22/10/1967 | муж | Бухгалтер | 18/02/03 | 111-33-77 | |
3. | Балаганов | Александр | Михайлович | 06/06/1979 | муж | Менеджер | 04/02/03 | ||
4. | Паниковский | Михаил | Самуэльевич | 11/11/1943 | муж | Менеджер | 04/02/03 | ||
5. | Синицына | Зося | Станиславовна | 07/07/1986 | жен | Секретарь | 13/02/03 | 555-77-44 | |
6. | Лоханкин | Васисуалий | Андреевич | 13/11/1970 | муж | Вед. специалист | 18/02/03 |
Сотрудники совместители
№ п.п. | Фамилия | Должность | Ставка | Дата приема | Дата увольнения |
1. | Бендер | Вед. специалист | 0,50 | 04/02/03 | |
2. | Балаганов | Кладовщик | 0,50 | 04/02/03 | |
3. | Паниковский | Рабочий | 0,50 | 04/02/03 | |
4. | Синицына | Вед. специалист | 0,25 | 13/02/03 |
Создание таблиц.
Откройте Главное меню Пуск, все программы, Microsoft Office , Access 2007. В появившемся окне выберите Новую базу данных, назовите базу данных «Рога и копыта» и нажмите кнопку Создать.
Создавать все таблицы будем в режиме конструктора. Для этого на вкладке Создание выбрать Конструктор таблиц.
Заполните Имена полей таблицы Штаты, каждому полю задайте тип данных.
Нпп | Счетчик |
Должность | Текстовый |
Разряд | Числовой |
Количество | Числовой |
При разработке базы данных недопустимо использовать такое имя поля как № п.п., поэтому мы его заменим на имя Нпп, а в разделе Свойства поля в строке Подпись укажем то имя, которое мы хотим видеть в заголовке столбца готовой таблицы, т.е № п.п.
Поле № п.п. зададим как ключевое, для этого нужно навести курсор на имя поля и в контекстном меню выбрать пункт Ключевое поле.
Получим такой результат:
Закроем Таблицу нажав указателем мыши на самый нижний значок закрытия окна (на нижний крестик, не закрывая всю базу данных). Сохраним таблицу под именем Штаты_т.
Аналогично создадим таблицу СотрудникиШт_т
Задайте имена полей и их типы (Внимание! Особенности задания некоторых полей описаны ниже, остальные поля задаются как на рисунке):
Итак,
· поле НомерПоШтРасп, задается аналогично полю Нпп в предыдущей таблице. (Оно ключевое)
· Поля Фамилия, Имя, Отчество, ДомТел имеют тип текстовый.
· Для полей с датами установите тип Дата/время, а в разделе Свойство поля задайте маску ввода: установите курсор в строке Маска ввода, нажмите на кнопку «…», в открывшемся окне выберите Краткий формат даты, нажмите Далее, выберите заполнитель #, нажмите Готово.
Должно получиться вот что:
· Для поля Пол выберите тип данных Текстовый и Мастер подстановок,
в появившемся окне установите точку в строке Будет введен фиксированный набор значений. Далее напишите в таблице две записи «муж» и «жен». Нажмите Готово.
· Для поля Должность, тоже нужно воспользоваться мастером подстановок, но переключатель установить в строку Объект будет использовать значения из таблицы или запроса. После чего нужно выбрать таблицу Штаты_т, затем поле Должность перекинуть в Выбранные поля и нажать Готово.
Самостоятельно разработайте таблицу СотрСовм_т
Код | Счетчик, ключевое |
Фамилия | Текстовый, мастер подстановок из таблицы СотрудникиШт_т |
Должность | Текстовый, мастер подстановок из таблицы Штаты_т |
Ставка | Числовой , Указать в свойстве поля в строке размер поля Одинарное с плавающей точкой (см рисунок ниже) |
ДатаПриема ДатаУвольн | Дата/время, установить Краткий формат даты |
На рисунке показано задание свойств поля Ставка:
Так выглядит таблица Сотрудников совместителей:
Связи между таблицами
На вкладке Работа с базами данных, в группе Показать или скрыть нажать кнопку Схема данных.
На рабочем поле появятся ваши таблицы, соединенные линиями. Нажав двойным щелчком мыши на одну из линий в появившемся окне выбрать
· Обеспечение целостности данных,
· Каскадное обновление связанных полей и
· каскадное удаление связанных полей.
Это позволит автоматически удалять, изменять или обновлять данные сразу во всех таблицах (если изменить или удалить фамилию одного сотрудника в одной таблице, то она измениться или исчезнет и из другой таблицы и противоречия не возникнут).
Убедитесь, что тип связи установился один-ко-многим.
Добавьте в таблицу СотрудникиШт_т поля Автобиография (тип – МЕМО) и Фото (тип – объект OLE).
Заполните все таблицы данными.
Создание форм
Формы - объект база данных, который позволяет выводить на экран нужные данные в удобном для пользователя виде и затем, по необходимости корректировать эти данные.
Для создания формы нужно выбрать на вкладке Создание группу Формы кнопку Конструктор форм.
Для разработки элементов формы нужна вкладка Инструменты конструктора форм (она появится после открытия формы в режиме конструктора).
Для написания заголовка формы выберите кнопку Подпись в группе Элементы управления. После растяните этот объект на нужную величину и в нем введите название формы «Сотрудники штатные».
Для дальнейшей работы выберем кнопку Страница свойств в группе Сервис.
В появившемся окне свойств выберите в первой белой строке слово Форма. На вкладке Данные в пункте Источник записей, нажав на стрелку выберите таблицу СотрудникиШт_т.
Для добавления полей на форму нажмите кнопку Добавить существующие поля в группе Сервис, справа появится соответствующее окно. Из этого окна нужные поля перетащите на форму и разместите их так, чтобы было удобно их просматривать. Для перемещения отдельных элементов нужно удерживать левую кнопку мыши на квадратике в левом верхнем углу объекта.
После того, как все данные размещены на форме, их надо оформить. Для этого нужно последовательно выделять каждый объект и в Окне свойств на вкладке Макет задавать необходимые параметры, например, Тип фона, Цвет фона, Шрифт, Размер шрифта, Цвет текста и др. Самостоятельно задайте параметры для оформления всего поля формы и всех ее объектов, должно получиться примерно так:
Форму закройте, сохраните под именем СотрудникиШт_ф.
Откройте форму в режиме просмотра и для каждого сотрудника в поле фото нажмите правую кнопку мыши и выберите пункт Вставить объект… В появившемся окне выберите Создать новый файл, затем Bitmap Image, нажмите ОК. Нарисуйте в Pain фотографию первого героя нашей базы данных. После закрытия окна Pain, фотография окажется на нужном месте. Аналогично для всех героев создать фото и придумать автобиографию.
Такие формы разработать для всех таблиц.
Создание запросов
Запрос с параметром.
Задача. Необходимо по указанной должности вывести список сотрудников, занимающих эту должность.
На вкладке Создание нажмите кнопку Конструктор запросов. В окне добавление таблицы добавьте таблицы Штаты_т и СотрудникиШт_т. Закройте это окно и оформите запрос по образцу:
Закройте запрос и сохраните. Запустите его и в окне запроса задайте должность, например, Менеджер, проанализируйте результат.
Создайте такой запрос для вывода списка сотрудников, принятых на работу в какую-либо заданную дату.
Запрос на выборку
Задача. Вывести список всех мужчин.
Такой запрос в режиме конструктора буде выглядеть так:
Самостоятельно разработайте запросы для просмотра списка всех женщин и менеджеров.
Запрос с вычислениями
Задача. Нужно вывести список всех пенсионеров. Пенсионерами считаются люди в возрасте старше 55 лет.
Откройте Конструктор запросов, Выберите таблицу, содержащую список всех сотрудников. Выберите в запросе нужные поля: Фамилия, Имя, Отчество. Добавим новое поле Возраст (его нет ни в одной таблице, его нам предстоит рассчитать по формуле: из текущей даты вычтем дату рождения ( найдем количество дней между двумя датами) и разделим разность на 365 (получим количество лет ).
Для ввода формулы нажмите кнопку . Появится окно формул:
В этом окне напишите Возраст: выберите папку Функции, Встроенные функции, Дата/время, Date. Нажмите кнопку Вставить. Далее «вручную» оформить всю формулу. Для выбора даты рождения в таблицах выберите нужную таблицу и поле.
Всю формулу возьмите в скобки и разделите на 365, т.к. с помощью формулы посчитано количество дней между сегодняшней датой и датой рождения.
Под полем Возрастнужно выставить Условие отбора > 55.
Окно запроса станет выглядеть так:
Формирование отчетов.
С помощью отчетов нужно создать бэйджи для всех сотрудников. Например, один из них будет выглядеть так:
Для этого на вкладке Создание выберите Конструктор отчетов.
Чтобы убрать Верхний и Нижний колонтитул в Контекстном меню (правая кнопка мыши) Колонтитулы станицы.
Дальнейшая работа не отличается от работы в формах. Добавьте нужные поля. Оформите их.
Самостоятельно разработайте отчеты
1)Поздравительные открытки к 8 марта всем женщинам предприятия и
2) Поздравительные открытки к 23 февраля всем мужчинам предприятия.
Для удобства можно взять в качестве источника данных не таблицу (как раньше), а соответствующий запрос.