Как составить базу данных практика

Время на прочтение
3 мин

Количество просмотров 44K

Сегодня мы рассмотрим пример базы данных и различные команды агрегации, группировки, сортировки, соединения таблиц и другое на примере MySQL. Сами данные представляют собой набор таблиц с произвольными названиями и значениями. Структура таблиц и их связи представлены ниже.

Для понимания дальнейшего Вам будут желательно начальные знания SQL и баз данных. Данное пособие поможет структурировать информацию, обновить память и может выступать в роли шпаргалки, которую вы можете использовать при надобности. Запросы на создание всех таблиц находятся тут.

С содержанием таблиц удобно ознакомиться в формате excel:

Таблица "products"

Таблица «products»
Таблица "customers"
Таблица «customers»
Таблица "courier_info"
Таблица «courier_info»
Таблица "orders"
Таблица «orders»
Таблица "delivery_list"
Таблица «delivery_list»
Таблица "orders_products"
Таблица «orders_products»

Как ни странно, но начнем мы анализ с таблицы, которая не упоминалась выше и не имеет связей с другими. Она представляет собой статистику за год по некоторым ключевым показателям.

Примечание: дабы не загружать статью всеми видами таблиц из запросов, визуально представлены будут только некоторые, а с остальными Вы без проблем можете поэкспериментировать сами.

Table "year_statistics"

Table «year_statistics»

Агрегация, группировка, сортировка

Сумма заказов за весь год:

SELECT SUM(amount_of_orders) AS orders_per_year FROM year_statistics;

Убывающая сортировка заказов по месяцам:

SELECT month_name, amount_of_orders
FROM year_statistics
ORDER BY amount_of_orders DESC;

Вывести месяц, где больше всего заказов:

SELECT month_name, amount_of_orders FROM year_statistics
WHERE amount_of_orders = (SELECT MAX(amount_of_orders)
FROM year_statistics);

Популярность районов по количествам клиентов:

SELECT district
FROM customers
GROUP BY district
ORDER BY COUNT(district) DESC;

Сколько каждый курьер доставил заказов:

SELECT courier_id, COUNT(order_id)
From delivery_list
WHERE date_arrived IS NOT NULL
GROUP BY courier_id;

Общие запросы и использование операторов IN, EXISTS, UNION и др.

Выборка клиентов, которые живут в районе «South»:

SELECT * FROM Customers
WHERE district IN ('South');

Информация о заказах, которые не были доставлены клиентам:

SELECT * FROM delivery_list
WHERE taken NOT IN ('Yes');

Запрос продуктов из меню, которые были заказаны:

SELECT menu_name FROM products
WHERE EXISTS
(SELECT * FROM orders_products
WHERE orders_products.product_id = products.product_id);

Запрос тех продуктов, которые не заказывали:

SELECT menu_name FROM products
WHERE NOT EXISTS
(SELECT * FROM orders_products
WHERE orders_products.product_id = products.product_id);

Получаем общую таблицу с информацией о клиентах и курьеров:

SELECT 'Customer' AS category, first_name, last_name, phone_number
FROM customers
UNION
SELECT 'Employee' AS category, first_name, last_name, phone_number
FROM courier_info;

INNER, NATURAL, CROSS, LEFT JOIN

Наиболее интересный запрос, который позволяет видеть детали заказа(номер, название блюда, количество и цена). К тому же здесь использован метод ROUND, позволяющий округлять дробные числа:

SELECT orders_products.order_id, products.menu_name, quantity,
ROUND(price*quantity, 2) AS total_price
FROM orders_products
INNER JOIN products ON orders_products.product_id = products.product_id
ORDER BY order_id, quantity;

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

SELECT *, SEC_TO_TIME(TIMESTAMPDIFF(second, date_get, date_arrived))
AS time_of_delivery
FROM orders
NATURAL JOIN delivery_list;

Не совсем тривиальный запрос на выборку о том, что каждому курьеру на машине доступен любой район из таблицы клиентов:

SELECT DISTINCT courier_info.courier_id, customers.district
FROM courier_info
CROSS JOIN customers WHERE courier_info.delivery_type = 'car'
ORDER BY courier_id;

И напоследок запрос на информацию об имени клиента, его мобильном телефоне и номере заказа:

SELECT customers.first_name, customers.last_name,
customers.phone_number, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;

Заключение

По итогу мы с вами разобрали множество полезных запросов на выборку SQL. Были показаны основные и более редкие операции. В сущности не важно, сколько данных в Вашей таблице — десять или тысяча, от этого запросы не поменяются, а всегда будут оставаться такими же. Главное, чтобы был понятен смысл, количество данных играет намного меньшую роль. Бояться и расстраиваться от того, что у Вас пока не получается получить желаемый запрос, совершенно глупо. Абсолютно нормально, если Вы гуглите, читаете книгу на интересующую тему, а результата так и нет. На это может уходить от десятка минут до целых дней. Мы все люди и одному человеку не под силу знать все. Наберитесь терпения, спросите у товарищей, на форумах и просто продолжайте искать сами, у Вас все получится! Удачи.

В данном практикуме представлены
практические работы, предназначенные для
учащихся 9-х классов в курсе освоения создания
базы данных в Access 2010, а также поиска информации в
готовой базе данных.

Практическая работа № 1
“Создание простейшей базы данных
в Microsoft Access
2010

Ввод и сортировка записей”.

Цель работы:


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

Задание 1. Создание пустой базы данных
с помощью шаблонов таблиц.

Порядок работы


  1. Запустите программу СУБД Microsoft Access. Для этого
    выполните: Пуск – Все программы – Microsoft office –
    Microsoft office Access 201).

  2. Перед Вами откроется окно следующего вида (Рисунок
    1)
    :
  3. Выберите команду Новая база данных. Затем
    введите имя файла –База работников и нажмите
    кнопку Создать. Перед Вами откроется окно
    следующего вида (Рисунок 2).
  4. Выберите команду Создание Части
    приложения. Шаблоны – Контакты (Рисунок 3).

  5. В левой панели появляется таблица Контакты. Щелкните
    дважды мышью по имени таблице. Перед вами
    откроется вся таблица Контакты с заголовками
    (Рисунок 3).
  6. Переименуйте поля ИД, Область, край, Страна или
    регион
    на следующие новые имена полей
    соответственно: Код, Республика, Страна.

  7. Все поля после поля Страна удалите с помощью
    контекстного меню, выполнив команду Удалить
    поле.

  8. Заполните ее следующими данными (Таблица 1).
  9. Таблица 1.

  10. У Вас должна получится таблица как на рисунке (Рисунок
    4)
    . Сохраните таблицу () под именем Работник.

  11. В данной таблице отсортируйте столбец “Организация
    по алфавиту (Главная).

Задание 2. Создание пустой базы данных
с помощью конструктора таблиц.

Порядок работы


  1. Создадим таблицу под именем “Студент” с
    помощью конструктора таблиц.
  2. Для этого выполните команду: Создание
    – конструктор таблиц
    .

    Перед Вами откроется окно (Рисунок 5):

  3. Заполните Имя поля следующими данными
    (заголовками столбцов): КодСтудент, Фамилия,
    Имя, Отчество, Адрес, Номер телефона,
    Специализация
    соответственно типы данных для
    полей: КодСтудент – СЧЕТЧИК, Фамилия, Имя,
    Отчество, Должность, Адрес, Специализация

    ТЕКСТОВЫЙ, Номер телефона – ЧИСЛОВОЙ.
  4. У Вас должно получиться как на рисунке (Рисунок
    6):


  5. Далее Нажмите сохранить () и назовите таблицу “Студент”.
    Он автоматически запросит создать ключевое поле,
    нажмите кнопку ДА (поле КодСтудент будет Ключевое
    поле
    ).
  6. Затем двойным щелчком левой кнопкой мыши
    откройте слева на таблицу Студент. Перед Вами
    откроется таблица Студент для заполнения Рисунок
    7
    ).
  7. Заполните эту таблицу следующими данными (Таблица
    2
    ) и сохраните ее.
  8. Таблица 2.

    КодСтудент

    Фамилия

    Имя

    Отчество

    Адрес

    Номер телефона

    Специализация

    1

    Иванов Сергей Александрович г. Новороссийск 457896 технолог

    2

    Петров Сергей Петрович г. Москва 7458962 технолог

    3

    Гаврелеева Ольга Ивановна г. Москва 3698521 бухгалтер

    4

    Соколова Инна Олеговна г. Новороссийск 852967 бухгалтер

    5

    Мухина Олеся Петровна г. Москва 8625471 технолог

    6

    Апареева Анна Романовна г. Люберцы 748596 технолог

    7

    Глинкина Дина Евгеньевна г. Люберцы 919597 технолог

    8

    Сорина Ольга Сергеевна г. Москва 9191954 бухгалтер
  9. Результаты покажите учителю.

Практическая работа № 2.

Создание базы данных, состоящей из двух
таблиц

Цель работы:


  1. Проектирование структуры базы данных.
    Создать вариант базы данных с двумя таблицами:
    “Список”” и “ Группы”.

  2. Конструирование пустых таблиц базы данных.

  3. Создание схемы базы данных. В данном случае
    таблицы связаны связью один-ко-многим. Это
    значит, что в таблице “Группы” каждое значение
    связанного поля может встречаться только один
    раз, а в таблице “Список” – несколько раз
    (несколько человек могут быть из одной группы).
    Связи следует устанавливать при пустых таблицах.

  4. Ввод данных в таблицы. Создать форму для ввода
    данных.

  5. Порядок работы.

Задание 1. Создание базы данных – Учебная
база
.


  1. Запустите программу СУБД Microsoft Access. Для этого
    выполните: Пуск – Все программы – Microsoft office –
    Microsoft office Access 2010.

  2. Перед Вами откроется окно следующего вида (Рисунок
    8
    ):
  3. Выберите команду Новая база данных. Затем
    введите имя файла –Учебная база и нажмите
    кнопку Создать. Перед Вами откроется окно
    следующего вида (Рисунок 9):

Задание 2. Создание таблицы “Группы”.


  1. Создайте таблицу под именем “Группы” с помощью
    конструктора таблиц. Для этого выполните
    команду: Создание – конструктор таблиц.
  2. Заполните Имя поля следующими данными
    (заголовками столбцов): Учебная группа,
    Преподаватель и
    соответственно Тип данных для
    них: Учебная группа – ЧИСЛОВОЙ, Преподаватель
    – ТЕКСТОВЫЙ. Сделайте поле “Учебная группа”
    ключевым, установив курсор на имя поля и щелкнув
    по кнопке Ключевое поле .


  1. Сохраните таблицу под именем “Группы”, щелкнув
    по кнопке Сохранить .
  2. Закройте таблицу.

Задание 3. Создание таблицы “Список”.


  1. Создайте таблицу под именем “Список” с помощью
    конструктора таблиц. Для этого выполните
    команду: Создание – конструктор таблиц.
  2. Заполните Имя поля следующими данными
    (заголовками столбцов): Код, Фамилия, Имя,
    Отчество, Год рождения, Класс, Учебная группа.
    Выберите из ниспадающего списка числовой тип
    данных для поля “Код”. Сделайте поле “Код”
    ключевым, установив курсор на имя поля и щелкнув
    по кнопке Ключевое поле . Тип данных полей “Фамилия”,
    “Имя”, “Отчество” – текстовый, полей “Год
    рождения”, “Школа”, “Класс” – числовой.
    Установите тип данных поля “Учебная группа”
    числовой. Общие свойства поля не меняйте.
    Выберите вкладку Подстановка, тип элемента
    управления – Поле со списком, источник строк
    Группы. Получите значения элементов, как
    показано на рисунке (Рисунок 10).
  3. Сохраните таблицу под именем “Список”, щелкнув
    по кнопке Сохранить .
  4. Закройте таблицу.

Задание 4. Создание схемы данных.


  1. В ленточном меню выберите вкладку Работа с
    базами данных,
    щелкните по кнопке Схема
    данных
    Image8286.gif (1033 bytes). Появится окно Схема
    данных.

  2. В появившемся окне Добавление таблицы
    выделите таблицу “Группы” и щелкните по кнопке Добавить,
    выделите таблицу “Список” и щелкните по
    кнопке Добавить. В окне Схема данных
    появится условный вид этих таблиц. Щелкните по
    кнопке Закрыть окна Добавление таблицы.

  3. Увеличьте окно таблицы “Список” так, чтобы
    были видны все поля.
  4. Установите курсор мыши на имя поля “Учебная
    группа” в таблице “Группы” и, не отпуская
    кнопку мыши, перетащите курсор мыши на поле
    “Учебная группа” таблицы “Список”. Отпустите
    кнопку мыши. Появится диалоговое окно Изменение
    связей
    , представленное на рисунке (Рисунок 11).
  5. Установите флажок Обеспечение целостности
    данных.
    Это невозможно будет сделать, если типы
    полей “Учебная группа” заданы не одинаково.
  6. Установите флажок каскадное обновление
    связанных полей
    . Это приведет к тому, что при
    изменении номера группы в таблице “Группы”
    автоматически изменится соответствующий номер в
    таблице “Список”.
  7. Установите флажок каскадное удаление связей.
    Это приведет к тому, что при удалении записи с
    номером группы из таблицы “Группы”, будут
    удалены все записи из таблицы “Список”, в
    которых находились соответствующие номера
    групп.
  8. Щелкните по кнопке Создать. Появится связь
    “один-ко-многим”. Схема данных представлена на
    рисунке (Рисунок 12).
  9. Закройте схему данных, щелкнув по кнопке в верхнем правом
    углу окна и ответив утвердительно на вопрос о
    сохранении схемы данных.

Задание 5. Заполнение таблицы
“Группы” значениями.


  1. Откройте таблицу “Группы” в режиме Таблицы.
  2. Заполните ее записями из таблицы 1.

Таблица 1

Учебная группа

Преподаватель

101

Смирнова З.В.

102

Вильданова Р.Ш.

103

Зайцева С.А.

104

Зазулина И.В.

105

Друк Н.Н.

Задание 6. Создание формы для ввода
данных.


  1. В окне базы данных выделите имя таблицы Список
    и выполните команду Создание – Форма.

  2. Появится пустая форма ввода, представленная на
    рисунке (Рисунок 13).

  3. Заполните форму данными,
    приведенными в таблице 2.

    Таблица 2

    Код

    Фамилия

    Имя

    Отчество

    Год рождения

    Школа

    Класс

    Учебная группа

    1

    Чернова Наталья Алексеевна

    2001

    5

    9

    101

    2

    Куликов Клим Алексеевич

    1999

    2

    10

    103

    3

    Архипов Виктор Александрович

    2000

    5

    9

    101

    4

    Баранкова Александра Николаевна

    1998

    5

    11

    104

    5

    Новоселов Алексей Иванович

    2000

    3

    9

    105

  4. Сохраните введенные данные. Имя формы – Список.
    Закройте форму.
  5. Перейдите в окно Таблицы. Откройте таблицу Список.
    Убедитесь, что в таблице появились новые записи.
  6. Щелкнув по кнопке Сохранить, сохраните
    текущую таблицу.
  7. Закройте таблицу.

Задание 7. Проверка каскадного
обновления связанных полей.


  1. Откройте таблицу “Группы”.
  2. Исправьте номера учебных групп на 201, 202, 203, 204, 205.
    Сохраните таблицу.
  3. Откройте таблицу “Список”. Убедитесь, что
    значения поля “Учебная группа” изменились.
    Закройте таблицу “Список”.

Задание 8. Проверка каскадного
удаления связанных полей.


  1. Откройте таблицу “Группы”.
  2. Удалите первую запись (Выделите первую строку,
    правой кнопкой мыши вызовите контекстное меню и
    выберите команду Удалить запись.

  3. Ответьте утвердительно на запрос об удалении.
    Закройте таблицу “Группы”.
  4. Откройте таблицу “Список”. Убедитесь, что
    исчезли записи с номером группы 201.

Предъявите преподавателю: таблицу Группы,
таблицу Список на экране, форму Список.

Задание 9. Завершение работы с
программой Access.


  1. Выполните команду Файл – Выход.

  2. Если вы производили редактирование в базе
    данных, появится вопрос о сохранении изменений.
    Ответьте утвердительно.

Практическая работа №3

Тема: Создание запросов к готовой
базе данных.

Цель работы:


  • научиться создавать запросы простые и
    сложные к готовой базе данных.

Задание 1. Открытие базы данных,
изготовленной на прошлом занятии.


  1. В папке Для уроков в своей личной папке
    откройте файл База работников.

  2. На экране появится окно с основными элементами
    базы данных. В базе данных должны быть две
    таблицы: Работник и Студент.

Задание 2. Создание запроса на выборку.


  1. Выполните команду Создание – Конструктор
    запросов.

  2. В появившемся диалоговом окне Добавление
    таблицы
    выберите из списка имя таблицы Студент,
    щелкните по кнопке Добавить (Рисунок 14).
  3. Закончите выбор, щелкнув по кнопке Закрыть.
    Появится возможность выбора полей из таблицы
    “Студент”. Для этого достаточно дважды щелкнуть
    по именам полей или перетащить мышью названия
    полей в клетку запроса.
  4. Создайте телефонную книгу для всех студентов,
    фамилии которых начинаются на букву С. Для
    этого в поле Условие отбора напишите
    условие Like “С*” (Рисунок 15):.
  5. Сохраните запрос, щелкнув по кнопке Сохранить.
    Введите имя запроса Телефонная книга и
    щелкните по кнопке ОК.

  6. Щелкните по кнопке Выполнить для
    представления запроса. Закройте запрос.
  7. Убедитесь в правильности полученного запроса,
    щелкнув по имени запроса Телефонная книга
    слева в окне Все объекты Access. Закройте
    таблицу.
  8. Создайте запрос на выборку тех студентов,
    которые приехали из Москвы или Люберцы.
  9. Для этого выполите команду Создание –
    Конструктор запросов.

  10. В появившемся диалоговом окне Добавление
    таблицы
    выберите из списка имя таблицы Студент,
    щелкните по кнопке Добавить (Рисунок 14).

  11. Закончите выбор, щелкнув по кнопке Закрыть.
    Появится возможность выбора полей из таблицы
    “Студент”. Для этого достаточно дважды щелкнуть
    по именам полей или перетащить мышью названия
    полей в клетку запроса.
  12. В поле Условие отбора напишите условия
    для поля Адрес так, как показано на рисунке (Рисунок
    16):

  13. Сохраните запрос, щелкнув по кнопке Сохранить.
    Введите имя запроса Адрес и щелкните по
    кнопке ОК.

  14. Щелкните по кнопке Выполнить для
    представления запроса. Закройте запрос.

Самостоятельное задание.


  1. Составьте запрос на выборку тех студенток, имя
    которых – Ольга.
  2. Составьте запрос на выборку работников
    организаций, названия которых начинаются на
    букву Р, используя таблицу Работник.

  3. Составьте запрос на выборку всех студентов,
    которые обучаются по специальности технолога.
  4. Составьте запрос на выборку работников
    организаций, которые работают по должности инженер
    или бухгалтер.
  5. Результаты предъявите учителю.

Задание 3. Завершение работы с
программой Access.


  1. Выполните команду Файл – Выход.

  2. Если вы производили редактирование в базе
    данных, появится вопрос о сохранении изменений.
    Ответьте утвердительно.

Практическая работа №4.

Тема: Создание и использование
запросов.

Цели работы:


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

Порядок работы.

Задание 1.

  1. Откройте базу данных “Учебная база” из своей
    личной папки, которая должна находиться в папке Для
    уроков
    на Рабочем столе.
  2. В базе данных должны быть две связанные таблицы:
    Группы и Список.

Задание 2. Коррекция данных в таблице
“Группы”.


  1. Откройте таблицу Группы, выделив ее и
    щелкнув по кнопке Открыть.

  2. Добавьте недостающие записи. Исправьте
    существующие. В предыдущей работе с “Учебной
    базой” Вы удаляли первую запись. Необходимо ее
    восстановить. Вы исправляли номера учебных групп
    на 201, 202, 203, 204, 205. Верните первоначальные значения
    группам. Добавьте еще одну запись в таблицу Группы:
    Учебная группа – 106, Преподаватель – Ф.И.О.
    вашего классного руководителя, например, как на
    рисунке (Рисунок 17):
  3. Закройте таблицу Группы, предварительно
    сохранив ее.

Задание 3. Коррекция данных в таблице
“Список”.


  1. Откройте таблицу Список, выделив ее и
    щелкнув по кнопке Открыть.

  2. Восстановите недостающие две записи. Добавьте
    еще три новые записи, содержащие информацию о
    ваших одноклассниках и о Вас, например (Рисунок
    18):
    .
  3. Перейдите в режим Конструктор. Добавьте
    еще два поля – Номер телефона и Адрес, тип
    оставьте Текстовый. Сохраните изменения,
    щелкнув по кнопке Сохранить.
  4. Перейдите в режим Таблицы и заполните
    соответствующими данными поля Номер телефона
    и Адрес.
  5. Закройте таблицу Список, предварительно
    сохранив ее.

Задание 4. Создание запроса на выборку.


  1. Выполните команду Создание – Конструктор
    запросов.

  2. В появившемся диалоговом окне Добавление
    таблицы
    выберите из списка имя таблицы Список,
    щелкните по кнопке Добавить.
  3. Закончите выбор, щелкнув по кнопке Закрыть.
    Появится возможность выбора полей из таблицы “Список”.
    Для этого достаточно дважды щелкнуть по именам
    полей или перетащить мышью названия полей в
    клетку запроса.
  4. Создайте телефонную книгу для всех учащихся,
    имена которых начинаются на букву А. Для этого в
    поле Условие отбора напишите условие Like
    “А*”
    (Рисунок 19):

  5. Сохраните запрос, щелкнув по кнопке Сохранить.
    Введите имя запроса Номера телефонов и
    щелкните по кнопке ОК.

  6. Щелкните по кнопке Выполнить для
    представления запроса. Закройте запрос.
  7. Убедитесь в правильности полученного запроса,
    щелкнув по имени запроса Номера телефонов
    слева в окне Все объекты Access. Закройте
    таблицу.
  8. Создайте запрос на выборку учащихся 9-х классов,
    которых обучает преподаватель Смирнова З.В.
  9. Для этого выполите команду Создание –
    Конструктор запросов.

  10. В появившемся диалоговом окне Добавление
    таблицы
    выберите из списка имена таблиц Список
    и Группы, щелкая по кнопке Добавить (Рисунок
    20).

  11. Закончите выбор, щелкнув по кнопке Закрыть.
    Появится возможность выбора полей из таблиц Список
    и Группы. Для этого достаточно дважды
    щелкнуть по именам полей или перетащить мышью
    названия полей в клетку запроса.
  12. В поле Условие отбора напишите условия
    для поля Преподаватель из таблицы Группы и
    поля Класс таблицы Список так, как
    показано на рисунке (Рисунок 20):

  13. Сохраните запрос, щелкнув по кнопке Сохранить.
    Введите имя запроса Смирнова и щелкните по
    кнопке ОК.

  14. Щелкните по кнопке для представления запроса.
    Закройте запрос.

Задание 4. Создание запроса с
использованием логических операций в условии
отбора.


  1. Создайте запрос на выборку тех преподавателей,
    которые обучают учащихся школ в 102 или 103 группе
    из школы №2 и №3.
  2. Для этого выполите команду Создание –
    Конструктор запросов.

  3. В появившемся диалоговом окне Добавление
    таблицы
    выберите из списка имена таблиц Список
    и Группы, щелкая по кнопке Добавить.
  4. Закончите выбор, щелкнув по кнопке Закрыть.
    Появится возможность выбора полей из таблиц Список
    и Группы. Для этого достаточно дважды
    щелкнуть по именам полей или перетащить мышью
    названия полей в клетку запроса.
  5. В поле Условие отбора напишите
    условия для полей Школа и Учебная группа
    таблицы Список так, как показано на рисунке (Рисунок
    21):

  6. Сохраните запрос, щелкнув по кнопке Сохранить.
    Введите имя запроса Преподаватель и щелкните
    по кнопке ОК.

  7. Щелкните по кнопке для представления запроса.
    Закройте запрос.

Самостоятельное задание.


  1. Составьте запрос на выборку фамилий только тех
    учеников, которые родились в 1999 и 2000 годах.
  2. Составьте запрос на выборку учащихся школы №5,
    которые учатся в 9 и 11 классах.
  3. Составьте запрос на выборку всех фамилий от Куликова
    до конца алфавита.

Задание 5. Создание запроса на выборку
с использованием построителя.


  1. Выделите запрос Номера телефонов и откройте
    его в режиме Конструктор с помощью
    контекстного меню (правой кнопкой мыши).
  2. Смените поле Номер телефона на поле Адрес.
  3. Сохраните запрос под именем Адрес, выполнив
    команду Файл – Сохранить объект как.

  4. Установите курсор в строку Условие отбора
    под столбцом Фамилия.
  5. Щелкните по кнопке Построитель. Появится
    окно, в котором можно строить сложные запросы (Рисунок
    22)
    .
  6. В столбце Элементы выражений щелкните по
    кнопке Операторы, затем в столбце Категории
    выражений
    выберите Логические, в столбце Значения
    выражений
    щелкните по кнопке Not. Это слово
    появится в верхнем окне. Фамилию Архипов в
    кавычках введите вручную.
  7. Щелкните по кнопке ОК. В строке Условие
    отбора
    появится данное выражение.
  8. Щелкните по кнопке для представления запроса.
  9. Закройте запрос, сохранив его под именем Не_Архипов.

Предъявите преподавателю на экране
запросы: Номера телефонов, Смирнова,
Преподаватель, Год рождения, Школа 5, Куликов,
Адрес, Не_Архипов.

Задание 6. Завершение работы с
программой Access.


  1. Выполните команду Файл – Выход.

  2. Если вы производили редактирование в базе
    данных, появится вопрос о сохранении изменений.
    Ответьте утвердительно.

Рисунки (1-22)

В качестве примера спроектируем несложную базу данных информационной системы кинотеатра. При этом, решим следующие задачи:

  • анализ предметной области для определения состава и содержания информации, обрабатываемой информационной системой, а также пользовательских потребностей;
  • построение концептуальной модели предметной области, заключающееся в выявлении сущностей и связей между ними, а также отображение этой информации в виде ER-диаграммы;
  • физическое проектирование базы данных и ее реализация в MS SQL Server.

1 Анализ предметной области

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

  1. репертуар и расписание проката кинотеатра должен кто-то вносить в систему — соответствующую роль назовем «Менеджер»;
  2. посетитель и кассир должны иметь возможность просматривать расписание, при этом интересно расписание, начиная с некоторого момента времени (например, текущего времени). Составлять оно может по-разному:
    1. расписание показа всех фильмов, упорядоченное по времени;
    2. расписание прокатов в отдельных залах кинотеатра;
    3. расписание проката определенного фильма.

Из этого описания понятны основные функции системы, изображенные на рисунке с помощью нотации диаграммы прецедентов UML. На диаграмме не отображена роль администратора базы данных, так как администратор обычно взаимодействует с системой не через интерфейс, а через выполнение SQL-запросов.

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

Каждая сущность, кроме hall_row содержит поле id, которое идентифицирует объект. У сущности hall_row поле id не нужно, так как в одном и том же зале кинотеатра (id_hall) не могут повторяться номера рядов (number).

Когда пользователь выберет зал и прокат — система должна отобразить заполненность зала, при этом надо отобразить конфигурацию зала с пометкой занятых и свободных мест. Под конфигурацией зала тут имеется ввиду, что разные залы имеют разный размер, а ряды зала могут иметь различное количество мест. Поэтому в базе данных зал (hall) составляется из рядов (hall_row), одним из параметров которых является вместимость (capacity).

2 Построение концептуальной модели

Выше были отображены основные сущности, но не отображены роли пользователей, хотя их тоже должна хранить система. Они показаны ниже на ER-диаграмме в нотации Чена [1].

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

  1. создании всех таблиц базы;
  2. добавлении залов и рядов в них;
  3. добавлении кассиров и менеджеров.

На диаграмме не отражена роль посетителя, так как:

  1. билет не содержит информации о том, кто его купил (посетитель может подарить билет другу);
  2. система вообще не хранит информацию о посетителях;
  3. покупку билета он осуществляет через общение с кассиром вне системы;
  4. никакие данные в базе посетитель самостоятельно изменить не может.

На диаграмме проставлены кратности связей, например, видно, что один менеджер может добавить много (N) прокатов. В этой базе не оказалось связей типа N:M, сложных или рекурсивных связей — такие связи являются препятствиями в проектировании и решаются изменением ее структуры.

Для формирования схемы данных необходимо сначала дополнить ER-диаграмму реквизитами сущностей (уточнить ее) — результат приведен на рисунке.

В ходе анализа этой диаграммы были найдены несколько недочетов, допущенных при выделении сущностей системы:

  • система не должна позволять продавать несколько билетов на одно и то же место при одном показе фильма. Это значит, что вторичным ключем для Билета должен быть кортеж (id_screening, row, seat). Однако, тогда нет необходимости в id билета — на билеты не ссылается ни одна таблица, это поле может быть удалено. Изначально id был добавлен потому, что обычно на билетах в кинотеатрах печатается номер;
  • билет хранит поле id_hall, это было сделано для того, чтобы посетитель кинотеатра мог найти свой кинозал. Однако, билет, выдаваемый пользователю — это не тоже самое, что информация о билетах, хранимая в базе данных. Билет базы данных хранит также поле id_screening, а Показ уже ссылается на id_hall. Таким образом, в базе нет смысла хранить id_hall в таблице билетов.

Исправленная ER-диаграмма приведена ниже:

Таблица менеджеров и кассиров не объединены в таблицу Users так как вопросы разграничения прав доступа в различных СУБД решаются по-разному. Так, в MS SQL пользователи добавляются с помощью специальных запросов типа:

CREATE LOGIN Manager_Name WITH PASSWORD='Some Passwrd';

при этом вообще нет необходимости хранить информацию об их логинах и паролях в таблицах. Однако, вопросы разграничения доступа решаются позже — на этапе физического проектирования.

3 Физическое проектирование

ER-диаграмма отражает основные таблицы, связи и атрибуты, на ее основе можно построить модель БД. На ER-диаграммы нет стандарта, но есть ряд нотаций (Чена, IDEFIX, Мартина и т.п.) [2], но на модель предметной области не удалось найти ни стандарта, ни нотаций. Однако, в ходе построения такой диаграммы обязательно выделяются ключевые поля (внешние и внутренние), иногда — индексы и типы данных. Схема базы данных, приведенная на рисунке, выполнена с использованием открытого инструмента plantuml [3], при этом:

  1. для связей используется нотация Мартина («вороньи лапки»);
  2. таблицы изображены прямоугольниками, разделенными на 3 секции:
    1. имя таблицы;
    2. внутренние ключи (помечаются маркером);
    3. остальные поля, при этом обязательные поля помечаются маркером.

3.1 Составление и нормализация реляционных отношений

Схема отношения «Билеты» (tickets):

Наименование поля

Тип поля

Размер поля

Значение по умолчанию

Ограничения

Ключ или индекс

id_screening

int

4

IDENTITY(1,1)

обязательное поле

первичный ключ (составной)

row

smallint

2

обязательное поле

первичный ключ (составной)

seat

smallint

2

обязательное поле

первичный ключ (составной)

Схема отношения «Прокаты» (screening):

Наименование поля

Тип поля

Размер поля

Значение по умолчанию

Ограничения

Ключ или индекс

id

int

4

IDENTITY(1,1)

обязательное поле

Первичный ключ, уникальный

hall_id

int

4

обязательное поле

Внешний ключ к hall

film_id

int

4

обязательное поле

Внешний ключ к film

time

datetime

8

обязательное поле

Схема отношения «Кинозалы» (hall):

Наименование поля

Тип поля

Размер поля

Значение по умолчанию

Ограничения

Ключ или индекс

id

int

4

IDENTITY(1,1)

обязательное поле

первичный ключ

name

varchar

100

обязательное поле

первичный ключ

Схема отношения «Ряд кинозала» (hall_row):

Наименование поля

Тип поля

Размер поля

Значение по умолчанию

Ограничения

Ключ или индекс

id_hall

int

4

IDENTITY(1,1)

обязательное поле

первичный ключ (составной)

number

smallint

2

обязательное поле

первичный ключ (составной)

capacity

smallint

2

обязательное поле

Схема отношения «Фильмы» (film):

Наименование поля

Тип поля

Размер поля

Значение по умолчанию

Ограничения

Ключ или индекс

id

int

4

IDENTITY(1,1)

обязательное поле

первичный ключ

name

varchar

255

обязательное поле

description

varchar

2000

NULL

необязательное поле

При выборе типов данных и описании их размеров использовалась документация [4]. Для ряда полей, где известно что значениями будут целые числа в небольшом диапазоне используется тип smallint. Для строковых полей используется varchar, однако мог бы использоваться и тип char, критично это только для поля film.description. Дело в том, что описания фильмов бывают длинными, поэтому при создании таблицы надо указать заранее «достаточный» размер поля, например 2000 символов. Однако, согласно документации, при использовании типа char, под все описания фильмов будет выделено 2000 символов, а при использовании varchar более короткие описания будут потреблять меньше памяти — ровно столько, сколько необходимо.
Разработанная схема БД находится в:

  1. первой нормальной форме, так как в качестве доменов выступают только скалярные значения и информация в таблицах не дублируется. Почти во всех таблицах есть идентификатор (id), а в остальных — в качестве первичного ключа выступает кортеж (набор полей);
  2. во второй и третьей нормальных формах, так как каждый не ключевой атрибут неприводимо и нетранзитивно зависит от первичного ключа. Для всех таблиц нашей БД это очевидно — количество мест в ряду зависит только от пары (номер зала, номер ряда) и никаким другим образом вывести его из информации в базе нельзя.

Таким образом, схема базы данных находится в нормальной форме Бойса-Кодда [5].

3.2 Инсталляция MS SQL Server и создание пустой базы

Был скачан и проинсталлирован MS SQL Server 2014 [6], так как работа выполнялась на 32х-разрядном компьютере, а более новые версии программы не поддерживают такую архитектуру. При установке была выбрана «Установка нового изолированного экземпляра SQL Server» с параметрами по умолчанию. Как показано на рисунке, при установке задано имя экземпляра «my_project».

В результате, на компьютер была установлена программа SQL Server Management Studio, внутри которой выбирается имя сервера, как показано ниже:

После выбора сервера в обозревателе объектов отобразились компоненты сервера, в том числе вкладка «базы данных». В контекстом меню был выбран пункт добавления базы, в качестве имени указано «my_db», как показано на рисунке:

3.3 Формирование таблиц

После создания базы данных в обозревателе объектов появилась возможно добавить в базу данных таблицы. На рисунке ниже показан процесс добавления таблицы hall — видно, что указываются имена полей и их типы, а для ключевого поля указано «начальное значение» и «шаг приращения».

Ключевые поля добавляются в таблицы с помощью контекстоного меню, выпадающего после клика по полю правой кнопкой. Однако, для таблиц с составными и внешними ключами, например hall_row сделать это через графический интерфейс не получилось. В нем были созданы только заготовки таблиц, для них были сгенерированы скрипты T-SQL и дополнены соответствующими параметрами. Для генерации T-SQL скрипта для таблицы в меню выбирается «создать скрипт для таблицы -> используя DROP и CREATE». Сгенерированные скрипты были поправлены, в результате получено следующее:

USE [my_db]
GO

DROP TABLE [dbo].[hall_row]
GO

DROP TABLE [dbo].[tickets]
GO

DROP TABLE [dbo].[screening]
GO

DROP TABLE [dbo].[hall]
GO

DROP TABLE [dbo].[film]
GO

CREATE TABLE [dbo].[film](
  id int IDENTITY(1,1) NOT NULL,
  name varchar(255) NOT NULL,
  description varchar(2000) NOT NULL,
  CONSTRAINT [PK_film] PRIMARY KEY CLUSTERED 
  (
    id ASC
  )
)
GO


CREATE TABLE [dbo].[hall](
  id int IDENTITY(1,1) NOT NULL,
  name nvarchar(100) NOT NULL,
  CONSTRAINT [PK_hall] PRIMARY KEY CLUSTERED 
  (
    id ASC
  ) 
)
GO

CREATE TABLE [dbo].[screening](
  id int IDENTITY(1,1) NOT NULL,
  hall_id int NOT NULL,
  film_id int NOT NULL,
  time datetime NOT NULL,

  FOREIGN KEY (hall_id)  REFERENCES hall (id),
  FOREIGN KEY (film_id)  REFERENCES film (id),
  
  CONSTRAINT [PK_screening] PRIMARY KEY CLUSTERED 
  (
    id ASC
  )
)
GO

CREATE TABLE [dbo].[hall_row](
  id_hall int NOT NULL,
  number smallint NOT NULL,
  capacity smallint NOT NULL,

  FOREIGN KEY (id_hall)  REFERENCES hall (id),

  CONSTRAINT [PK_hall_row] PRIMARY KEY CLUSTERED 
  (
    id_hall, number
  )
)
GO

CREATE TABLE [dbo].[tickets](
  id_screening int NOT NULL,
  row smallint NOT NULL,
  seat smallint NOT NULL,
  cost int NOT NULL,

  FOREIGN KEY (id_screening)  REFERENCES screening (id),

  CONSTRAINT [PK_ticket] PRIMARY KEY CLUSTERED 
  (
    id_screening, row, seat
  )
)
GO

Измененный скрипт был запущен в MS SQL Management Studio, в результате были обновлены таблицы. Затем, на их основе сгенерирована схема базы данных:

3.4 Наполнение базы

Для наполнения базы был создан такой запрос (приведен фрагмент):

INSERT INTO [dbo].[film] (name, description)
  VALUES ('Багратион', '«Багратион» — советский двухсерийный историко-биографический фильм 1985 года о жизни прославленного российского полководца Петра Ивановича Багратиона — героя Отечественной войны 1812 года. Совместное производство «Грузия-фильм» и «Мосфильм». Режиссёры Гиули Чохонелидзе и Караман Мгеладзе. Премьера — декабрь 1985 года. ')

INSERT INTO [dbo].[hall] (name) VALUES ('красный зал')
INSERT INTO [dbo].[hall] (name) VALUES ('желтый зал')
INSERT INTO [dbo].[hall] (name) VALUES ('синий зал')

INSERT INTO [dbo].[hall_row] (id_hall ,number ,capacity) VALUES (1, 1, 10)
INSERT INTO [dbo].[hall_row] (id_hall ,number ,capacity) VALUES (1, 2, 15)
INSERT INTO [dbo].[hall_row] (id_hall ,number ,capacity) VALUES (1, 3, 20)

INSERT INTO [dbo].[screening] (hall_id ,film_id, time) VALUES (1, 1, '20210101 10:35:00 AM')
INSERT INTO [dbo].[screening] (hall_id ,film_id, time) VALUES (1, 1, '20210101 00:00:00 AM')
INSERT INTO [dbo].[screening] (hall_id ,film_id, time) VALUES (1, 2, '20210101 1:35:00 PM')

INSERT INTO [dbo].[tickets] (id_screening ,row ,seat ,cost) VALUES (1, 2, 3, 150)
INSERT INTO [dbo].[tickets] (id_screening ,row ,seat ,cost) VALUES (1, 3, 3, 200)
INSERT INTO [dbo].[tickets] (id_screening ,row ,seat ,cost) VALUES (1, 3, 5, 150)

% ...

Запрос выполняется успешно, а результаты его выполнения проверялись с помощью SELECT-запросов:

3.5 Проектирование наиболее востребованных запросов

Как отмечалось в разделе 1, при продаже билета посетитель кинотеатра устно передает кассиру номер и место. Кассир вводит эти данные в систему, которая не должна позволить продать билеты на несуществующие места. Для этого программа-клиент кассира должна получить вместимость ряда конкретного зала. Чтобы получить количество мест во втором ряду третьего зала надо выполнить запрос:

SELECT capacity FROM hall_row WHERE id_hall = 3 AND number = 2

программа клиент получит набор строк, соответствующих условию запросу. Если запрос выполнился успешно — в этом наборе всегда будет одна строка, иначе — пустое множество строк.

Затем, программа-клиент должна проверить не продано ли это место. Для этого можно выполнить отдельный SELECT, но можно попробовать выполнить INSERT INTO и если место было ранее продано — запрос завершится с ошибкой, ведь на таблицу билетов наложены соответствующие ограничения.

Чтобы сформировать расписание показов фильмов, прокатываемых с определенного момента (обычно в запрос будет поставляться текущее время) можно использовать такой запрос:

SELECT * FROM film, screening WHERE 
time > '20210101 11:00:00 AM' AND screening.film_id = film.id;

в данном случае в запросе используется две таблицы, которые связываются по идентификатору. Выбираются названия фильмов, показ которых начинается после 11 часов 01.01.2021. Результат выполнения запроса:

Для получения расписания проката в конкретном зале кинотеатра надо добавить в запрос связь с третьей таблицей и ограничения на эту таблицу:

SELECT film.name, hall.id, screening.time FROM film, screening, hall WHERE 
time > '20210101 11:00:00 AM' AND screening.film_id = film.id 
AND screening.hall_id = hall.id AND hall.id = 2;

При соединении нескольких таблиц в вывод попадают лишние столбцы, чтобы этого избежать в приведенном запросе явно указаны интересующие нас столбцы — название фильма, номер зала и время.

Для получения расписания проката конкретного фильма — можно вставить в запрос его идентификатор:

SELECT film.name, hall.name, screening.time FROM film, screening, hall WHERE 
time > '20210101 11:00:00 AM' AND screening.film_id = film.id 
AND screening.hall_id = hall.id AND film.id = 2;

Если вдруг нас интересуют фильмы, названия которых соответствует определенному шаблону — можно использовать оператор LIKE. Так, приведенный ниже запрос выбирает все фильмы, прокатываемые с определенного момента, названия которых начинаются с символа 'Б', шаблон '%' задает в T-SQL любое количество любых символов.

SELECT film.name, hall.name, screening.time FROM film, screening, hall WHERE 
time > '20210101 11:00:00 AM' AND screening.film_id = film.id 
AND screening.hall_id = hall.id AND film.name LIKE 'Б%'; 

Чтобы вывести расписание прокатов, упорядоченное по залу и дате нужно применить конструкцию ORDER BY:

SELECT film.name, hall.name, screening.time FROM film, screening, hall WHERE 
time > '20210101 11:00:00 AM' AND screening.film_id = film.id 
AND screening.hall_id = hall.id ORDER BY hall.name, screening.time;

Список полезной литературы

  1. Учимся проектированию Entity Relationship — диаграмм // Хабр URL: https://habr.com/ru/post/440556/ (дата обращения: 02.01.2021).
  2. Технологии баз данных. Лекция 3. Модель «Сущность-связь». URL: https://docplayer.ru/27886777-Model-sushchnost-svyaz-tehnologii-baz-dannyh-lekciya-3.html (дата обращения: 02.01.2021).
  3. Entity Relationship Diagram. URL: https://plantuml.com/ru/ie-diagram (дата обращения: 03.01.2021).
  4. Transact-SQL Reference (Database Engine) // Microsoft Docs URL: https://docs.microsoft.com/ru-ru/sql/t-sql/language-reference?view=sql-server-ver15 (дата обращения: 05.01.2021).
  5. Нормализация отношений. Шесть нормальных форм // Хабр URL: https://habr.com/ru/post/254773/ (дата обращения: 05.01.2021).
  6. Материалы для скачивания по SQL Server // Microsoft URL: https://www.microsoft.com/ru-ru/sql-server/sql-server-downloads (дата обращения: 05.01.2021).
  7. Другой пример проектирования базы данных (MySQL). URL: https://pro-prof.com/forums/topic/db_example

Задание по теме “Базы данных” Вар. 1

Дан набор полей: фамилия, имя, дата рождения, пол, образование, страна проживания, оклад, номер медицинского полиса, размер заработной платы,  дата проведения соревнований, место работы, должность, количество детей, семейное положение, вид спорта, дата последнего посещения врача, диагноз, занятое место, ИНН, телефон, домашний адрес.

Какие из перечисленных полей необходимо будет включить в БД «Поликлиника»?

Описать структуру таблицы, указать первичный ключ.

Спроектировать БД «Программа передач на неделю», с помощью которой можно будет получить ответы на вопросы:

Какие фильмы идут в четверг?

Во сколько будут показаны программы новостей в понедельник по каналам  НТВ и РОССИЯ?

Описать структуру таблицы, указать первичный ключ. Какие поля следует включить в каждый запрос, какие условия отбора накладываются на эти поля?

Какое место будет занимать команда «Arsenal» после сортировки данных по полю «забито» в убывающем порядке?

команда

Забито

пропущено

всего очков

1

Chelsi

16

7

9

2

Arsenal

24

2

22

3

Manchester Un

12

9

3

4

Newcastle

26

6

20

1.  2

2.  3

3.  4

4.  1

Задание по теме “Базы данных” Вар. 2

Дан набор полей: фамилия, имя, дата рождения, пол, телефон, образование, страна проживания, оклад, номер медицинского полиса, размер заработной платы, дата проведения соревнований, место работы, должность, количество детей, семейное положение, вид спорта,  дата последнего посещения врача, диагноз, занятое место, ИНН, домашний адрес.

Какие из перечисленных полей необходимо будет включить в БД «Банк (получение кредита)»?

Описать структуру таблицы, указать первичный ключ.

Спроектировать БД «Программа передач на неделю», с помощью которой можно будет получить ответы на вопросы:

В какое время идут сериалы в четверг?

Какие программы о животных идут в субботу по каналу Культура?

Описать структуру таблицы, указать первичный ключ. Какие поля следует включить в каждый запрос, какие условия отбора накладываются на эти поля?

Дана база данных телефонов предприятия.

Какое место займет  запись «Самойлова«, после сортировки  данных по полю «Имя» в возрастающем порядке?

1.   4

2.   1

3.   2

4.   3

Фамилия

Имя

Должность

Номер телефона

1

Иванов

Сергей  И.

завхоз

2-13

2

Орлов

Петр    Н.

инженер ТБ

1-25

3

Трошкин

Леонид  В.

директор

2-22

4

Самойлова

Наталья Г.

секретарь

1-15

 Лабораторная работа № 13

Создание реляционной базы данных, заполнение БД,
создание форм.

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

Цель работы:

1)   
Создать с помощью конструктора
реляционную БД «Поликлиника», в качестве основных объектов которой будут
использованы три таблицы: «Посещения», «Пациент» и «Врач». Таблицы «Посещения»
и «Врач» должны быть связаны с таблицей «Пациент».

2)   
Создать три запроса к
созданной БД, из которых один запрос должен быть универсальным.

3)   
Создать форму с помощью
мастера форм и конструктора.

Ход работы:

I.
Создание базы данных «Поликлиника».

1.    
Загрузить офисную
программу
ACCESS.

2.    
Создать новую базу данных 
[Файл, Создать новую базу данных…]
, сохранить её в своей папке и присвоить имя «Поликлиника».

              

3.    
Откроется окно БД
«Поликлиника»

Практическая работа

«Создание реляционной базы данных»

БД «Поликлиника» создаётся из трёх таблиц: «Врач»; «Посещение»; «Пациент»

     Таблица в программе ACCESS создаётся двумя шагами:

§ 
сначала создаётся
структура таблицы;

§ 
затем таблица заполняется
данными.

1.    
Для создания таблицы
заходим на ленту Создание и выбираем  
«Создание таблицы в режиме конструктора»
и
  создаем структуру таблицы
«Врач»

               

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

2.      
Открыть таблицу «Врач», двойным щелчком «мыши» и построчно
заполнить её данными.

3.    
Аналогично создать таблицы
«Пациент» и «Посещение»

4. Таблица «Пациент»
является базовой таблицей, таблицы «Посещения» и «Врач» — подчиненными.
Необходимо установить связи между таблицами.

5. Ввести команду Сервис, Схема
данных
.

Появится диалоговая панель Добавить таблицу.
С помощью клавиши {
Shiftœ или › выделить три таблицы :«Врач»; «Посещение»;
«Пациент»
и нажать Добавить. Выделенные таблицы будут добавлены в
специальное окно – Схема данных.

6.    
Свяжем таблицу «Врач» с
таблицей «Пациент». Для этого перетащим мышкой поле
№ участка из таблицы «Врач» к одноимённому полю в
таблицу «Пациент».

     В появившейся диалоговой панели Связи установим флажок на Обеспечение
целостности данных
, а затем на каскадное обновление связанных полей
и каскадное удаление связанных полей. В завершении щелкнуть по кнопке Создать
(или Ок)
.

                               

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

Если связи созданы –
создана и БД. В противном случае необходимо искать ошибки в структуре таблиц
или данных.

II.  Создание запроса
в реляционной базе данных «Поликлиника»

Создадим запрос,
который осуществляет выборку информации, необходимой для вывода на экран:

 списка пациентов
участка №1, посетивших поликлинику после 15.05.98 г.

1. В группе объектов в окне Поликлиника: база данных
выбрать объект
Запрос и Создание запроса в режиме конструктора.

2. Добавить все три
таблицы, выделяя их, удерживая клавишу {
Shift}.

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

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

В результате получим
для первого участка следующие записи:

4. Сохранить запрос
под именем
Летние
посещения
.

5.  Для создания универсального запроса необходимо в нужном поле в строке «Условие
отбора» ввести фразу в квадратных скобках, например, создать
универсальный запрос поиска информации по диагнозу.

6. Пустить запрос на запуск в появившемся окне ввести нужный диагноз,
например: ОРЗ.

Результат запроса по ОРЗ.

7.  Запрос
сохранить как «Диагноз»

8. Создать
формы и отчеты для таблиц

5.  Для создания универсального запроса необходимо в нужном поле в строке «Условие
отбора» ввести фразу в квадратных скобках, например, создать
универсальный запрос поиска информации по диагнозу.

6. Пустить запрос на запуск в появившемся окне ввести нужный диагноз, например:
ОРЗ.

Результат запроса по ОРЗ.

7. 
Запрос сохранить как «Диагноз»

8. Создать
формы и отчеты для таблиц

III
Создание форм с помощью мастера и конструктора форм

Задание 1. Создание  автоформ

1.
Выберите объект  базы- Формы. Нажмите кнопку  Создать, в
открывшемся окне Новая форма выберите способ создания формы
«Автоформа в столбец»,
в качестве источника укажите таблицу «Врач».

2. Сохраните
созданную форму  с именем – «Врач»

3. Откройте форму и введите новую запись с
использованием формы: № участка- 3, ФИО врача — Сидорова Л.П., открыв таблицу
«Врач», убедитесь, что новая запись появилась.

3адание 2. Создание формы с помощью «Мастера
форм».

1. Выберите объект  базы- Формы.  Выберите Создание форм с помощью
мастера,
в качестве источника укажите таблицу Пациент.

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

3. Внешний вид формы в один столбец, стиль официальный (перемещение
между окнами кнопкой далее)

4. Сохраните форму под именем «Пациент»

5. Самостоятельно добавьте еще двух пациентов участка № 3.

     Внешний вид формы «Пациент»,

Задание 3. Создание формы с помощью
конструктора.

1. Выберите объект  базы- Формы.  Нажмите  кнопку Создать  в
открывшемся окне выберите конструктор, в качестве источника
укажите таблицу Посещение.

2. При нажатии кнопки Далее появится следующее
окно, панель инструментов
и схема таблицы.

3. Добавьте к форме Заголовок, меню Вид-Заголовок/примечание
формы.

4.
Пользуясь кнопкой  надпись,  на панели элементов создайте  в области заголовка
надпись «Посещение».  Параметры заголовка – полужирный шрифт, размер – 14,
цвет – синий.

5. Рядом с надписью «Посещения»  создайте кнопку для
закрытия формы. Для этого на панели элементов используйте элемент Кнопка, перенеся
ее курсором мыши  в нужное место формы и вычерчивая ее рамки, при этом
запустится мастер Создание кнопок.

6.  Выберете категорию Работа с формой и действие Закрыть
форму.  
Далее  Стоп, Кнопка 1 и Готово.

7. В область данных добавьте  поля с помощью
перетаскивания мышью из схемы таблицы.

 

8. В Область данных добавьте  две кнопки категории переходы по записям
Предыдущая запись(верхняя стрелка) и следующая запись (нижняя стрелка).

9.
Сохраните форму под именем Посещение. Откройте форму Посещение ее
примерный конечный вид должен выглядеть следующим образом.

 

10. Научитесь перемещаться по записям с помощью созданных вами кнопок и
закрывать форму с кнопки Стоп.

Понравилась статья? Поделить с друзьями:
  • Как составить вопросительное приложение в английском
  • Как найти 2 часть мороженщика
  • Как найти объем пирамиды равностороннего треугольника
  • Как найти розовую жену
  • Как исправить опущение матки после родов