Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
22700_62_OSBD_Prakticheskie.doc
Скачиваний:
20
Добавлен:
11.02.2015
Размер:
1.03 Mб
Скачать

7.5. Вопросы и литература

1. Что понимают под ограничениями целостности.

2. Какие ограничения поддерживаются в SQLсервере.

3. Поясните термин ключи-кандидаты.

4. Зачем используются. NULL-значения и когда они могут появляться.

5. Что означает каскадное обновление.

6. Приведите пример нарушения ссылочной целостности.

7.. Чем различаются зависимые и независимые сущности.

8. Поясните термины внешний ключ и первичный ключ.

Учебник / Учебное пособие

Раздел

Страницы

Карпова Т.С. Базы данных: модели, разработка, реализация. - СПб.: Питер, 2001.- 304 с.; ил.

Глава 7

121-134

8. Работа с данными. Язык баз данных

8.1. Цель практического занятия

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

Данное занятие ориентировано на разборе решений задач по построению запросов к базе данных и основывается на материале предшествующих занятий 5,7, а также на материале, изложенном вМетодических указаниях к лабораторным и практическим занятиям по дисциплине «Операционные системы и базы данных».

Занятие предназначено для содействия выполнения заданий по лабораторным занятиям 3 и 4..

8.2. План занятия

Для подготовки к занятию требуется изучить материал к лабораторным и практическим занятиям №3 и №4.

8.3 . Используемые технологии

Для лучшего усвоения материала желательно проведение занятия с использованием компьютера.

8.4. Примеры для анализа

Первая группа примеров основывается на схеме данных, показанной на Рис. 5.1.

8.4.1. Пример параметрического запроса с групповой обработкой

Конкретный запрос- «Сколько всего куплено машин цвета [параметр] ».

Необходимые таблицы: «цвета автомобилей», «экземпляры автомобилей» и таблица с фактами покупки «покупатель-автомобиль».

Рис. 8.1 Конструктор запроса «Сколько всего машин [цвета] куплено»

Запрос использует группировку по ключевому полю vin, чтобы подсчитать количество купленных автомобилей. Условием выборки является параметр [цвет].

В форме SQLзапросимеет вид:

SELECT Count(customer_automobile.vin) AS [Count-vin], colors.color_name_sale

FROM colors

INNER JOIN (automobile INNER JOIN customer_automobile

ON automobile.vin = customer_automobile.vin)

ON colors.color_id = automobile.color_id

GROUP BY colors.color_name_sale

HAVING (((colors.color_name_sale)=[Цвет]));

Рис. 8.2 Исполнение и результат «Сколько всего машин [цвета] куплено»

8.4.2 Пример запроса на поиск максимального/минимального значения

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

Рис. 8.3 Запрос «Найти самый дешевый седан»

Запросиспользует групповую операцию Min.В формеSQLзапросимеет вид:

SELECT Min(models.cost_basis) AS [Min-cost_basis], bodywork.bodywork_name

FROM bodywork INNER JOIN models ON bodywork.bodywork_id = models.bodywork_id

GROUP BY bodywork.bodywork_name

HAVING (((bodywork.bodywork_name)="Седан"));

Рис. 8.4 Результат работы запроса «Найти самый дешевый седан»

8.4.3 Пример запроса с предварительно определяемым условием выбора

Конкретный запрос- «В какой группе средний рейтинг не превышает среднюю оценку за практику».Соответствующая схема данных показана на Рис. 5.2.

Поскольку условие выбора (средняя оценка за практику и рейтинг по группам) не является известным значением, то сначала потребуется найти:

  • значения среднего рейтинга для каждой группы (значений столько, сколько групп;

  • среднюю оценку за практику по всем группам (1 значение).

Это выполняется с помощью запроса на групповую обработку.

Рис. 8.5 Запрос «Средний рейтинг в группе»

В форме SQLзапросимеет вид:

SELECT Avg(stud.raiting) AS [Avg-raiting], stud.gruppa

FROM stud

GROUP BY stud.gruppa;

Рис. 8.6 Запрос «Средняя оценка за практику»

В форме SQLзапросимеет вид:

SELECT Avg(Stud_prak.ocenka) AS [Avg-ocenka]

FROM Stud_prak;

Рис. 8.7 Запрос на получение конечного результата

В последнем запросе в качестве условия отбора используется операция отношения <=для сравнения предварительно вычисленныхзначений.

В форме SQLзапросимеет вид:

SELECT [9_средний рейтинг].gruppa, [9_средний рейтинг].[Avg-raiting]

FROM [9_средний рейтинг], 9_под_З_ср_оценка

WHERE ((([9_средний рейтинг].[Avg-raiting])<=[9_под_З_ср_оценка]![Avg-ocenka]));