Главная страница
Навигация по странице:

  • Отчеты.

  • Макросы и модули.

  • Ответ

  • Разность множеств

  • Пересечение множеств

  • Произведение множеств

  • Проекция отношения на компоненты

  • Выборка отношения

  • Ерл. Первая нормальная форма атомарные атрибуты


    Скачать 0.73 Mb.
    НазваниеПервая нормальная форма атомарные атрибуты
    Дата19.10.2022
    Размер0.73 Mb.
    Формат файлаdocx
    Имя файлаEkzamen2.docx
    ТипДокументы
    #741968
    страница3 из 3
    1   2   3

    Ответ: Для создания представления мы можем использовать SQL-предложение CREATE VIEW, для его модификации – предложение ALTER VIEW, а для удаления — предложение DROP VIEW. Предложение CREATE VIEW используется для создания представлений, позволяющих извлекать данные, удовлетворяющие некоторым требованиям. Представление создается в текущей базе данных и хранится как отдельный объект.

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

    CREATE VIEW Имя_Представления

    AS <Оператор SELECT>;

    – Имя_Представления − имя просмотра после его создания можно использовать как имя физической таблицы.

    – Список столбцов − определяет состав столбцов просмотра. Если список не

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

    – WITH CHECK OPTION – для редактируемого просмотра запрещает добавление записей, не удовлетворяющих условиям отбора, заданным в операторе SELECT.

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

    CREATE VIEW SAL_DEPT AS

    SELECT *

    FROM EMPLOYEE

    WHERE DEPARTMENT = «отдел продаж»

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

    CREATE VIEW TABLE AS

    SELECT T_NUM, NAME, POSITION, DEPRT

    FROM EMPLOYEE

    Удалить просмотр можно следующим оператором:

    DROP VIEW <ИмяПросмотра>;

    Наряду с перечисленными выше преимуществами, представления обладают и двумя существенными недостатками.

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

    • Ограничения на обновление. Когда пользователь пытается обновить строки представления, СУБД должна установить их соответствие строкам исходных таблиц, а также обновить последние. Это возможно только для простых представлений (созданных на основе одной таблицы); сложные представления обновлять нельзя, они доступны только для выборки.




    1. Материализованные представления

    Ответ: Представление (view) является логической (виртуальной) таблицей, записи в которую отобраны с помощью оператора SELECT. Представлением называется запрос на выборку, которому присвоили имя, а затем сохранили в базе данных. Представление позволяет пользователю увидеть результаты сохраненного запроса, а SQL обеспечивает доступ к этим результатам таким образом, как если бы они были простой таблицей.

    Предствле6ния используются по следующим причинам:

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

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

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

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

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

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

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

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

    Наряду с перечисленными выше преимуществами, представления обладают и двумя существенными недостатками.

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

    • Ограничения на обновление. Когда пользователь пытается обновить строки представления, СУБД должна установить их соответствие строкам исходных таблиц, а также обновить последние. Это возможно только для простых представлений (созданных на основе одной таблицы); сложные представления обновлять нельзя, они доступны только для выборки.


    1. Объекты БД

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

    • Таблицы. Это основные объекты любой базы данных. Во-первых, в таблицах хранятся все данные, имеющиеся в базе, а во-вторых, таблицы хранят структуру базы данных (поля, их тип и свойства).

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

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

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

    • Страницы. Физически это особый объект, выполненный в коде HTML, размещаемый на Web-странице и передаваемый клиенту вместе с ней. Сам по себе этот объект не является базой данных, но содержит компоненты, через которые осуществляется связь переданной Web-страницы с базой данных, остающейся на сервере.

    • Макросы и модули. Эти категории объектов предназначены как для автоматизации повторяющихся операций при работе с системой управления базами данных, так и для создания новых функций путем программирования. В СУБД Microsoft Access макросы состоят из последовательности внутренних команд СУБД Модули создаются средствами внешнего языка программирования (языка Visual Basic for Applications).

    Работа с каждым объектом БД осуществляется в отдельном окне, причем предусмотрено два режима работы:

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

    2. Режим конструктора — создание или изменение макета, структуры объекта (например, структуру таблицы).


    1. Операции над множествами SQL

    Ответ: Основными операциями над множествами являются:

    Объединение множеств.

    Объединение множеств R1 и R2 выражается формулой R = R1 U R2. Операция объединения множеств применяется только ко множествам одинаковой арности. Результирующее отношение R получается той же арности. (если в таблицах есть

    одинаковые элементы, то этот элемент вставляется один раз)

    Пример:

    SELECT model, price

    FROM PC

    UNION (UNION [ALL])

    SELECT model, price

    FROM Laptop

    ORDER BY price DESC;

    (Найти номера моделей и цены ПК и портативных компьютеров, сортировка по убыванию цены)

    Разность множеств

    Разность множеств R1 и R2 выражается формулой R = R1\ R2 . Разностью R1\ R2 называется множество кортежей, принадлежащих R1, но не принадлежащих R2. Отношения R1 и R2 должны быть одинаковой арности. Отношение R – той же арности

    Пример:

    Найти корабли из таблицы Outcomes, которые отсутствуют в таблице Ships.

    SELECT ship FROM Outcomes

    EXCEPT

    SELECT name FROM Ships;

    Пересечение множеств

    Пересечение множеств R1 и R2 возвращает множество, содержащее все кортежи, которые принадлежат одновременно двум заданным множествам, и выражается формулой R = R1 ∩ R2

    Пример:

    Найти корабли, которые присутствуют как в таблице Ships, так и в таблице Outcomes.

    SELECT ship FROM Outcomes

    INTERSECT

    SELECT name FROM Ships;

    Произведение множеств

    Декартово произведение − операция, заключающаяся в построении нового множества на основе двух других путем попарной комбинации всех возможных записей из первого множества и второго множества. R = R1 X R2

    Если множество R1 имеет I записей и арность k1 , а R2 – J записей и арность k2, то декартовым произведением отношений R1 и R2 является множество I*J кортежей арности (k1+k2)

    Пример:

    Выбрать из таблиц Laptop и Product модели ноутбуков Laptop.model и модели других устройств Product.model

    SELECT Laptop.model, Product.model

    FROM Laptop CROSS JOIN

    Product;

    Проекция отношения на компоненты

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

    Выборка отношения

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


    1. Триггеры

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

    В PostgreSQL поддерживаются нестандартные расширения, называемые триггерами (trigger) и упрощающие взаимодействие приложения с базой данных. Триггер определяет функцию, которая должна выполняться до или после некоторой операции с базой данных. Триггеры реализуются на языке С, PL/pgSQL или любом другом функциональном языке (кроме SQL).

    Создание триггера

    Триггер создается на основе существующей функции. В определении триггера указывается, должна ли заданная функция вызываться до или после выполнения некоторой операции с таблицей. Синтаксис определения триггера выглядит так:

    CREATE TRIGGER триггер { BEFORE | AFTER } { событие [ OR событие

    ...]}

    ON таблица

    FOR EACH { ROW STATEMENT }

    EXECUTE PROCEDURE функция ( аргументы )

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

    – {BEFORE | AFTER}. Ключевое слово BEFORE означает, что функция должна выполняться перед попыткой выполнения операции, включая все встроенные проверки ограничений данных, реализуемые при выполнении команд INSERT и DELETE.

    Ключевое слово AFTER означает, что функция вызывается после завершения операции, приводящей в действие триггер.

    – {событие [OR событие ... ]}. События SQL, поддерживаемые в PostgreSQL При перечислении нескольких событий в качестве разделителя используется ключевое слово OR.

    ON таблица. Имя таблицы, модификация которой заданным событием приводит к срабатыванию триггера.

    – FOR EACH {ROW STATEMENT}. Ключевое слово, следующее за конструкцией FOR EACH и определяющее количество вызовов функции при наступлении указанного события. Ключевое слово ROW означает, что функция вызывается для каждой модифицируемой записи. Если функция должна вызываться всего один раз для всей команды, используется ключевое слово STATEMENT.

    – EXECUTE PROCEDURE функция ( аргументы ). Имя вызываемой функции с аргументами.

    Получение информации о триггерах

    В PostgreSQL триггеры хранятся в системной таблице pg_trigger, что позволяет получить информацию о существующих триггерах на программном уровне.

    Удаление триггера

    Команда DROP TRIGGER удаляет триггер из базы данных. Удаление триггеров, как и их создание командой CREATE TRIGGER, может выполняться только владельцем триггера или суперпользователем.

    Синтаксис удаления существующих триггеров:

    DROP TRIGGER имя ON таблица
    1   2   3


    написать администратору сайта