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

Логическая структура базы данных Oracle Объекты бд:

  • Таблицы / Tables

  • Кластеры / Clusters — набор таблиц, хранящихся физически вместе как одна таблица. Есть общий столбец, по которому они соединяются.

  • Индексы / Indexes — создаются по столбцу или нескольким, чтобы ускорить поиск информации.

  • Представления / Views

  • Синонимы / Synonyms

  • Последовательности / Sequences

  • Функции / Functions и Процедуры / Procedures

  • Пакеты / Packages

  • Триггеры / Triggers — программный код, хранится в БД, который вызывается при событиях, связанных с изменениями в БД. Для поддержания БД в правильном состоянии.

Наиболее часто используемые типы данных Oracle:

  • BLOB — 4 Гбайта. Большие объекты

  • CHAR(n) — текстовые поля фиксированной длины. Максимальное количество символом около 2000

  • DATE — поля длиной 7 байт, содержащие дату и время

  • INT — Целое число длиной 38 знаков

  • NUMBER(n,d) — n — указание общего количества значащих цифр, d — дробной части. Числа с фиксированной точкой или запятой

  • VARCHAR(n) — переменного размера строки. 4000 символов

  • VARCHAR2(n)

Логические структуры хранения данных:

  • табличные пространства (table spaces)

  • схемы (schemas)

  • блоки данных (data blocks)

  • экстенты (extents)

  • сегменты (segments)

Табличные пространства

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

Схема — именованная коллекция таких объектов, как таблицы, представления, кластеры и процедуры, связанных с определенным пользователем.

Механизм схем и пользователей применяется администраторами БД (АБД) для управления защитой базы данных, в частности, для управления доступом к данным. Имя схемы и имя пользователя совпадают (взаимозаменяемые понятия). По умолчанию, пользователь имеет доступ ко всем объектам имеющимся в его схеме.

Блок данных — самый маленький модуль памяти, который СУБД Oracle может использовать или распределять. Один блок данных соответствует конкретному числу байтов физического дискового пространства.

Экстент — определенно количество расположенных рядом блоков данных, в которых хранится информация конкретного типа.

Сегмент — набор нескольких экстентов. Экстенты, входящие в сегмент, могут не располагаться рядом с друг другом на дисковом пространстве. Сегмент — набор экстентов, отведенных для определенной логической структуры.

Управление доступом к данным

Имя пользователя — обычный идентификатор языка SQL, используемый для обозначения некоторого пользователя базы данных.

Привилегия — право выполнять определенный тип операторов языка SQL или право доступа к объекту другого владельца (пользователя). Объектные привилегии относятся к типам объектов.

Роль — группирует несколько привилегий и других ролей, позволяя назначать или отменять всю группу одновременно.

26) Null значения в бд oracle, назначение и особенности использования.

Специальное значение NULL означает отсутствие данных, констатацию того факта, что значение неизвестно. По умолчанию это значение могут принимать столбцы и переменные любых типов, если только на них не наложено ограничение NOT NULL. Также, СУБД автоматически добавляет ограничение NOT NULL к столбцам, включенным в первичный ключ таблицы. Основная особенность NULLа заключается в том, что он не равен ничему, даже другому NULLу. С ним нельзя сравнить какое-либо значение с помощью любых операторов: =, <, >,like… Даже выражение NULL != NULL не будет истинным, ведь нельзя однозначно сравнить одну неизвестность с другой. Кстати, ложным это выражение тоже не будет, потому что при вычислении условий Oracle не ограничивается состояниями ИСТИНА и ЛОЖЬ. Из-за наличия элемента неопределённости в виде NULLа существует ещё одно состояние — НЕИЗВЕСТНО.

Существуют специальные операторы IS NULL и IS NOT NULL, которые позволяют производить сравнения с NULLами. IS NULL вернёт истину, если операнд имеет значениеNULL и ложь, если он им не является. Соответственно, IS NOT NULL действует наоборот: вернёт истину, если значение операнда отлично от NULLа и ложь, если он является NULLом

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

Из-за особенностей трёхзначной логики IN/NOT IN вообще не дружит с NULLами: как только NULL попал в условия отбора, данных не ждите.

Логические операции и NULL

Обычно, состояние НЕИЗВЕСТНО обрабатывается так же, как ЛОЖЬ. Например, если вы выбираете строки из таблицы и вычисление условия x = NULL в предложении WHERE дало результат НЕИЗВЕСТНО, то вы не получите ни одной строки. Однако, есть и отличие: если выражение НЕ(ЛОЖЬ) вернёт истину, то НЕ(НЕИЗВЕСТНО) вернёт НЕИЗВЕСТНО. Логические операторы AND и OR также имеют свои особенности при обработке неизвестного состояния. Конкретика в примере ниже.