- •Министерство образования и науки рф Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
- •Введение в базы данных
- •Учебное пособие
- •Воронеж 2012
- •Понятие информационной системы
- •Процессы в информационной системе
- •Этапы развития информационных систем
- •Структура информационной системы. Типы обеспечивающих подсистем
- •Математическое и программное обеспечение
- •Правовое обеспечение
- •Классификация информационных систем по признаку структурированности задач
- •Понятие структурированности задач
- •Типы информационных систем, используемые
- •Классификация ис по характеру использования информации
- •Классификация ис по сфере применения
- •Классификация ис по степени автоматизации
- •Контрольные вопросы
- •2. Введение в субд
- •2.1. Понятие базы и банка данных
- •2.2. Средства реализации баз данных
- •2.2.1. Программные средства банка данных
- •2.2.2. Языковые средства
- •2.2.3. Технические и организационно-методические средства
- •2.2.4. Требования к банкам данных
- •2.3. Функции субд
- •2.4. Классификация банков данных
- •2.4.1. Классификация баз данных
- •2.4.2. Классификация субд
- •2.4.3. Классификация БнД по экономико-организационным признакам
- •2.5. Концепция централизованного управления
- •Преимущества централизованного управления данными
- •2.6. Трехуровневая архитектура системы баз данных
- •2.7. Пользователи банков данных
- •2.8. Архитектура клиент/сервер
- •Контрольные вопросы
- •3. Модели и типы данных
- •3.1. Иерархическая модель
- •3.2. Сетевая модель
- •3.3. Реляционная модель
- •3.4. Постреляционная модель
- •3.5. Многомерная модель
- •3.6. Типы данных
- •Контрольные вопросы
- •4. Применение Баз данных в корпоративных информационных системах
- •4.1. Корпоративная информационная система
- •Контуром оперативного управления
- •4.2. Контур административного управления
- •4.2.1. Наполнение баз данных на примере модуля «Управление персоналом»
- •4.3. Контур оперативного управления
- •4.3.1. Пример организации модуля «Управление продажами (сбыт)»
- •Базы данных модуля «Автотранспорт»
- •4.4. Контур бухгалтерского учета
- •Контрольные вопросы
- •5. Справочно-правовые базы данных
- •5.1. Общая характеристика справочно-правовых баз
- •5.2. Наиболее популярные юридические базы данных
- •5.2.1. База юсис
- •5.2.2. Информационно-поисковая система "Кодекс"
- •5.2.3. Справочно-правовая система "Гарант"
- •5.2.4. Справочно-правовая система «Консультант Плюс»
- •5.2.5. Программный комплекс "Эталон"
- •Контрольные вопросы
- •6. Проектирование баз данных
- •6.1. Этапы проектирования
- •6.2. Инфологическое моделирование
- •6.2.1. Компоненты инфологической модели Модель «сущность — связь»
- •6.2.2. Классификация бинарных связей
- •6.2.3. Моделирование локальных представлений
- •6.2.4. Объединение моделей локальных представлений
- •6.3. Даталогическое проектирование
- •6.4. Проектирование реляционных баз данных
- •6.5. Нормализация отношений
- •Контрольные вопросы
- •7. Реляционная модель данных
- •Общие понятия
- •7.2. Реляционные объекты данных
- •7.2.1. Основные понятия
- •7.2.2. Фундаментальные свойства отношений
- •7.2.3. Виды отношений
- •Целостность реляционных данных
- •Реляционные операторы
- •7.4.1. Реляционная алгебра
- •Примеры использования реляционной алгебры для выражения словесных запросов в виде формулы
- •Назначение реляционной алгебры
- •Операции расширения и подведения итогов
- •Операторы обновления
- •7.4.2. Реляционное исчисление
- •Контрольные вопросы
- •8. Язык реляционных баз данных sql
- •8.1. Функции и основные возможности
- •8.2. Средства определения схемы
- •8.2.1. Определение таблицы
- •8.2.2. Определение ограничений целостности таблицы
- •8.2.3. Определение представлений
- •8.3. Структура запросов
- •8.3.1. Спецификация курсора
- •8.3.2. Оператор выборки
- •8.3.3. Подзапрос
- •8.3.4 Табличное выражение
- •Раздел where
- •Предикат сравнения
- •Предикат between
- •Предикат in
- •Предикат null
- •Предикат с квантором
- •Предикат exists
- •Раздел group by
- •Раздел having
- •8.4. Агрегатные функции и результаты запросов
- •8.5. Операторы обновления
- •Оператор изменения записей
- •Контрольные вопросы
- •9. Внутренняя организация реляционных субд
- •9.1. Хранение отношений
- •9.2. Индексы
- •9.3. Журнальная информация
- •9.4. Служебная информация
- •Контрольные вопросы
- •10. Настольные субд
- •10.1. Общие сведения о настольных субд
- •10.2. Наиболее популярные настольные субд
- •Контрольные вопросы
- •11. Серверные субд
- •11.1. Характерные черты современных серверных субд
- •Наиболее популярные серверные субд
- •Контрольные вопросы
- •Заключение
- •Корелина Татьяна Валерьевна введение в базы данных
- •394006 Воронеж, ул. 20-летия Октября, 84
Операторы обновления
Реляционная модель кроме реляционной алгебры может включать также операции реляционного присвоения, имеющие следующий синтаксис:
target := source.
Вычисленное значение source присваивается отношению target, заменяя его старое значение. Операция присвоения дает возможность обновлять базу данных, однако она позволяет только полностью заменять значение отношения, поэтому используются более точные операции обновления, такие как INSERT, DELETE и UPDATE.
Оператор вставки INSERT
Синтаксис: INSERT source INTO target.
Пример: INSERT (S where CITY = ‘London’) INTO TEMP.
Оператор обновления UPDATE
Синтаксис: UPDATE target assignment-commalist,
где каждое присвоение assignment имеет вид attribute:=scalar-expression; target – реляционное выражение, а каждый атрибут attribute принадлежит отношению, которое является результатом вычисления указанного выражения. Все кортежи в результирующем отношении обновляются в соответствии с указанным оператором присвоения.
Пример: UPDATE P WHERE COLOR = ‘Red’ CITY := ‘Paris’.
Оператор удаления DELETE
Синтаксис: DELETE target.
Пример: DELETE S WHERE STATUS < 20.
7.4.2. Реляционное исчисление
Помимо реляционной алгебры для описания реляционных операций может быть использовано реляционное исчисление. Допустим, необходимо создать запрос: «Получить номера и города поставщиков, поставляющих деталь Р2». Алгебраическая версия этого запроса выглядит следующим образом:
преобразовать естественное соединение отношений S и P по атрибуту S#;
выбрать из результата этого соединения кортежи детали P2;
спроецировать результат этой выборки по атрибутам S# и CITY.
Формулировка этого запроса в терминах реляционного исчисления выглядит приблизительно так: «Получить атрибуты S# и CITY для таких поставщиков, для которых существует поставка в отношении SP с тем же значением атрибута S# и со значением P2 атрибута P#».
Во второй формулировке мы указываем лишь характеристики результирующего отношения, но ничего не говорим о способе его формирования. В этом случае система должна сама решить, какие операции и в каком порядке нужно выполнить над отношениями. Обычно говорят, что алгебраическая формулировка является процедурной, т.е. задающей правила выполнения запроса, а логическая – описательной (или декларативной), поскольку она всего лишь описывает свойства желаемого результата. На самом деле эти два механизма эквивалентны, и существуют не очень сложные правила преобразования одного формализма в другой.
Реляционное исчисление основано на исчислении предикатов.
Базисными понятиями исчисления являются понятие переменной с определенной для нее областью допустимых значений и понятие правильно построенной формулы, опирающейся на переменные, предикаты и кванторы. В зависимости от того, что является областью определения переменной, различаются исчисление кортежей и исчисление доменов. В исчислении кортежей областями определения переменных являются отношения базы данных, т.е. допустимым значением каждой переменной является кортеж некоторого отношения. В исчислении доменов областями определения переменных являются домены, на которых определены атрибуты отношений базы данных, т.е. допустимым значением каждой переменной является значение некоторого домена.
При использовании кортежных переменных в формулах можно ссылаться на значение атрибута переменной. Например, для того, чтобы сослаться на значение атрибута SNAME переменной SX, нужно употребить конструкцию SX.SNAME.
Синтаксис реляционного исчисления определяется с помощью грамматики в форме Бэкуса-Наура (БНФ) и имеет следующий вид:
range-variable-definition
::= RANGE OF variable IS range-item-commalist;
range-item
::= relation | expression
expression
::= (target-item-commalist) [WHERE wff]
target-item
::= variable | variable . attribute [AS attribute]
wff
::= condition
| NOT wff
| condition AND wff
| condition OR wff
| IF condition THEN wff
| EXISTS variable (wff)
| FORALL variable (wff)
| (wff)
где commalist – список элементов, разделенных запятыми;
relation - имя отношения, variable - имя переменной, attribute - имя атрибута;
condition (условие) – формула WFF, заключенная в скобки, или простое
скалярное сравнение;
wff (well-formulated formula) – правильно построенная формула.
Правильно построенные формулы (WFF) служат для выражения условий, накладываемых на кортежные переменные. Основой WFF являются простые сравнения, представляющие собой операции сравнения скалярных значений (значений атрибутов переменных или литерально заданных констант). Более сложные варианты WFF строятся с помощью логических связок NOT, AND, OR и IF ... THEN. Допускается также построение WFF с помощью кванторов (EXIST) и (FORALL).
Переменная кортежа определяется следующим образом:
RANGE OF T IS X1, X2, …, Xn,
где T – определяемая переменная кортежа, а Xi – либо имя отношения, либо выражение исчисления кортежей.
Пример: RANGE OF SX IS S.
Переменные, входящие в WFF, могут быть свободными или связанными. Все переменные, входящие в WFF, при построении которой не использовались кванторы, являются свободными. Если имя переменной использовано сразу после квантора при построении WFF, то это связанная переменная. Такая переменная не видна за пределами минимальной WFF, связавшей эту переменную. При вычислении значения такой WFF используется не одно значение связанной переменной, а вся ее область определения. Формула WFF, в которой все переменные связаны, называется закрытой формулой WFF. Открытая формула WFF – это такая формула, которая содержит по крайней мере одну свободную переменную.
WFF обеспечивают средства формулировки условия выборки из отношений БД. Чтобы можно было использовать исчисление для реальной работы с БД, требуется компонент, который определяет набор и имена столбцов результирующего отношения. Этот компонент называется целевым списком (target_item_commalist). Целевой список строится из целевых элементов, каждый из которых может иметь следующий вид:
•var.attr, где var - имя свободной переменной соответствующей WFF, а attr - имя атрибута отношения, на котором определена переменная var;
•var, что эквивалентно наличию подсписка var.attr1, var.attr2, ..., var.attrn, где attr1, attr2, ..., attrn, включает имена всех атрибутов определяющего отношения;
•new_name AS var.attr; new_name - новое имя соответствующего атрибута результирующего отношения.
Последний вариант требуется в тех случаях, когда в WFF используются несколько свободных переменных с одинаковой областью определения. Выражением реляционного исчисления кортежей называется конструкция вида target_item_commalist WHERE wff. Значением выражения является отношение, тело которого определяется WFF, а набор атрибутов и их имена – целевым списком.
Примеры:
1. Получить номера поставщиков из Парижа со статусом больше 20:
SX.S# WHERE SX.CITY = ‘Paris’ AND SX.STATUS > 20
2. Получить имена поставщиков, которые поставляют деталь P2:
SX. NAME WHERE EXISTS SPX ( SPX.S# = SX.S# AND SPX.P# = ‘P2’)
3. Получить имена поставщиков, которые поставляют по крайней мере одну деталь, поставляемую поставщиком S2:
SX.SNAME WHERE EXISTS SPX (EXISTS SPY (SX.S# = SPX.S# AND
SPX.P# = SPX.P# AND
SPY.S# = ‘S2’))
4. Получить имена поставщиков, которые поставляют все детали:
SX.SNAME WHERE FORALL PX (EXISTS SPX (SPX.S# = SX.S# AND
SPX.P# = PX.P))
5. Получить имена поставщиков, которые не поставляют деталь P2:
SX.SNAME WHERE NOT EXISTS SPX
(SPX.S# = SX.S# AND SPX.P# = ‘P2’)
6. Получить общее количество поставляемых деталей:
SUM (SPX, QTY) AS GRANDTOTAL)
Основным формальным отличием исчисления доменов от исчисления кортежей является наличие дополнительного набора предикатов, позволяющих выражать так называемые условия принадлежности. Если R - это n-арное отношение с атрибутами a1, a2, ..., an, то условие членства имеет вид R (ai1:vi1, ai2:vi2, ..., aim:vim) (m <= n), где vij - это либо литерально задаваемая константа, либо имя доменной переменной. Условие членства принимает значение true в том и только в том случае, если в отношении R существует кортеж, содержащий указанные значения указанных атрибутов. Если vij – константа, то на атрибут aij задается жесткое условие, не зависящее от текущих значений доменных переменных; если же vij – имя доменной переменной, то условие членства может принимать разные значения при разных значениях этой переменной.
Во всех остальных отношениях формулы и выражения исчисления доменов выглядят похожими на формулы и выражения исчисления кортежей.
Пример:
1. Получить номера поставщиков из Парижа со статусом больше 20:
SX WHERE EXISTS STATUSX
(STATUSX>20 AND S (S#:SX, STATUS:STATUSX, CITY:‘Paris’))
2. Получить имена поставщиков, которые поставляют, по крайней мере, одну деталь, поставляемую поставщиком S2:
NAMEX WHERE EXISTS SX EXISTS PX
(S (S#:SX, SNAME:NAMEX
AND SP (S#:SX, P#:PX)
AND SP (S#:’S2’, P#:PX)
3. Получить имена поставщиков, которые поставляют все детали:
NAMEX WHERE EXISTS SX (S (S#:SX, SNAME:NAMEX)
AND FORALL PX (IF P (P#:PX)
THEN SP (S#:SX, P#:PX)))
4. Получить имена поставщиков, которые не поставляют деталь P2:
NAMEX WHERE EXISTS SX (S (S#:SX, SNAME:NAMEX)
AND NOT SP (S#:SX, P:’P2’))
5. Получить номера деталей, которые или весят более 16 фунтов, или поставляются поставщиком S2, или и то и другое:
PX WHERE EXISTS WEIGHTX
(P (P#:PX, WEIGHT:WEIGHTX)
AND WEIGHTX>16)
OR SP (S#:’S2’, P#:PX)