Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 25.10.2015
Сообщений: 5
1

Хранение объектных типов в Oracle

25.10.2015, 16:21. Показов 669. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, пытаюсь понять как СУБД Oracle хранит информацию об объектных типах и таблицах, созданных на основе таких типов.
Проделал следующие операции:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
SQL> CREATE TYPE obj_type1 AS object(
  2  attr varchar2(1)
  3  );
  4  /
 
TYPE created.
 
SQL> CREATE TYPE obj_type2 AS object(
  2  attr varchar2(3),
  3  obj1 obj_type1
  4  );
  5  /
 
TYPE created.
 
SQL> CREATE TYPE obj_type3 AS object(
  2  attr varchar2(4),
  3  obj2 obj_type2
  4  );
  5  /
 
TYPE created.
 
SQL> CREATE TABLE objtest OF obj_type3;
 
TABLE created.
 
SQL> INSERT INTO objtest VALUES('asdf', obj_type2('asd', obj_type1('a')));
 
1 ROW created.
 
SQL> SELECT * FROM objtest;
 
ATTR                                                                            
----                                                                            
OBJ2(ATTR, OBJ1(ATTR))                                                          
--------------------------------------------------------------------------------
asdf                                                                            
OBJ_TYPE2('asd', OBJ_TYPE1('a'))                                                
                                                                                
 
SQL> SELECT column_name, hidden_column FROM user_tab_cols WHERE TABLE_NAME = 'OBJTEST';
 
COLUMN_NAME                    HID                                              
------------------------------ ---                                              
SYS_NC_OID$                    YES                                              
SYS_NC_ROWINFO$                YES                                              
ATTR                           NO                                               
OBJ2                           NO                                               
SYS_NC00005$                   YES                                              
SYS_NC00006$                   YES                                              
 
6 ROWS selected.
 
SQL> SELECT attr, sys_NC00005$, sys_NC00006$ FROM objtest;
 
ATTR SYS S                                                                      
---- --- -                                                                      
asdf asd a                                                                      
 
SQL> CREATE TYPE obj_type5 AS object(
  2  a varchar2(2),
  3  b varchar2(2)
  4  );
  5  /
 
TYPE created.
 
SQL> CREATE TYPE obj_type6 AS object(
  2  c varchar2(2),
  3  d varchar2(2),
  4  obj5 obj_type5
  5  );
  6  /
 
TYPE created.
 
SQL> CREATE TYPE obj_type7 AS object(
  2  obj6 obj_type6
  3  );
  4  /
 
TYPE created.
 
SQL> CREATE TABLE objtest3 OF obj_type7;
 
TABLE created.
 
SQL> INSERT INTO objtest3 VALUES(obj_type6('as', 'df', obj_type5('fd', 'sa')));
 
1 ROW created.
 
SQL> SELECT column_name, hidden_column FROM user_tab_cols WHERE TABLE_NAME = 'OBJTEST3';
 
COLUMN_NAME                    HID                                              
------------------------------ ---                                              
SYS_NC_OID$                    YES                                              
SYS_NC_ROWINFO$                YES                                              
OBJ6                           NO                                               
SYS_NC00004$                   YES                                              
SYS_NC00005$                   YES                                              
SYS_NC00006$                   YES                                              
SYS_NC00007$                   YES                                              
 
7 ROWS selected.
Как видно, имена столбцов SYS_NC00004$ и SYS_NC00005$ и т.д., соотвестсвующие полям объектных типов устанавливаются по порядку для каждой таблицы по-своему. Как, тогда, СУБД определяет принадлежность столбца тому или иному объектному типу? В SYS_NC_ROWINFO$, как я понял, записана структура таблицы, для чего этот скрытый столбец?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2015, 16:21
Ответы с готовыми решениями:

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

Создать иерархию объектных типов (человек, студент, преподаватель) с методами init, show
Написать программу на языке Паскаль,которая,используя методику ООП,создает иерархию объектных...

Хранение разных типов
Приветствую всех. Возник вот такой вопрос. У меня есть, например, 3 разных структуры, каждая из...

Хранение переменных разных типов
У меня есть два типа данных, производных от третьего. Можно ли как нибудь хранить вместе несколько...

1
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
26.10.2015, 00:58 2
Во вьюхе USER_TAB_COLS есть еще столбец QUALIFIED_COL_NAME. Там всё и описано.
1
26.10.2015, 00:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.10.2015, 00:58
Помогаю со студенческими работами здесь

Хранение данных разных типов
Уважаемые программисты помогите мне понять тему хранение типов данных. 1)например тип int...

Oracle+Delphi хранение процедур
Здравствуйте ребята . Как обратиться хранение процедур в Oracle который есть на Update . Как...

Oracle Database : создание и хранение запросов
Есть сервер с базой, есть sql developer соединённый с сервером под своей учёткой и там создана...

Хранение в хеше не простых типов данных и их использование?
Добавить элемент типа StreamWriter в хеш получается Hashtable ht = new Hashtable();...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru