Главная » Просмотр файлов » Диго С.М. Базы данных проектирование и использование

Диго С.М. Базы данных проектирование и использование (1084447), страница 49

Файл №1084447 Диго С.М. Базы данных проектирование и использование (Диго С.М. Базы данных проектирование и использование) 49 страницаДиго С.М. Базы данных проектирование и использование (1084447) страница 492018-01-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 49)

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

Чтобы не была нарушена целостность БД, должны соблюдаться следующие ограничения:

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

  • при определении представления не должно использоваться со­
    единение таблицы «сама с собой»;

  • нельзя манипулировать данными представлений, полученных на основе оператора группирования (GROUP BY);

  • нельзя корректировать вычисляемые поля;

  • представление должно содержать один и только один запрос, т.е. не допускается использование UNION, EXCEPT, INTERSECT;

  • включающий запрос представления не может содержать пред­ложение DISTINCT;

  • ни на один столбец нельзя ссылаться в SELECT более одного раза.

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

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

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

Специфицировать WITH CHECK OPTION в операторе CREATE VIEW можно только для обновляемых представлений.

В SQL-99 существенно расширен диапазон представлений, над которыми напрямую могут выполняться операции обновления.

Создание представлений с использованием ERWin

Создавать представления можно и при проектировании БД с ис­пользованием CASE-систем.

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

Для того чтобы исключить некоторые из полей или провести другие изменения в представлении, следует воспользоваться редактором пред­ставлений (View Editor).

Поскольку в целевой СУБД представление реализуется в виде опе­ратора SQL, а, как известно, диалекты SQL различаются в разных СУБД, то и окна редактора представлений несколько различаются в зависимости от выбранной целевой СУБД. Для сравнения на рис. 7.1 представлен вид окна для целевой СУБД Access, а на рис. 7.2 - для целевой СУБД Oracle.

Для того чтобы отобрать поля, которые должны входить в пред­ставление, следует воспользоваться вкладкой Select в окне редактора представлений (см. рис. 7.2).

Таблицы, на основе которых формируется представление, указы­ваются на вкладке From (рис. 7.3). Если на этой вкладке добавить таблицы в окно From, то на схеме появится связь представления с соответствующей таблицей.

На вкладке Where (рис. 7.4) можно задать условие отбора и дру­гие предложения оператора SELECT.

Возможность создать представление в ERWin имеется для всех целевых СУБД, даже для тех (например, Access), в которых оператор CREATE VIEW в явном виде не поддерживается.

На вкладке SQL (рис. 7.5) можно увидеть текст сгенерированных предложений SQL.

Таким образом, как мы видим, создать представление при исполь­зовании ERWin несколько легче, чем при написании оператора CREATE VIEW непосредственно на языке SQL.

7.8.4. Курсоры

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

Курсор определяется посредством оператора объявления курсора (DECLARE CURSOR). Этот оператор определяет имя курсора, а так же содержит в своем составе запрос, выходные данные которого сохраняются для последующей обработки включающей программой:

DECLARE <имя_курсора> [INSENSITIVE] [SCROLL] CURSOR

FOR <подзапрос> [<предложение для обновления>]

Курсор находится либо в открытом состоянии, либо в закрытом. Начальное состояние курсора - закрытое. Для открытия курсора ис­пользуется оператор OPEN CURSOR <имя курсора>. Запрос, описанный при определении курсора, выполняется именно при откры­тии курсора. При первом открытии курсор устанавливается перед первой строкой. Позиция курсора в открытом состоянии может быть перед определенной строкой, на определенной строке или после пос­ледней строки. Если курсор установлен на строку, то эта строка явля­ется текущей строкой курсора.

Для построчного извлечения данных из курсора используется опе­ратор FETCH. Этот оператор продвигает позицию открытого курсора на следующую строку в порядке этого курсора, извлекает значения полей этой строки в переменные и имеет следующий синтаксис:

FETCH [[orientation]FROM] имя курсора

INTO целевая спецификация.,..;

orientation::=

NEXT | PRIOR | FIRST | LAST | {ABSOLUTE | RELATIVE

спецификация значения}

Значения NEXT, PRIOR, FIRST, LAST понятны без дополнитель­ного пояснения. Значение ABSOLUTE N вызывает перемещение на N-ю строку, а значение RELATIVE N - перемещение на N строк впе­ред, если N - положительное число, и на N строк назад, если N -отрицательное число.

Если задано предложение INSENSITIVE (нечувствительный), то, пока курсор открыт, все изменения над данными курсора будут игно­рироваться.

Строки открытого курсора имеют определенный порядок. Для того чтобы установить нужный порядок, можно использовать в операторе SELECT предложение ORDER BY. В противном случае порядок ус­танавливается реализацией.

Если задано предложение SCROLL, то не обязательно извлекать строки в том порядке, который задан при открытии.

Курсоры могут быть двух типов: обновляемые и только для чте­ния. Чтобы курсор был обновляемым, он должен базироваться на од­ной и только одной таблице, не содержать предложения ORDER BY, не объявляться как INSENSITIVE или SCROLL.

Курсор возвращается в закрытое состояние посредством исполь­зования оператора закрытия курсора CLOSE <имя курсора.>

7.9. MS Jet Access SQL

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

Microsoft Access SQL в основном отвечает стандарту ANSI-89 (уро­вень 1). Однако некоторые средства ANSI SQL не применяются в Microsoft Access SQL. И наоборот, Microsoft Access SQL использует зарезервированные слова и средства, не поддерживаемые ANSI SQL.

Кроме того, в Access 2000 имеется режим ANSI SQL-92. Этот ре­жим учитывает расширенный синтаксис SQL и обеспечивает боль­шую совместимость с SQL-92 и Microsoft® SQL Server™. Этот ре­жим доступен только в случае использования программы Microsoft OLE DB Provider для Jet. Новые средства относятся преимуществен­но к языку определения данных (DDL).

В качестве построителя запросов на SQL можно использовать таб­личный язык запросов QBE. Но не все типы запросов SQL могут быть реализованы на QBE. В Access такие типы запросов, как запросы к серверу, управляющие запросы (т.е. запросы, которые корректируют содержимое таблиц) и запросы на объединение, не могут быть опре­делены в бланке запроса. Для создания таких запросов требуется вве­сти оператор SQL непосредственно в окно запроса в режиме SQL.

7.9.1. Оператор SELECT

Общая характеристика оператора

Оператором SQL, осуществляющим отбор информации из базы данных, является SELECT или его разновидность - SELECT...INTO.

Синтаксис оператора SELECT в Access имеет следующий вид:

SELECT [предикат] {* | таблица.* | [таблица.]поле1

[AS псевдоним1] [, [таблица.]поле2 [AS псевдоним2] [,...]]}

FROM выражение [,...] [IN внешняя_база_данных]

[WHERE... ]

[GROUP BY...]

[HAVING...]

[ORDER BY...]

[WITH OWNERACCESS OPTION]

Как видим, синтаксис оператора SELECT в Access несколько от­личается от стандарта. Конструкции [IN внешняя_база_данных] и [WITH OWNERACCESS OPTION] отсутствуют в стандарте SQL.

Ниже перечислены аргументы оператора SELECT.

Аргумент

Описание

Предикат

Один из следующих предикатов отбора: ALL,DISTINCT, DISTINCTROW или ТОР. Предикаты используются для ограничения числа возвращаемых записей. Если они отсутствуют, по умолчанию используется предикат ALL

*

Указывает, что выбраны все поля заданной таблицы (таблиц)

Таблица

Имя таблицы, из которой должны быть отобраны записи

Поле1, поле2

Имена полей, из которых должны быть отобраны данные.

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

Псевдоним1 Псевдоним2

Имена, которые станут заголовками столбцов вместо исходных названий столбцов в таблице

Выражение

Имена одной или нескольких таблиц, которые содержат отбираемые данные

Внешняя_база_данных

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

Имена полей, которые содержат пробелы или знаки препинания, необходимо заключать в квадратные скобки ([ ]).

Описание WITH OWNERACCESS OPTION используется при работе в сети в составе защищенной рабочей группы и здесь рассмат­риваться не будет.

Предложение SELECT

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

Для отбора всех полей таблицы можно использовать звездочку (*). Следующий оператор отбирает все поля из таблицы «Сотрудник»:

SELECT * FROM Сотрудник;

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

SELECT ФИО, Семья.*

FROM Сотрудник INNER JOIN Семья

ON Сотрудник.Код_сотрудника = Семья.Код_сотрудника;

В данном примере из таблицы «Семья» в ответ выводятся все поля, а из таблицы «Сотрудник» - только поле ФИО.

Поясним значение предикатов, используемых в качестве аргумен­тов оператора SELECT.

Характеристики

Тип файла
Документ
Размер
11,48 Mb
Тип материала
Предмет
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее