Представление - это виртуальная таблица, которая сама по себе не существует, но для пользователя выглядит таким образом, как будто она существует. Представление не поддерживаются его собственными физическими хранимыми данными. Вместо этого в каталоге таблиц хранится определение, оговаривающее, из каких столбцов и строк других таблиц оно должно быть сформировано при реализации SQL-предложения на получение данных из представления или на модификацию таких данных.
CREATE VIEW имя_представления [(столбец[,столбец] ...)]AS подзапрос [WITH CHECK OPTION];где подзапрос, следующий за AS и являющийся определением данного представления, не исполняется, а просто сохраняется в каталоге; необязательная фраза "WITH CHECK OPTION" (с проверкой) указывает, что для операций INSERT и UPDATE над этим пред-ставлением должна осуществляться проверка, обеспечивающая удовлетворение WHERE фразы подзапроса;
Список имен столбцов должен быть обязательно определен лишь в тех случаях, когда: а) хотя бы один из столбцов подзапроса не имеет имени (создается с помощью выражения, SQL-функции или константы); б) два или более столбцов подзапроса имеют одно и то же имя; если же список отсутствует, то представление наследует имена столбцов из подзапроса. Например, создадим представление Мясные_блюда
CREATE VIEW Мясные_блюда AS SELECT БЛ, Блюдо, В, Выход FROM Блюда WHERE Основа = 'Мясо'; которое может рассматриваться пользователем как новая таблица в базе данных. Уничтожение ненужных представлений выполняется с помощью предложения DROP VIEW (уничтожить представление): DROP VIEW представление;
Курсор - это виртуальный указатель на строку в таблице выборки.
Создание курсора: DECLARE CustCursor CURSOR FOR SELECT * FROM Customers WHERE cust_email IS NULL; Для управления явным курсором используются операторы CURSOR, OPEN, FETCH и CLOSE.
Оператор CURSOR выполняет объявление явного курсора. Оператор OPEN открывает курсор, создавая новый результирующий набор на базе указанного запроса. Оператор FETCH выполняет последовательное извлечение строк из результирующего набора от начала до конца. Оператор CLOSE закрывает курсор и освобождает занимаемые им ресурсы. Для объявления явного курсора используется оператор CURSOR, который может иметь следующее формальное описание:
Каждый параметр parameter определяется как: cursor_parameter_name [IN] datatype [{:= | DEFAULT} expr]
9. Инфологическая модель "Сущность-связь" (характеристика связей).
Цель инфологического моделирования – обеспечение наиболее естественных для человека способов сбора и представления той информации, которую предполагается хранить в создаваемой базе данных. Основными конструктивными элементами инфологических моделей являются сущности, связи между ними и их свойства (атрибуты). Сущность – любой различимый объект, инфо о котором необходимо хранить в б.д. Сущностями могут быть люди, места, самолеты, рейсы и т.д. Необходимо различать такие понятия, как тип сущности и экземпляр сущности. Понятие тип сущности относится к набору однородных личностей, предметов, событий или идей, выступающих как целое. Экземпляр сущности относится к конкретной вещи в наборе. Например, типом сущности может быть ГОРОД, а экземпляром – Москва, Киев и т.д. Связь – ассоциирование двух или более сущностей. Однако одно из основных требований к организации базы данных – это обеспечение возможности отыскания одних сущностей по значениям других, для чего необходимо установить между ними определенные связи. А так как в реальных базах данных нередко содержатся сотни или даже тысячи сущностей, то теоретически между ними может быть установлено более миллиона связей. Наличие такого множества связей и определяет сложность инфологических моделей. Между двумя сущностям, например, А и В возможны четыре вида связей. Первый тип – связь ОДИН-К-ОДНОМУ (1:1): в каждый момент времени каждому представителю (экземпляру) сущности А соответствует 1 или 0 представителей сущности В:
Студент может не "заработать" стипендию, получить обычную или одну из повышенных стипендий. Второй тип – связь ОДИН-КО-МНОГИМ (1:М): одному представителю сущности А соответствуют 0, 1 или несколько представителей сущности В.
Квартира может пустовать, в ней может жить один или несколько жильцов. Так как между двумя сущностями возможны связи в обоих направлениях, то существует еще два типа связи МНОГИЕ-К-ОДНОМУ (М:1) и МНОГИЕ-КО-МНОГИМ (М:N).
10. Инфологическая модель "Сущность-связь" (классификация сущностей).
Существует три основных класса сущн: стержневые, ассоциативные и характеристические, а также подкласс ассоциативных сущностей – обозначения. Стержневая сущность (стержень) – это независимая сущность.Ассоциативная сущность (ассоциация) – это связь вида "многие-ко-многим" ("-ко-многим" и т.д.) между двумя или более сущностями или экземплярами сущности. Ассоциации рассматриваются как полноправные сущности: они могут участвовать в других ассоциациях и обозначениях точно так же, как стержневые сущности; могут обладать свойствами, т.е. иметь не только набор ключевых атрибутов, необходимых для указания связей, но и любое число других атрибутов, характеризующих связь. Характеристич сущность (характеристика) – это связь вида "многие-к-одной" или "одна-к-одной" между двумя сущностями (частный случай ассоциации). Единственная цель характеристики в рамках рассматриваемой предметной области состоит в описании или уточнении некоторой другой сущности. Необходимость в них возникает в связи с тем, что сущности реального мира имеют иногда многозначные свойства.
11. Инфологическая модель "Сущность-связь" (первичные и внешние ключи). Ключ – это столбец (может быть несколько столбцов), добавляемый к таблице и позволяющий установить связь с записями в другой таблице. Существуют ключи двух типов: первичные и вторичные или внешние. Первичный ключ – это одно или несколько полей (столбцов), комбинация значений которых однозначно определяет каждую запись в таблице. Первичный ключ не допускает значений Null и всегда должен иметь уникальный индекс. Первичный ключ используется для связывания таблицы с внешними ключами в других таблицах. Внешний (вторичный) ключ - это одно или несколько полей (столбцов) в таблице, содержащих ссылку на поле или поля первичного ключа в другой таблице. Внешний ключ определяет способ объединения таблиц. Из двух логически связанных таблиц одну называют таблицей первичного ключа или главной таблицей, а другую таблицей вторичного (внешнего) ключа или подчиненной таблицей. СУБД позволяют сопоставить родственные записи из обеих таблиц и совместно вывести их в форме, отчете или запросе. Существует три типа первичных ключей: ключевые поля счетчика (счетчик), простой ключ и составной ключ.Поле счетчика (Тип данных «Счетчик»). Тип данных поля в базе данных, в котором для каждой добавляемой в таблицу записи в поле автоматически заносится уникальное числовое значение.Простой ключ. Если поле содержит уникальные значения, такие как коды или инвентарные номера, то это поле можно определить как первичный ключ. В качестве ключа можно определить любое поле, содержащее данные, если это поле не содержит повторяющиеся значения или значения Null. Составной ключ. В случаях, когда невозможно гарантировать уникальность значений каждого поля, существует возможность создать ключ, состоящий из нескольких полей. Чаще всего такая ситуация возникает для таблицы, используемой для связывания двух таблиц многие - ко - многим. Необходимо еще раз отметить, что в поле первичного ключа должны быть только уникальные значения в каждой строке таблицы, совпадение не допускается, а в поле вторичного или внешнего ключа совпадение значений в строках таблицы допускается.
12. Инфологическая модель "Сущность-связь" (ограничения целостности). При наличии в модели сущность-связь явных понятий сущности и связи эта модель будет полезна для понимания и спецификации ограничений, направленных на поддержки целостности данных. Например, имеется три основных типа ограничений на значения: 1)Ограничения на допустимые значения (allowable values) в множестве значений. 2)Ограничения на разрешенные (permitted) значения для некоторого атрибута. В некоторых случаях не все допустимые значения из множества значений являются разрешенными для некоторых атрибутов. Например, возраст служащих может быть ограничен диапазоном значений от 20 до 65, т.е. AGE(e) ∈ (20,65), где e ∈ EMPLOYEE. Заметим, что для более ясного выражения семантики мы используем нотации уровня 1. Так как для каждого множества сущность/связь имеется соответствующее отношение сущность/связь, приведенное выше выражение можно легко перевести в нотации уровня 2. 3)Ограничения на существующие значения (existing values) в базе данных. Имеется два типа ограничений: А.Ограничения на множества существующих значений. Например:{ NAME(e) | e ∈ MALE_PERSON } ⊆ { NAME(e) | e ∈ MALE_PERSON }
В.Ограничения на конкретные значения. Например:TAX(e)≤SALARY(e), e ∈ EMPLOYEE или BUDGET(ei) = Σ BUDGET(ej), где ei ∈ COMPANY ej ∈ DEPARTMENT и [ei,ej] ∈ COMPANY-DEPARTMENT