Объекты БД

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

Типы объектов

Запрос ниже отображает тип объекта и количество объектов этого типа в БД

select object_type,count(object_type) from dba_objects group by object_type order by object_type;

64

Этот запрос использует представление DBA_OBJECTS, в котором хранится строка для каждого объекта БД. БД промышленных систем могут хрнаить сотни тысяч объектов. У вас может не быть доступна к DBA_OBJECTS в зависимости от прав и альтернативой является представление USER_OBJECTS, которое отобразит все принадлежащие вам объекты и представление ALL_OBJECTS, в котором доступны все объекты к которым у вас есть доступ. У всех пользователей есть доступ к этим представлениям.

Для SQL программиста наиболее интересны объекты которые содержат, или можно сказать дают доступ к данным. Это таблицы, представления, синонимы, индексы и сиквенсы.

Таблицы обычно хранят данных как строки состоящие из столбцов. Представления хранят результат команды SELECT который может использоваться как будет это таблица. Это обычный запрос но вместо того чтобы выполнять запрос и потом обрабатывать его, пользователь использует команду  SELECT к представлению. Т.е. пользователь выполняет запрос к результату другого запроса. Синоним это псевдоним к таблице (или представлению). Пользователь может выполнять запрос используя синоним а БД преобразует запрос к объекту на который указывает синоним. Назначение индексов — это увеличение скорости доступа к строкам в таблице. Если запросу необходима всего одна строка, то вместо просмотра всей таблицы для поиска нужной строки, индекс может предоставить указатель на расположение именно необходимой строки. Конечно, необходимо простматривать индекс для поиска нужной строки, но это обычно гораздо быстрее чем просмотр таблицы. Сиквенс используется для генерации уникальных чисел. Существует много сценариев когда необходимы уникальные числа. Сиквенсы генерируют числа по порядку и по запросу: т.е. абсолютно невозможна генерация дубликата. Остальные типы объектов используются гораздо реже. Их используют в основном PL/SQL разработчики и администраторы.

Именование объектов схемы

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

Длина от 1 до 30 символов (за исключением названий ссылок БД, длина которых ограничена 128 символами)

Нельзя использовать зарезервированные слова (такие как SELECT)

Имя должно начинаться с буквы

Имена могут содержать только цифры, буквы, подчеркивание, знак доллара и знак хеш

Буквы автоматически конвертируются в прописные

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

65

EXAM TIP

Object names must be no more than 30 characters. The characters can be letters, digits, underscore, dollar, or hash.

Также такие инструменты как SQL *PLUS и SQL Developer автоматически конвертируют буквы к верхнему регистру если имя не указано в двойных кавычках. Надо помнить что имена регистрочувствительны. В следующем примере две таблицы абсолютно разные

66

Пространства имен

Обычно говорят что уникальным идентификатором объекта является имя объекта с именем схемы. Это в принципе так, но для полного понимания именования необходимо ввести понятие пространство имен. Пространство имём определяет группу типов объектов, внутри которой все именя должны определяться уникальным идентификатором – схемой и именем. Объекты в разных пространствах имен могут иметь одинаковые имена.

Эти типы объектов используют общее пространство имен

67

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

Эти объекты каждый хранится в своём пространтсве имен

68

То есть возможно (но это явно не стоит делать) создать индекс с таким же именем как имя таблицы даже в той же схеме.

EXAM TIP

Within a schema, tables, views, and synonyms cannot have the same names.

Типы данных

Во время создания таблицы каждому столбцу необходимо назначить тип данных, который определяет природу данных доступных для хранения в этом столбце. Эти типы данных также использутся для определения аргументов PL/SQL процедур и функций. Когда вы выбираете тип данных для столбца, вы должны обдумать какие данные вы будете хранить и какие операции вам необходимо осуществлять. Размер тоже имеет значение: некоторые типы данных имеют фиксированную длину, занимая одно и то же количество байт вне зависимости от того какие данные фактически записаны; другие имеют различную длину. Если столбец не заполнен, Oracle не будет выделять пространство совсем. Если вы затем обновите строку заполнив этот столбец, размер строки станет больше вне зависимости от типа данных (фиксированный размер или изменяемый).

Следующие типы данных использутся для алфавитно-цифровых данных

69

TIP

For ISO/ANSI compliance, you can specify a VARCHAR data type, but any columns of this type will be automatically converted to VARCHAR2.

Следующие типы данных используются для хранения численных данных, все изменяемой длины

70

Далее типы данных для даты и время, все фикисированного размера

71

Типы данных для хранения больших объектов

72

Типы данных RAW и ROWID

73

Тип VARCHAR2 должен иметь фиксированное число определяющее максимальную длину столбца. Если значение записанное в этот столбец меньше чем это значение, не проблема: значение займёт столько места сколько необходимо. Если значение имеет большее длину чем максимальная допустимая длина столбца – запрос вернёт ошибку. Если значение обновляется на более длинное или короткое – размер столбца (и соответственно строки) также будет изменяться. Если значение не определено или обновляется в значение NULL то столбец не занимает место совсем.

У типа данных NUMBER может быть указана точность (precision)и шкала (scale).Точность обозначает максимальное количество цифр в числе, а шкала определяет сколько цифр число хранит после запятой. Если шкала имеет отрицательное значение – то все цифры порядков меньше либо равных этому значению заменяются на ноль. Если количество цифр превышает точность – то возникнет ошибка. Если количество цифр не превышает точность, но количество цифр после запятой больше чем шкала – значение будет округлено к ближайшему значению удовлетворяющему шкале.

Тип данных DATE всегда включает в сеюя век, год, месяц, день, час, минуту и секунду – даже если они не указываются в момент вставки. Год, месяц и день – должны быть указаны; если час, минута и секунда не указаны явно использутся значение по умолчанию – полночь.

Добавить комментарий