Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety1_moi.docx
Скачиваний:
7
Добавлен:
15.04.2019
Размер:
819.58 Кб
Скачать

5)Поддержание наличия возможных ключей в таблице.

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

6)Некоторые СУБД поддерживают создание новых типов данных к таким относятся SQL Server 2005  там на основе технологии .Net можно создавать новые типы данных, которые фактически являются объектами со своими свойствами и методами. (Уже перевод РБД в Объектное РБД).

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

1) Запретить те или иные действия которые противоречат целостности базы данных.

2) Попутно с выполняемой операцией внести изменения в др. таблицы баз данных или структуру баз данных.

3) функция журналирования тех или иных действий в базе данных.

  1. Ограничения целостности связи. Возможности реализации в современных СУБД.

4.9.2. Ограничения целостности связи

При описании связи можно задать ограничения целостности связи. Для этого следует воспользоваться вкладкой RI Actions (рис. 4.70) в окне редактора связей.

Рис. 4.70. Выбор вкладки RI Actions для задания ограничений целостности связи

Вид окна Relationships для этой вкладки показан на рис. 4.71. Для каждой связи можно задать действия, которые будут выполняться при удалении (Delete), вставке (Insert) и удалении (Update) как порожденной (Child), так и родительской (Parent) сущности.

Рис. 4.71. Окно задания ограничения целостности связи

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

• NONE – действие не оказывает влияние на связанные записи;

• RESTRICT – действие запрещено (при определенных условиях);

• CASCADE – действие вызывает изменения в связанных записях;

• SET DEFAULT – устанавливается значение по умолчанию для поля связи;

• SET Null – устанавливается по умолчанию значение Null для поля связи.

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

Как видно из рис. 4.48, связь «ПОДРАЗДЕЛЕНИЕ – СОТРУДНИК» была задана как неидентифицирующая с обязательным классом членства объектов в связи (Not Null). В этом случае каждый из списков, определяющих действия, выполняемые при корректировке, имеет четыре возможных значения: NONE (никакой), RESTRICT (ограничивать), CASCADE (каскад), SET DEFAULT (значение по умолчанию).

На рис. 4.71 показаны значения RI Actions для связи «ПОДРАЗДЕЛЕНИЕ – СОТРУДНИК», заданные системой по умолчанию.

Если изменить характер связи и определить класс членства как необязательный (Nulls Allowed), то выбранные по умолчанию значения для ограничений целостности будут иные (рис. 4.72).

Рис. 4.72. Значения по умолчанию для неидентифицирующей связи с необязательным классом членства объектов

Выбор значения SET NULL для операции удаления родительской сущности в этом случае означает, что всем сотрудникам отдела, который удаляется (Parent Delete), в качестве значения поля ПОДРАЗДЕЛЕНИЕ будет присвоено значение NULL. Для случая изменения значения поля КОДА ПОДРАЗДЕЛЕНИЯ (Parent Update) в

нашем случае следует выбрать CASCADE, что будет вызывать каскадное изменение соответствующих значений внешнего ключа для записей всех сотрудников, работающих в данном отделе. Рассмотрим другую связь, а именно «СОТРУДНИК – ЗАГРАНПАСПОРТ» (рис. 73).

Рис. 4.73. Описание связи «СОТРУДНИК – ЗАГРАНПАСПОРТ»

Как мы видим, и в этом примере связь была задана как неидентифицирующая с обязательным классом членства объектов в связи (Not Null). Но в рассматриваемом случае для операции Parent Delete следует выбрать действие CASCADE. Если КОД СОТРУДНИКА может изменяться, то для операции Parent Update также следует выбрать

действие CASCADE. Так как связь «многие-ко-многим» в реляционной модели не поддерживается, то

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

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

Значения ограничений можно изменить, выбрав позицию меню Model/ValidationRules, и в появившемся окне (рис. 4.74) на вкладке RI Default задать нужные значения соответствующих параметров.

Рис. 4.74. Окно Model Properties. Ограничения целостности, задаваемые по умолчанию (RI defaults)

Обычно удаление зависимой записи (Child Delete) при любом из типов связи не требует дополнительных проверок на допустимость корректировки и не приводит к изменениям в связанных записях. Поэтому режимом по умолчанию для всех типов связи является NONE. Дополнительная проверка может потребоваться, если в предметной об-

ласти невозможно существование «главного» объекта без связанных с ним «подчиненных» объектов. Например, не может быть ОТДЕЛА без СОТРУДНИКОВ. В этом случае либо не должна быть допущена попытка удаления последнего сотрудника из отдела, либо при этом должен быть удален отдел.

Как правило, вставка зависимой записи при наличии идентифицирующей связи не может быть произведена, если отсутствует соответствующая ей запись в главной таблице (ситуация, когда в главной таблице нет записи со значением ключа, равным введенному значению поля связи), т.е. используется режим RESTRICT. Можно представить себе такую организацию ведения таблиц базы данных, когда в основную таблицу при вводе зависимой записи автоматически вводится новая запись с ключом, соответствующим значению поля связи зависимой записи. Но такой возможностью не надо злоупотреблять, так как отсутствующее значение может быть вызвано ошибкой при вводе данных, а не отсутствием информации в базе данных. Режим NONE при вставке зависимой записи при на-

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

Так называемая «категориальная» связь является особой связью: с одной стороны, она является идентифицирующей связью, а с другой – связывает не две разные сущности, а отражает информацию об одном и том же объекте. Для обобщенного объекта желательно иметь специальный инструмент, который позволял бы рассматривать его как

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

Для того чтобы заданные ограничения целостности отражались при изображении модели, можно в меню Format/Relationship Display/Referential Integrity отметить позицию Referential Integrity (рис. 4.75).

Рис. 4.75. Меню Format/Relationship Display/Referential Integrity

После такого выбора на схеме ER-модели на обоих концах каждой линии связи будут отображаться значения ограничений целостности связи. Они задаются двумя латинскими буквами, разделенными двоеточием (рис. 4.76). Первая буква обозначает операцию, вторая – действия, предусмотренные при выполнении данной операции. Напри-

мер, D:C означает, что при выполнении удаления экземпляра сущности (Delete) будет осуществляться каскадное удаление связанных сущностей (Cascade). Рис. 4.76. Вид ER-диаграммы с заданными ограничениями целостности

Языки запросов. Общая характеристика.

  1. Языки запросов. Понятие. Классификация.

Я зык запросов – ориентированный на конечного пользователя язык доступа к базе данных, чаще всего строящийся по принципу декларативных языков [М.Р. Когаловский «Энциклопедия технологий баз данных», М.:ФиС, 2002 г. ]

  • Языки запросов:

    • табличные (QBE)

Часто используется не только как самостоятельный ЯЗ, но и как построитель запросов на SQL

    • Аналитические (SQL)

Графические элементы используются частично

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

  • Используются:

    • в интерактивном режиме

    • встраиваются в программы

  • Обычно не являются функционально-полными языками

  • Возможности языка зависят то его типа

  • Часто включают в себя дополнительные возможности:

    • определения данных

    • корректировки данных

  • Зависят от СУБД:

    • реляционные языки запросов

    • объектные языки запросов

    • XML

В реляционных языках запросов источниками данных являются плоские таблицы (реальные или виртуальные (запросы, представления) и результатом является плоская таблица

Любой запрос определяет:

- источник(и) информации

- поля, выводимые в ответ (обязательно)

  • Условие отбора (не обязательно)

Дополнительно может быть задано:

  • упорядочение данных в ответе. Упорядочение ответа может использоваться не только для вывода результата в определенной последовательности, но и для формирование специфических запросов

  • Число записей, выводимых в ответ (все, заданное число, заданный процент)

Классификация запросов

  • По числу аргументов поиска в запросе

    • Простые (один аргумент)

    • Сложные (более одного)

      • Условие AND (И)

      • Условие OR (ИЛИ)

      • Смешанные

    • Без условия отбора

  • По числу таблиц, участвующих в запросе:

    • Однотабличные

    • Многотабличные

Внимание:

    1. Таблицы, включенные в запрос, будут влиять на ответ, даже, если поля некоторых из этих таблиц не участвуют в условиях запроса

    2. Необходимо учитывать тип соединения таблиц

    3. Надо использовать минимальное число таблиц, необходимых для выполнения запроса

    4. Обратить внимание на обработку таблиц, для которых не задана связь

    5. Возможно использовать в качестве источника одну и ту же таблицу многократно (связь таблицы самой с собой - самобъединение)

  • По выполняемым действиям:

    • Поисковые

    • Корректирующие

      • Замена

      • Вставка

      • Удаление

    • Запрос на создание таблиц

  • По моменту задания значений аргументов поиска

    • При задании запроса

    • при выполнении запроса (параметрические запросы)

Получаемая в ответе информация:

- содержится в базе данных

  • вычисляется:

    • агрегирующие функции – возможна только одноуровневая агрегация произвольные выражения

Специальные запросы

  • Перекрестные

  • Поиск повторяющихся [записей]

  • Поиск записей, не имеющих подчиненных

  1. Классификация запросов.

  • Языки запросов:

    • табличные (QBE)

Часто используется не только как самостоятельный ЯЗ, но и как построитель запросов на SQL

    • Аналитические (SQL)

Графические элементы используются частично

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

  • Используются:

    • в интерактивном режиме

    • встраиваются в программы

  • Обычно не являются функционально-полными языками

  • Возможности языка зависят то его типа

  • Часто включают в себя дополнительные возможности:

    • определения данных

    • корректировки данных

  • Зависят от СУБД:

    • реляционные языки запросов

    • объектные языки запросов

    • XML

В реляционных языках запросов источниками данных являются плоские таблицы (реальные или виртуальные (запросы, представления) и результатом является плоская таблица

Любой запрос определяет:

- источник(и) информации

- поля, выводимые в ответ (обязательно)

  • Условие отбора (не обязательно)

Дополнительно может быть задано:

  • упорядочение данных в ответе. Упорядочение ответа может использоваться не только для вывода результата в определенной последовательности, но и для формирование специфических запросов

  • Число записей, выводимых в ответ (все, заданное число, заданный процент)

Классификация запросов

  • По числу аргументов поиска в запросе

    • Простые (один аргумент)

    • Сложные (более одного)

      • Условие AND (И)

      • Условие OR (ИЛИ)

      • Смешанные

    • Без условия отбора

  • По числу таблиц, участвующих в запросе:

    • Однотабличные

    • Многотабличные

Внимание:

    1. Таблицы, включенные в запрос, будут влиять на ответ, даже, если поля некоторых из этих таблиц не участвуют в условиях запроса

    2. Необходимо учитывать тип соединения таблиц

    3. Надо использовать минимальное число таблиц, необходимых для выполнения запроса

    4. Обратить внимание на обработку таблиц, для которых не задана связь

    5. Возможно использовать в качестве источника одну и ту же таблицу многократно (связь таблицы самой с собой - самобъединение)

  • По выполняемым действиям:

    • Поисковые

    • Корректирующие

      • Замена

      • Вставка

      • Удаление

    • Запрос на создание таблиц

  • По моменту задания значений аргументов поиска

    • При задании запроса

    • при выполнении запроса (параметрические запросы)

Получаемая в ответе информация:

- содержится в базе данных

  • вычисляется:

    • агрегирующие функции – возможна только одноуровневая агрегация произвольные выражения

Специальные запросы

  • Перекрестные

  • Поиск повторяющихся [записей]

  • Поиск записей, не имеющих подчиненных

  1. Особенности запросов с подгруппировкой.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]