Главное меню

EN | RU | UK

На главную

8. Представления данных

Помощь & Консультация
Помощь & Консультация
Пишите мне в
Наверх страницы
Лекция
Цель

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

8.1. Определение, создание и классификация представлений данных

Представление - это динамический результат одной или нескольких реляционных операций, выполненных над отношениями БД для получения нового отношения [4].

Представление создается динамически [4, 6, 8, 12]. Оно является виртуальным отношением, которое реально в БД не существует и создается в результате выполнения запроса пользователя. Сталкиваясь со ссылкой на представление, система управления находит соответствующее определение и преобразует исходный запрос к представлению данных в эквивалентный отношениям, которые используются в определении представления данных, после чего модифицированный запрос выполняется. Этот процесс называется разрешением представления.

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

Последовательность формирования записей в представлении данных определяется оператором SELECT. Для его создания применяется такая конструкция:

CREATE VIEW Имя [(столбец[, столбец ...])

    AS <оператор SELECT> [WITH CHECK OPTION];

Здесь обязательно должно быть определено имя представления и оператор SELECT. Дополнительно есть возможность указать имена для каждого столбца представления - [(столбец[, столбец ...])], а для обновляемых представлений запретить ввод строк, не удовлетворяющих условию его формирования в предложении WHERE оператора SELECT - [WITH CHECK OPTION].

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

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

Для того, чтобы представление было обновляемым, СУБД должна однозначно отобразить любой его строки или столбца на соответствующую строку или столбец исходного отношения. Все обновления, выполненные в отношении БД должны сразу отображаться во всех представлениях, которые обращаются к нему. Если данные были изменены в обновляемом представлении, то это сразу должно быть отражено и в отношении, на базе которого оно построено.

Согласно стандарту ISO обновляемым представления может быть только тогда, когда:
- в его определении не используется предложение DISTINCT, то есть из результатов определяющего запроса не исключаются строки-дубликаты;
- каждый элемент в списке предложения SELECT определяющего запроса представляет собой имя столбца, а не константу, выражение или обобщающую функцию; причем имя каждого из столбцов в этом списке упоминается не более одного раза;
- в предложении FROM должно быть указано только одно отношение, то есть представление должно быть создано на базе одного отношения, к которому пользователь имеет соответствующие права доступа; если исходное отношение само является представлением, то оно также должно соответствовать указанным условиям; данное требование исключает возможность обновления любых представлений, основанных на базе соединения, объединения (UNION), пересечения (INTERSECT) или разности (EXEPT) отношений;
- предложение WHERE не должно содержать каких-либо вложенных запросов, ссылающихся на отношения, указанные в предложении FROM;
- определяющий запрос не должен содержать предложения GROUP BY или HAVING.

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

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

Фразу WITH CHECK OPTION можно приводить только для обновляемых представлений. Она гарантирует, что строка данных, не удовлетворяющая условиям поиска в предложении WHERE, не будет добавлена в отношение, указанное в предложении FROM оператора SELECT. Вообще WITH CHECK OPTION в операторе CREATE VIEW используется для предотвращения миграции строк из представления. Если для обновляемого представления применить параметр WITH CHECK OPTION, то все попытки добавления новых или изменения существующих строк, которые нарушают условия поиска данных предложения WHERE определяющего оператора SELECT будут отклонятся.

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

Для удаления представления используется оператор DROP VIEW Имя.

8.2. Способы и ограничения формирования представлений данных

Хотя все представления создаются с помощью одного метода, на практике для различных целей используются следующие способы формирования представлений: вертикальный срез таблицы, горизонтальный срез таблицы, вертикально-горизонтальный срез таблицы, подмножество строк и столбцов соединения различных таблиц [4, 6].

8.2.1. Представление данных в виде вертикального среза таблицы

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

ПРИМЕР 8.1

Предоставить пользователям БД «БИБЛИОТЕКА» возможности просмотра таких сведений о читателях: № билета читателя, фамилия, имя, отчество, место работы и должность (табл. 8.1).

CREATE VIEW ReadersView

AS

    SELECT ReaderCardNumber, FamilyName, Name, Patronymic, Job, Post

        FROM Readers

Таблица 8.1

Вертикальный срез таблицы Readers к примеру 8.1
FamilyName Name Patronymic ReaderCardNumber Job Post
Иванов Петр Иванович 317 НГУ, каф. ЭВТ Ассистент
Федорец Ирина Олеговна 28 НГУ, АХЧ Вахтер
Ильин Иван Петрович 1345 НГУ, каф. физики Доцент
Суренко Дмитрий Павлович 543 НГУ, каф. геофизики Ст. препод.
Коршунова Наталья Юрьевна 128 НГУ, каф. геоиформатики Ассистент
Носенко Олег Владимирович 5672 НГУ, ИКК Инженер
Брусов Владимир Михайлович 485 НГУ, каф. геодезии Лаборант
Козырев Алексей Сергеевич 759 НГУ, каф. криминологии Профессор
Левченко Юлия Павловна 146 НГУ, каф. политической теории Заведующая кафедры
Светлая Татьяна Ивановна 2021 НГУ, каф. переводов Ст. препод.
Щеглов Петр Евгеньевич 997 НГУ, каф. электроснабжения Ассистент
Кириленко Виктор Александрович 1010 НГУ, каф. электропривода Зам. декана

8.2.2. Представление данных в виде горизонтального среза таблицы

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

ПРИМЕР 8.2

Предоставить пользователям БД «БИБЛИОТЕКА» сведения о книгах, изданных после 1984 г. (табл. 8.2).

CREATE VIEW AllBookAfter1984

AS

    SELECT *

        FROM Books

        WHERE IssueYear >= '01.01.1985'

Таблица 8.2

Горизонтальный срез таблицы Books к примеру 8.2
Code Name Issue Year Drawing BookPublishers UDK Cipher Note
1 Автоматизация производственных процессов на обогатительной фабрике 01.01.1985 6000 «Недра» 622.7-52 622.7-52/Т null
3 Асимптотические методы оптимального управления 01.01.1987 1000 «Автомат» 681.513.5 681.513.5:/А null
5 Методы оптимизации стохастических систем 01.01.1987 4500 «Матстат» 681.513.5 681.513.5:/ДО null
6 Автоматизированные системы управления технологическим процессом обогащения руды 31.01.1987 4000 «Автомат» 622.7-52 622.7-52/П null
7 C/C++ Программирование на языке высокого уровня 11.01.2007 5500 «Питер» 681.3.06 681.3.06(075) null
8 Компьютерные сети. Принципы, технологии, протоколы 31.01.2006 6000 «Питер» 004.72 004.72(075) null
9 Справочник по дифференциальным уравнениям с частными производными первого порядка 31.01.2003 10000 «ФИЗМАТЛИТ» 517.9 517.9 null
10 Теория вероятностей и математическая статистика 31.01.2004 1000 «Питер» 519.2 519.2 null
11 C#. Программирование на языке высокого уровня 31.01.2009 1500 «Питер» 004.43 004.43 null
12 Теория вероятностей и математическая статистика 31.01.2005 2000 «Высшая школа» 519.2 519.2 null
13 Теория вероятностей и математическая статистика 31.01.2002 2500 «ФИЗМАТЛИТ» 519.2 519.2 null
14 Дискретно-групповые методы интегрирования обыкновенных дифференциальных уравнений 31.01.1991 7000 «ЛИИАН» 517.9-37 517.9-37 null

8.2.3. Представление данных в виде вертикально-горизонтального среза таблицы

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

ПРИМЕР 8.3

Надати користувачам БД «БІБЛІОТЕКА» відомості про книги, що видані після 1984 року. У представлення даних включити назву книги, рік, місце видання та шифр (табл. 8.3).

CREATE VIEW Bookafter1984

AS

    SELECT Name, EXTRACT(YEAR FROM IssueYear) AS IssueYear, Drawing, Cipher

        FROM Books

        WHERE IssueYear >= '01.01.1985'

Таблица 8.3

Вертикально-горизонтальный срез таблицы Books к примеру 8.3
Name IssueYear Drawing Cipher
Автоматизация производственных процессов на обогатительной фабрике 1985 6000 622.7-52/Т
Асимптотические методы оптимального управления 1987 1000 681.513.5:/А
Методы оптимизации стохастических систем 1987 4500 681.513.5:/ДО
Автоматизированные системы управления технологическим процессом обогащения руды 1987 4000 622.7-52/П
C/C++ Программирование на языке высокого уровня 2007 5500 681.3.06(075)
Компьютерные сети. Принципы, технологии, протоколы 2006 6000 004.72(075)
Справочник по дифференциальным уравнениям с частными производными первого порядка 2003 10000 517.9
Теория вероятностей и математическая статистика 2004 1000 519.2
C#. Программирование на языке высокого уровня 2009 1500 004.43
Теория вероятностей и математическая статистика 2005 2000 519.2
Теория вероятностей и математическая статистика 2002 2500 519.2
Дискретно-групповые методы интегрирования обыкновенных дифференциальных уравнений 1991 7000 517.9-37

8.2.4. Формирование представления данных как подмножества строк и столбцов

Представление данных формируется как подмножество строк и столбцов, если в операторе SELECT используется внутренние или внешние соединения отношений.

ПРИМЕР 8.4

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

CREATE VIEW Debtors

    (ReaderCardNumber, ReaderFamilyName, ReaderName, BookName, BookInventoryNumber,

    (BookCost, IssueDate, ReturnDate, FactReturnDate)

AS

    SELECT R.ReaderCardNumber, R.FamilyName, R.Name, B.Name, I.InventoryNumber,

                    I.Cost, G.IssueDate, G.ReturnDate, G.FactReturnDate

        FROM R, Books B, BookInventoryNumbers I, BookGiveOutRecord G

        WHERE G.ReturnDate < G.FactReturnDate AND

                    G.ReaderCode = R.Code AND

                    G.InventoryCode = I.Code AND

                    I.BookCode = B.Code

Таблица 8.4

Подмножество строк и столбцов отношений к примеру 8.4
ReaderCardNumber ReaderFamilyName ReaderName BookName BookInventoryNumber BookCost IssueDate ReturnDate FactReturnDate
1345 Ильин Иван Синтез оптимальных автоматических систем 4512890 12.99 02.09.2004 16.09.2004 11.12.2004
543 Суренко Дмитрий Автоматизированные системы управления технологическим процессом обогащения руды 4632112 10.10 30.10.2004 13.11.2004 10.01.2005
485 Брусов Владимир C/C++ Програмування мовою високого рівня 5478956 45.10 07.03.2009 21.03.2009 10.04.2009

8.2.5. Ограничения на создание и использование представлений данных

Ограничения на создание и использование представлений приведены в стандарте ISO. Вот некоторые из них.

Если столбец в представлении данных создается с помощью агрегатной функции, то он может указываться в предложениях SELECT и ORDER BY тех запросов, которые обращаются к данному представлению. Однако такой столбец не может использоваться в предложении WHERE, и не может быть аргументом в обобщающей функции этих запросов.

Сгруппированое представления данных никогда не должно соединяться с таблицами БД или с другими представлениями.

8.3. Преимущества и недостатки представлений данных

8.3.1. Преимущества

Если СУБД работает на персональном компьютере, который стоит отдельно, при использовании представлений обычно ставится цель лишь упрощение структуры запросов к БД. Однако, когда СУБД обслуживает запросы многих пользователей в сети, представление играют ключевую роль в определении структуры БД и организации защиты информации. Основные преимущества использования представлений в подобной среде заключаются в следующем [4].

8.3.1.1. Независимость от данных

Независимость от данных для пользователя заключается в стабилизации структуры БД, которая будет оставаться неизменной даже в случае пересмотра структуры исходных отношений. Например, добавление и удаление столбцов, изменение связей, разделение отношений, их реструктуризация и переименование. Если в отношение добавляются или удаляются атрибуты, которые не используются в представлении данных, то менять его определения в БД не нужно. Если структура исходного отношения перестраивается или делится на части, то можно будет создать представление, которое позволяет пользователям работать с виртуальным отношением предыдущего формата. В случае разделения исходного отношения на несколько частей (отношений), старый формат можно виртуально восстановить с помощью представления, построенного на основе соединения этих отношений - конечно, если структура новых отношений это позволяет. Достигается это с помощью перемещения во все новые отношения первичного ключа предыдущего отношения.

8.3.1.2. Актуальность

Актуальность данных обеспечивается немедленным отражением в представлении всех изменений, произошедших в любом отношении БД, которое упоминается в определяющем запросе.

8.3.1.3. Повышение защищенности данных

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

8.3.1.4. Дополнительные удобства и возможности настройки

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

8.3.1.5. Снижение сложности

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

8.3.1.6. Обеспечение целостности данных

Целостность данных обеспечивается за счет предотвращения ввода кортежей, не удовлетворяющие условиям отбора в определяющем запросе. Это достигается с помощью предложения WITH CHECK OPTION оператора CREATE VIEW.

8.3.2. Недостатки

Использование представлений позволяет достигнуть существенных преимуществ, но необходимо обратить внимание на следующее [4].

8.3.2.1. Ограниченные возможности обновления

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

8.3.2.2. Структурные ограничения

Структурные ограничения касаются конфигурации представления данных на момент его создания. Например, если определяющий запрос представлен в формате SELECT * FROM …, то символ «*» ссылается на все столбцы, существующие в исходном отношении на момент его создания. Если впоследствии в исходное отношение БД будут добавлены новые атрибуты, то они не появятся в представлении, пока оно не будет удалено и снова создано.

8.3.2.3. Снижение производительности

Снижение производительности СУБД связано с использованием дополнительных вычислительных ресурсов для разрешения представлений. Иногда влияние этого фактора будет совершенно незначительным, тогда как в других случаях он может быть источником существенных проблем. Например, представление, определенное с помощью сложного многотабличного запроса, требует значительных затрат времени на обработку, поскольку каждый раз выполняются соединения отношений, когда понадобится доступ к представлению.

8.4. КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. Какая существует разница и что общего между представлением данных и таблицей, которая определена с помощью оператора CREATE TABLE?
  2. Каким образом происходит процесс разрешения представления данных?
  3. Какими возможностями обладает оператор CREATE VIEW для определения представления данных?
  4. Каковы особенности работы определяющего оператора SELECT Вам известны?
  5. Когда в операторе CREATE VIEW имена столбцов задаются обязательно?
  6. Какая существует разница между обновляемым представлением данных и тем, которые не обновляется?
  7. Какие ограничения накладываются на обновляемные представления данных?
  8. Какие возможности предоставляет использование предложения WITH CHECK OPTION?
  9. Чем отличаются известные Вам способы формирования представлений данных?
  10. Какие ограничения накладываются на создание и использование представлений данных?
  11. Каковы преимущества и недостатки использования представлений данных Вам известны?
Вывод

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

© Куваев Я.Г., 2005—2023.

Все права защищены.

Вся информация, размещенная на данном веб-сайте, предназначена только для персонального использования и не подлежит дальнейшему воспроизведению и/или распространению в какой-либо форме, иначе как с письменного разрешения Автора.