
- •Часть 1
- •0804 - "Компьютерные науки"
- •Содержание
- •Вступление
- •Ознакомиться с назначением и основными технологическими приемами использования инструментальной case-системы eRwin 4.0.
- •Изучить графические характеристики диаграммы в eRwin. Методические указания к выполнению лабораторной работы
- •Общие сведения
- •Назначение системы
- •Уровни представления информации в системе eRwin
- •4. Моделирование данных в eRwin
- •4.1 Процесс построения информационной модели
- •4.3. Сущности (Entity) в eRwin
- •4.4. Описание работы с системой
- •– Изучить процесс построения простейших er-диаграмм для заданной предметной области.
- •Методические указания к выполнению лабораторной работы
- •1. Исходные данные
- •2. Постановка задачи
- •3. Создание логической модели данных
- •Методические указания к выполнению лабораторной работы
- •Общие сведения по работе
- •1.1. Создание файла бд в среде субд ms Access
- •1.2. Генерация структуры бд в среде eRwin для целевой субд
- •2. Порядок выполнения работы
- •Методические указания к выполнению лабораторной работы
- •1. Общие сведения о работе с таблицами данных в субд ms Access
- •1.1. Создание новой или открытие существующей базы данных
- •1.2. Создание таблицы базы данных.
- •1.3. Задание отношений ссылочной целостности между таблицами.
- •1.4. Ввод информации.
- •1.5. Создание таблиц при помощи мастера таблиц.
- •2. Порядок выполнения работы
- •Методические указания к выполнению лабораторной работы
- •1. Общие сведения о работе с запросами в субд ms Access
- •Команда select
- •Команда update
- •Команда insert
- •Команда delete
- •1.5. Особенности записи конструкции where
- •1.6. Примеры написания простых sql запросов для тестовой предметной области
- •1.7. Построения запросов в режиме конструктора
- •Порядок выполнения работы
- •Контрольные вопросы
- •ЗаключенИе Перечень рекомендуемых источников
- •“ Організація баз даних і знань ”
- •0804 - "Комп'ютернi науки"
- •В авторській редакції
1.6. Примеры написания простых sql запросов для тестовой предметной области
Для изучения возможности построения SQL-запросов выбран фрагмент предметной области (ПрО) «Вызовы скорой помощи», который содержит информацию о пациентах, а также о пунктах скорой помощи, в которых работают сотрудники различной специализации и квалификации: врачи, мед. сестры, шоферы и т. д., объединяющиеся в бригады.
Пусть логическая модель ПрО представлена в виде набора информационных отношений (ИО), рис. 5.1, представленных соответствующими реляционными таблицами в СУБД MS Access.
Рисунок 5.1 – Логическая модель данных тестовой ПрО «Вызовы скорой помощи»
Создание запросов в виде инструкций языка SQL возможно при наличии на экране запросной формы, которая появиться при активации режима конструктора запросов, рис. 5.2. Далее необходимо воспользоваться пунктом меню SQL и вручную написать запрос, используя, основные операторы языка SQL – SELECT, UPDATE, DELETE, INSERT.
Рисунок 5.2 – Диалоговое окно запросов
Для тестовой ПрО возможны следующие запросы на выборку. В самом простом варианте использования оператора SELECT из таблицы извлекаются сразу все данные.
(1) Простой запрос SELECT отбирает записи, соответствующие условиям, перечисленным в предложении WHERE. Если не задавать предложение WHERE, запрос возвращает все строки таблицы. Например, запрос следующего вида:
Вывести список всех пациентов
SELECT * FROM Pacient;
Предложение WHERE не является обязательным, однако, если оно присутствует, то должно следовать после предложения FROM. Например, необходимо выбрать всех пациентов с фамилией Самохин (WHERE FIO_pacienta = 'Самохин') или всех пациентов в возрасте от 18 до 30 лет (WHERE Vozrast Between 18 And 30). Важно отметить, что символьные (строковые) значения полей должны записываться в одинарных ковычках – ‘ ‘, а целочисленные переменные процессор БД воспринимает без дополнительных знаков.
(2) Для реализации запроса с выборкой по дате необходимо определить является ли используемая Вами версия процессора БД американского, либо российского формата.
При указании аргумента условиеОтбора литералы даты (символы дат) должны вводиться в американском формате, даже если используется неамериканская версия ядра базы данных Jet. Например, дата 24 мая 2007 года записывается в России как 24.05.07, а в США как 5/24/07. Обязательно заключите даты в символы «решетки» (#), как показано в следующих примерах.
Так, для отбора записей о всех пациентах, совершивших вызов скорой помощи 01.12.2007 необходимо использовать следующую инструкцию SQL:
SELECT Pacient.FIO_pacienta FROM Pacient
WHERE Pacient.pacient_id IN
(SELECT pacient_id FROM Vizov
WHERE (Vizov.Data_vremya =#12/01/2007#))
Кроме того, можно применять функцию DateValue, которая поддерживает международные стандарты, заданные в Microsoft Windows.
Например, для отбора записей всех вызовов скорой помощи, которые совершились 01.12.2007 в американском варианте представления дат в процессоре БД, текст запроса имеет следующий вид:
SELECT * FROM Vizov
WHERE Vizov.Data_vremya = DateValue('12/01/2007');
Для российского варианта процессора БД текст запроса выглядит таким образом:
SELECT * FROM Vizov
WHERE Vizov.Data_vremya = DateValue('01.12.2007');
-
Запрос на добавление – INSERT INTO:
Добавление новой бригады стоматологов:
INSERT INTO Brigada ( Brigada_id, specializaciya )
VALUES (10, 'Стоматология')
-
В запросе на обновление UPDATE предложение WHERE может содержать до 40 выражений, связанных логическими операторами, такими как AND, OR и т.д., рассмотрим сложные или вложенные запросы на примере тестовой ПрО.
Изменение фамилии пациента, совершившего вызов пятой бригады 08.12.2006, на Фонюхова.
UPDATE Pacient SET FIO_pacienta = 'Фонюхов ' WHERE Pacient.pacient_id
IN
(SELECT pacient_id FROM Vizov WHERE
(Vizov.Data_Vremya = #12/08/2006#) AND (Vizov.Brigada_id IN
(SELECT Brigada.Brigada_id FROM Brigada WHERE Brigada_id =5)));
(5) Запрос на удаление – DELETE.
-
Удаление бригады стоматологов.
DELETE * FROM Brigada WHERE Brigada.specializaciya='Стоматология';
-
Удалить все бригады стоматологов, которые обслуживают пациентов на машинах вместимостью менее 10 мест.
DELETE * FROM Brigada WHERE (Brigada.Specializaciya='Стоматология') AND brigada_id IN
(SELECT brigada_id FROM Vizov WHERE Nomer_mashini IN
(SELECT Mashina.Nomer_mashini FROM Mashina
WHERE Kolichestvo_mest<10));
При этом условие WHERE используется для фильтрации записей, которые нужно удалить.