Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpora_proektirovanie2222222222.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
532.99 Кб
Скачать

30. Модель реляционной базы данных. Столбцы, домены и правила. Реляционные таблицы, ссылочная целостность. Реляционные представления. Хранимые процедуры. Триггеры.

Реляционная модель была предложена Коддом в статье "Реляционная модель данных для больших совместно используемых банков данных", опубликованной в 1970г.

Будучи математиком по образованию Э.Кодд предложил использовать для обработки данных аппарат теории множеств (объединение, пересечение, разность, декартово произведение). Он показал, что любое представление данных сводится к совокупности двумерных таблиц особого вида, известного в математике как отношение - relation, а также показал, что набор таблиц (или отношений) может быть использован для моделирования взаимосвязей между объектами реального мира и для хранения данных об этих объектах.

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

Реляционная модель - это способ рассмотрения данных, который связан с тремя аспектами данных:

  • Структурной частью (объекты данных)

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

  • Манипуляционной частью

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

  • Целостной частью.

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

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

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

-Домен имеет уникальное имя (в пределах базы данных).

-Домен определен на некотором простом типе данных или на другом домене.

Простые, или атомарные, типы данных не обладают внутренней структурой. Данные такого типа называют скалярами. К простым типам данных относятся следующие типы: логический, строковый, численный и т.д. Неатомарные значения — это значения, которые имеют в своем составе структурированные значения (связанные списки, вложенные отношения и т.д.), т.е. некоторые домены могут в качестве элементов содержать отношения. Эти отношения могут, в свою очередь, быть определены на непростых доменах и т.д. Например, одним из доменов, на которых определено отношение СЛУЖАЩИЙ, мог бы быть домен история зарплаты. Элемент домена история зарплаты - бинарное отношение, определенное на домене дата и домене зарплата (рис.31.);

Табельный ФИО История зарплаты

номер служащего

Дата зарплата

1212 Иванов И.И. 12.01.05 3000

1212 Иванов И.И. 12.02.05 3000

(Пример неатомарности домена)

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

-домен несет определенную смысловую нагрузку.

Например, домен D, имеющий смысл "возраст сотрудника" можно описать как следующее подмножество множества натуральных чисел:

D=(neN:n>18 and <60)

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

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

Ссылочная целостность.

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

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

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

Еще одним преимуществом использования представлений является то, что представление может иметь уровень безопасности, отличный от его базовой таблицы. Запрос, определяющий представление, запускается с уровнем безопасности пользователя, создавшего это представление. Так, вы можете использовать представление, чтобы маскировать (скрыть) данные, которые вы не хотите показывать определенным классам пользователей. Кроме того, для ускорения доступа представления могут быть проиндексированы. Также к представлению можно применять операции INSERT, UPDATE и DELETE.

Хранимые процедуры – это группа команд (инструкции, функции) языка SQL, объединенные в 1 модуль , написанный на языке Transact-SQL. Компилируются и вычисляются как единое целое. В коде хранимой процедуры можно использовать не только операции выборки и модификации данных, но и логику ветвления, переменные, вызовы других процедур и некоторые другие средства, характерные для языков программирования высокого уровня.. Хранимая процедура может:

* содержать параметры (аргументы);

* вызывать другие процедуры;

* возвращать свой статус вызывающей процедуре или пакету, указывающий на успешное окончание или ошибку, и в случае ошибки на ее причину;

* возвращать значения параметров вызывающей процедуре или пакету;

* выполняться на удаленном SQL сервере.

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

Практика

Язык манипулирования данных состоит из 4 основных команд

SELECT(выбрать)

INSERT(вставить)

UPDATE(обновить)

DELETE(удалить)

Операции

- выборка

-проекция

-обьединение

-соединение

Операция выборка:

Позволяет получить все строки данных из одной или нескольких таблиц либо часть строк из одной таблицы

Например:

Select * From Студенты

Операция проекции:

Позволяет выделить подмножество столбцов таблиц

Например:

Select Студенты.Фамилия

From Студенты

Операция соединения:

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

Например:

Select Студенты.№Дела, Абитуриенты.№Дела

From Студенты , Абитуриенты

Where Студенты.№Дела= Абитуриенты.№Дела

По любому полю не обязательно ключеному

Операция обьединения:

-односхемные отношения

-обьединение по к-л коду

Позволяет обьединить рез-ты отдельных запросов по неск таблицам в единую таблицу. Также данные из односхемных таблиц

Для вып-я этой таблицы исп операция Union

Например:

Select Студенты.№Дела, Студенты.Город

From Студенты

Where Студенты.Город=”Спб”

Union

Select Абитуриенты.№Дела, Абитуриенты.Город

From Абитуриенты

Where Абитуриенты.Город= “Спб”

Общий синтаксис команды выборки

Select [Dinstinct] – список полей таблиц

From – список таблиц

[Where предикат] – условие

[Group by поле[поле]] [Having предикат] – группировка

[Union др выр-е Select] – обьединение

[Order by поля[поле]] - сортировка

Отобрать всех студ одного года

Select *

From Студенты

Where Студенты.ГодРождения = 1990

Where – это нек-е опр-е условие отбора записи, зн-е кот имеет буленовский тип (истина-ложь)

Предложение [Group byHaving]Предикат исп-ся для вып-я запроса с группировкой данных. В этом случае как правила предложение Where не исп-ся

Например

Select Студенты.ГодРождения

From Студенты

Group by Студенты.ГодРождения

Having Студенты.ГодРождения=1990

Order by – предложение позволяет проводить сортировку данных по возрастанию[ASC] или убыванию[DESC]

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