- •Содержание
- •1 Цель и порядок работы 134
- •1.1 Цель работы 134
- •1.2 Порядок выполнения работы 134
- •Введение
- •Системные требования к серверу базы данных
- •Требования к аппаратному обеспечению
- •Требования к программному обеспечению
- •Проверка выполнения системных требований
- •Инсталляция
- •Сеансы работы с базой данных
- •Советы по разрешению возникших проблем
- •Проверка правильности установки программного обеспечения и базы данных Oracle xe
- •Проверка работы служб, связанных с Oracle
- •Определение ключей
- •Внешний ключ может ссылаться на поля таблицы из другой схемы
- •Создание базы данных в графическом режиме. Создание таблиц в графическом режиме можно осуществить, выбрав в меню Object Browser-Create –Table (Рисунок №12)
- •1.1 Цель работы
- •1.2 Порядок выполнения работы
- •1.1 Цель работы
- •1.2 Порядок выполнения работы
- •Формирование условий отбора
- •Группировка данных
- •Группировка данных с помощью функций агрегирования
- •4 Контрольные вопросы
- •Лабораторная работа №5 Соединение таблиц и анализ данных.
- •1 Цель и порядок работы
- •1.1 Цель работы
- •1.2 Порядок выполнения работы
- •3. Задания для самостоятельной работы
- •4 Контрольные вопросы
- •Лабораторная работа №6 Представления в Oracle.
- •1 Цель и порядок работы
- •1.1 Цель работы
- •1.2 Порядок выполнения работы
- •1 Цель и порядок работы
- •1.1 Цель работы
- •1.2 Порядок выполнения работы
- •Способы именования ограничений
- •Ограничения ключей
- •Создание первичного ключа при создании таблицы
- •Создание первичного ключа на существующей таблице
- •Добавление внешнего ключа к существующей таблице
- •Coздание таблицы, ссылающейся на саму себя
- •3. Задания для самостоятельной работы
- •4 Контрольные вопросы
- •Лабораторная работа №8 Транзакции, пакеты и блокировки.
- •1 Цель и порядок работы
- •1.1 Цель работы
- •1.2 Порядок выполнения работы
- •Некоторые особенности выполнения транзакций в oracle:
- •Непротиворечивость считываемых данных
- •Непротиворечивость на уровне оператора.
- •Непротиворечивость на уровне транзакции.
- •Реализация блокирования
- •Виды блокировок:
- •Список рекомендованной литературы
Определение ключей
PRIMARY KEY (первичный ключ). Ограничение определяет столбец или группу столбцов, которую можно использовать для уникальной идентификации строки. Никакие две строки в таблице не могут иметь одинаковые значения столбцов первичного ключа. Кроме того, столбцы первичного ключа должны всегда содержать значение. Все эти условия гарантируют то, что в нашем распоряжение будет одна и только одна строка, соответствующая критериям связывания. Первичные ключи могут быть или именованные (пользователем) или неименованные (Oracle составляет имя сам). В первичных ключах не могут использоваться столбцы типа: raw, long, long raw.
FOREIGN KEY (внешний ключ). FOREIGN KEY, устанавливает отношение целостности между таблицами. Оно требует, чтобы столбец или набор столбцов в одной таблице совпадал с первичным или вторичным ключом другой таблицы. С момента создания внешнего ключа ссылающегося на первичный ключ некой таблицы удаление таблицы будет – запрещено. И обойти это ограничение можно только удалив ограничение. Внешние ключи могут быть именованные или неименованные.
Внешний ключ - это ссылка полей одной таблицы на однотипные поля другой таблицы, обладающие свойством либо (а) уникальности, либо (б) первичного ключа. Исключительно для простоты дальше речь будет идти о простых ключах, то есть состоящих из одного поля. СУБД (в нашем случае - Oracle) обязана следить за тем, чтобы значение внешнего ключа позволило найти запись в таблице, на которую он ссылается (в родительской таблице), а уникальность "родительского поля" гарантирует, что это будет ровно одна запись. Вместе с тем наличия значения в поле внешнего ключа (в подчиненной таблице) не требуется, и автоматические проверки соответствия выполняются только для существующих значений в поле внешнего ключа.
Внешний ключ в Oracle вслед за стандартным SQL реализован как разновидность ограничения. Информация о нем включается в Oracle в системную таблицу USER_CONSTRAINTS.
Внешний ключ в демонстрационной схеме SCOTT в Oracle существует: это поле EMP.DEPTNO, ссылающееся на поле первичного ключа DEPT.DEPTNO. Совпадения имен полей не требуется, но когда оно возможно, это удобно, так как подчеркивает содержательную связь.
Завести внешний ключ можно сразу при создании таблицы, или же потом, командой
ALTER TABLE xxx ADD [CONSTRAINT имя] FOREIGN KEY (fff) REFERENCING ttt(kkk);
Создание ключей можно производить непосредственно при создании таблицы:
CREATE TABLE "ИНСПЕКТОР"
( "ФИО" VARCHAR2(60) NOT NULL ENABLE,
"КОД_ИНСПЕКТОРА" NUMBER NOT NULL ENABLE,
"НОМЕР_НАЛОГОВОЙ" NUMBER NOT NULL ENABLE,
"ДАТА_РОЖДЕНИЯ" DATE NOT NULL ENABLE,
"ТЕЛЕФОН" NUMBER NOT NULL ENABLE,
CONSTRAINT "ИНСПЕКТОР_PK" PRIMARY KEY ("КОД_ИНСПЕКТОРА"))
Внешний ключ может ссылаться на поля таблицы из другой схемы
Чаще всего родительская и подчиненные таблицы находятся в одной схеме БД Oracle. Не так известно, что родительская и подчиненная таблицы могут находиться в разных схемах. Так как схемы используются для разграничения доступа, возникает вопрос о полномочиях.
Для того, чтобы иметь возможность сослаться внешним ключом на поле таблицы в другой схеме, на это поле должна иметься привилегия REFERENCING. Особо нужно отметить, что с привилегиями SELECT, INSERT, UPDATE и DELETE привилегия REFERENCING никак не связана. Иными словами схема с подчиненной таблицей может ничего не знать о конкретных значениях ключа, на которые есть возможность ссылаться, равно как на наличие других полей в таблице.
Важно отметить, что ограничения PRIMARY KEY и UNIQUE автоматически создают индексы на столбцах, для которых они определены, если ограничение активизируется при создании. Если индекс уже существует на столбцах, которые составляют ограничение PRIMARY KEY и UNIQUE, то использует именно этот индекс и Oracle не может создать новый.
