русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

WITH CHECK OPTION


Дата добавления: 2015-07-09; просмотров: 680; Нарушение авторских прав


Теперь попытка ввести через представление VStudentNOINSERTIST03 данных о студенте группы АИС-03 (IDGroup=2)

INSERT INTO VStudentNOINSERTIST03

VALUES('050007','1111111118','Васин В.И.', 2, '8701', '192314', '01.06.2002', 'УВД г.Ухты');

Приведет к появлению следующего сообщения об ошибке:

Server: Msg 550

The attempted insert or update failed because the target view either specifies WITH CHECK OPTION or spans a view that specifies WITH CHECK OPTION and one or more rows resulting from the operation did not qualify under the CHECK OPTION constraint.

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

Пример 81

Задача.

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

Решение.

Приведенное ниже представление не только значительно уменьшит сложность реализуемых через него к базе данных запросов, но и позволит пользователю апеллировать привычными для него понятиями: Название дисциплины, Имя студента и т.п. Кроме того, оно полностью скрывает истинную структуру базы данных.

CREATE VIEW VPROGRESS

AS

SELECT

NameGroup [Группа],

S.NRecordBook [№ зачетки],

StName [Имя студента ],

NameSubject[Название дисциплины],

NameReport[Вид отчетности],

NTerm[№ семестра],

PIN [Персонифицированный номер преподавателя],

Mark[Оценка]

FROM Progress P INNER JOIN Student S

ON P.NRecordBook=S.NRecordBook

INNER JOIN SGroup SG



ON S.IDGroup=SG.IDGroup

INNER JOIN Subject SB

ON P.IDSubject=SB. IDSubject

INNER JOIN Report R

ON P.IDReport=R.IDReport

Реализация запроса

SELECT *

FROM VProgress;

к представлениюVProgress позволит получить следующий результат:

Результат выполнения запроса.

Пример 82

Задача.

Вывести успеваемость студентов по дисциплине СУБД в шестом семестре.

Решение.

SELECT *

FROM VProgress

WHERE [Название дисциплины]='СУБД'

AND [№ семестра]=6

Нетрудно представить, как бы выглядел этот запрос, обращенный непосредственно к таблицам

SELECT

NameGroup [Группа],

S.NRecordBook [№ зачетки],

StName [Имя студента ],

NameSubject[Название предмета],

NameReport[Вид отчетности],

NTerm[№ семестра],

PIN [Персонифицированный номер преподавателя],

Mark[Оценка]

FROM Progress P INNER JOIN Student S

ON P.NRecordBook=S.NRecordBook

INNER JOIN SGroup SG



ON S.IDGroup=SG.IDGroup

INNER JOIN Subject SB

ON P.IDSubject=SB. IDSubject

INNER JOIN Report R

ON P.IDReport=R.IDReport

WHERE NameSubject='СУБД'

AND NTerm =6

Результат выполнения запроса.

Группа запросов, реализуемая через представление VProgress весьма обширна. Например, вывод агрегированных значений: средней оценки по каждой группе, дисциплине, студенту, семестру, количества видов отчетности по каждой дисциплине, да и просто вывод любых данных касающихся успеваемости в любом временном интервале с различной степенью детализации. Очевидно, что и задача вывода списка отличников, превращается в тривиальную задачу. Ниже рассмотрим реализацию некоторых из них.

Пример 83

Задача.

Вывести средний балл по каждой группе студентов в первом семестре.

Решение.

SELECT Группа, AVG(Оценка)

FROM VProgress

WHERE [№ семестра]=6

GROUP BY Группа

Результат выполнения запроса.

Представление может быть создано не только с использованием таблиц, но и самих представлений. Например, через представление VProgress нельзя увидеть имена преподавателей, ведущих, ту или иную дисциплину, а через созданное ниже представление VProgressTeacher это вполне реально. Однако не следует злоупотреблять многоуровневостью представлений, ибо это может привести к значительному снижению производительности.

Пример 84

Задача.

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

Решение.

CREATE VIEW VPROGRESSTEACHER

AS

SELECT Группа,

[№ зачетки],

[Имя студента],

[Название дисциплины],

[Вид отчетности],

[№ семестра],

[Персонифицированный номер преподавателя],

TeacherName [Имя преподавателя],

Оценка

FROM VProgress P INNER JOIN Teacher T

ON P.[Персонифицированный номер преподавателя]=T.PIN

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

Задание 28

Создать представление для просмотра базы данных с целью определения успеваемости студентов группы АИС-03.

Задание 29

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

Задание 30

Создать представление для вывода информации о предметах, изучаемых в 3 семестре студентами специальности ИСТ.

Вопросы для самоконтроля к лабораторной работе № 6

1. Что такое представление?

2. С какой целью создаются представления?

3. В чем отличие простых и сложных представлений?

4. Какое предложение, включенное в команду Create View, позволяет создавать представление в отсутствии базовых таблиц?

5. Какие предложения не может содержать запрос, определяющий представления?

6. Какие представления позволяют выполнять все без исключения операции DML?

7. Когда через представления нельзя выполнить операции удаления?

8. Как реализуется запрос на выполнение операции DML при создании представления?

9. Когда в представлении нельзя выполнить операцию добавления, но можно выполнить операцию удаления?

10. Допускается ли изменение представления?

11. В каких случаях нельзя изменить данные в представлении?

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




<== предыдущая лекция | следующая лекция ==>
Представления | Хранимые процедуры


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.184 сек.