Создание индекса для атрибута подтипа в таблице объектов SQL
Я создал таблицу типа объекта "документ". Эта таблица содержит несколько подтипов документа (например: рецепт, публикация, контракт). Все эти подтипы содержат общие атрибуты (идентификатор, заголовок, размер файла), но часто содержат дополнительные атрибуты (например, номер запаса). Я создал индексы на часто используемых общих атрибутах, но также хотел бы создать индексы на часто используемых специфических атрибутах подтипа.
Например, я создал индекс для названия Таблица документов:
CREATE INDEX i_title
ON Documents (Title);
Я хотел бы сделать что-то похожее на следующее:
CREATE INDEX i_stock_number
ON DOCUMENTS d (Stock_Number) WHERE VALUE(d) IS OF TYPE(Publication);
Или, возможно,
CREATE INDEX i_stock_number
ON DOCUMENTS (TREAT(DOCUMENTS AS Publication).Stock_Number);
Не могли бы вы помочь мне определить, как создавать индексы для определенных атрибутов подтипов?
Спасибо, что уделили мне время.1 ответ:
create index i_stock_number on documents d (treat(value(d) as publication).stock_number);
Предполагая такую модель данных:
create or replace type document is object ( id number, title varchar2(100), file_size number ) not final; create or replace type publication under document ( stock_number number ); create table documents of document; insert into documents values(publication(1, 'title', 100, 200)); commit;