Проектирование и разработка БД Oracle для информатизации объектов культуры

Разработка Базы Данных для информационной системы архива. Обоснование выбора Entity-Attribute-Value в качестве метода проектирования БД. Модификация ROT с учетом наследования, модели Тенцера. Процесс генерации таблиц. Тестовые примеры (test cases).

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 19.01.2014
Размер файла 5,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Blocker

DB3

Поддержка объектов

на немецком языке

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

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, в котором есть атрибуты на немецком языке.

2.Создать объект такого объектного типа.

3.Заполнить значения атрибутов объектного типа литералами на немецком языке.

4.Сохранить в БД.

5. Выбрать этот объект из БД.

Наличие объектов и корректный вывод

значений атрибутов объекта на немецком языке.

Blocker

DB4

Поддержка переключения работы информационной системы с русского на английский язык

Проверка функционирования переключения ра-боты информа-ционной системы с русского на ан-глийский язык

Internet Explorer 6.0.

1. Установить в приложении русский язык.

2. Выбрать объект.

3.Переключиться на английский язык.

4. Выбрать объект.

Корректное отображение

значений атрибутов объекта как русском так и на английских языках

Critical

DB5

Поддержка переключения работы информационной системы с английского на русский язык

Проверка функционирования переключения ра-боты информа-ционной системы с русского на ан-глийский язык

PL\SQL Developer 7.1.5.1398

1. Установить в приложении английский язык.

2. Выбрать объект.

3.Переключиться на русский язык.

4. Выбрать объект

Корректное отображение значений атрибутов объекта как русском так и на английских языках

Critical

DB6

Поддержка без-языкового типа MULTILANG

Проверка функционирования безязыкового типа MULTILANG

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, в котором есть атрибуты типа данных MULTI-LANG.

2.Создать объект та-кого объектного типа.

3.Заполнить значения атрибутов объектного типа. 4.Сохранить в БД.

5. Выбрать этот объект из БД.

Наличие объектов и корректный вывод значения атрибута.

Major

3.3 Сводная таблица тестирования (test log)

На основе данных этой таблицы таблицы 3.3. Test cases составлен test log. Данные тестлога приведены в таблице 3.4. На основании данных тестлога можно проследить примерный график разработки БД. В таблице если стоит Ok - то тогда тест-кейс успешно выполнен, иначе нет. Все тест-кейсы были выполнены, по итогам тест-лога видно, что БД разработана.

Таблица3.4. Test Log.

Test case

Build 1

01.09.09

Вuild 2

01.10.09

Build 3

01.11.09

Build 4

01.12.09

DB1

Ok

Ok

Ok

DB2

Ok

Ok

Ok

Ok

DB3

Ok

Ok

Ok

DB4

Ok

Ok

DB5

Ok

Ok

DB6

Ok

Заключение

B данной дипломной работе была спроектирована и разработана База Данных для информационной системы архива, в которой должны храниться и обрабатываться айдиофайлы, фотофайлы и текстовая информация, характеризуемая сильной разреженностью данных. В ходе разработки была предложена и выбрана в качестве модели БД - модель Entity-Attribute-Value. В данной работе был решен ряд интересных задач, а именно: реализация системы разграничения прав пользователей на объекты с помощью пользовательских представлений и пакета SecurityData. Кроме того, со стороны БД система обеспечена всей необходимой функциональностью: в частности, поисковым механизмом, поддержка логирования пользовательских данных и восстановления утерянных данных.

Реализованная БД позволяет модифицировать пользовательские объекты без блокировки системы. Напомню, что в СУБД Oracle при любой DDL операции производится окончание транзакции и блокировка всех таблиц, над которыми производится данная DDL операция. Эта проблема успешно обойдена использованием EAV-модели. К EAV-модели для ускорения работы выполнения запросов к пользовательским данным была добавлена обычная реляционная модель в виде плоских реляционных таблиц.

База данных осуществляет полноценную поддержку 3 языков (русский, английский и немецкий), а также безязыкового символьного типа, т.е. типа, значения которого уникально как для русской, так и английской и немецкой версии БД. Этот тип нужен, например, для шифра, который уникален и одинаков на любом языке. Кроме того, БД генерирует XML документы для клиентского приложения, т.к. пользовательскому GUI-интерфейсу информационной системы для динамического построения списков данных нужно возвращать динамически генерируемые XML-документы для их последующего вывода в клиентском приложении.

В целом, считаю, что поставленные задачи в списке исходных требований были выполнены, а дипломную работу - завершенной.

Список использованной литературы

1. Змеев О.А., Новиков Д.В., Моисеев А.Н. К вопросу проектирования уровня хранения в виде ООРБД // Вестник ТГУ. Приложение №1 (II), сентябрь 2002. Доклады IV Всероссийской конференции с международным участием «Новые информационные технологии в исследовании сложных структур», Томск, 10-13 сентября 2002. С. 363-367.

2. Ларман К. Применение UML и шаблонов проектирования. 2-е изд. М.: Изд. дом «Вильямс», 2002. 624 с.

3. Тенцер А. База данных - хранилище объектов // КомпьютерПресс. 2001. №8.

4. Войтиков К.Ю., Змеев О.А., Моисеев А.Н. Объектный подход к проблеме проектирова-ния подсистемы нормативно-справочной информации // Обработка данных и управление в сложных системах. Томск: Изд-во Том. ун-та, 2002. Вып. 4. С. 13-20.

5. Том Кайт. Oracle для профессионалов. Книга 1. Архитектура и основные особенности. Третье издание, переработанное и дополненное: Пер. с англ./ Том Кайт - СПб.: ООО “ДиаСофтЮП”, 2005 - С.312.

6. Дейт, К. Дж. Введение в системы баз данных = Introduction to Database Systems. -- 8-е изд. -- М.: “Вильямс”, 2006. -- 1328 с.

7. Томас Коннолли, Каролин Бегг Базы данных. Проектирование, реализация и сопровождение. Теория и практика = Database Systems: A Practical Approach to Design, Implementation, and Management Third Edition. -- 3-е изд. -- М. Вильямс”:, 2003. -- 1436 с.

8. Кузнецов Сергей Дмитриевич “Основы баз данных” -- 1-е изд. -- М.: «Интернет-университет информационных технологий - ИНТУИТ.ру», 2005. -- 488 с.

9. Дейт, К. Дж. Введение в системы баз данных, 8-е издание.: Пер. с англ. -- М.: Издательский дом "Вильямс", 2005. - 103-104 с.

10. Дейт, К. Дж. Введение в системы баз данных, 8-е издание.: Пер. с англ. -- М.: Издательский дом "Вильямс", 2005. - 108 с.

11. С.Д. Кузнецов. Основы современных баз данных, информационно-аналитические материалы Центра информационных материалов. Глава 22.

12. Дуглас Крамер. Платформа Java. Официальное издание. - JavaSoft, Sun Microsystems Inc. 5-7 c.

Приложение 1. Листинги пакетов

Листинг пакета DATAMODIFICATION

Пакет DATAMODIFICATION предназначен для вывода аудита по объекту, объектному типу или атрибуту в виде XML-документа, а также подсчета количества транзакций проводимых над атрибутом, объектом или объектным типом, вывода прав на объект в виде XML-документа. Вывод аудита в виде XML-документа возможен в постраничном виде - это необходимо для отображения большого количества транзакций в приложении. Код заголовка пакета и комментарии к заголовку пакета (см. таб.Пр.1.1.) ниже:

Таблица Пр.1.1. Комментарии к заголовку пакета DATAMODIFICATION.

номер строчки кода

Комментарии

3

Функция showAuditByAttribute предназначена для вывода аудита по конкретному атрибуту.

5

Функция showAuditByObject предназначена для вывода аудита по конкретному объекту.

6

Функция showAuditByObjectType предназначена для вывода аудита по конкретному объектному типу.

7

Функция countTransactionsByAttribute предназначена для вывода количества транзакций по конкретному атрибуту.

8

Функция countTransactionsByObject предназначена для вывода количества транзакций по конкретному объекту.

9

Функция countTransactionsByObjectType предназначена для вывода количества транзакций по конкретному объектному типу.

10

Функция pageAuditByAttribute предназначена для вывода аудита по конкретному атрибуту в постраничном виде.

11

Функция pageAuditByObject предназначена для вывода аудита по конкретному объекту в постраничном виде.

12

Функция pageAuditByObjectType предназначена для вывода аудита по конкретному объектному типу в постраничном виде.

13

Функция showObjectRights предназначена для вывода прав на объект в виде XML-документа.

14

Функция showFoundObjectRights предназначена для вывода прав на найденные объекты в таблице Tempfoundobjects в виде XML-документа

SQL> create or replace package DATAMODIFICATION as

2

3 FUNCTION showAuditByAttribute(nIDAttribute attributes.id%TYPE, nIdLanguage NUMBER) RETURN XMLTYPE;

4

5 function showAuditByObject(nIDObject objects.id%TYPE, nIdLanguage NUMBER) RETURN XMLTYPE;

6 function showAuditByObjectType(nIDObjectType objecttypes.id%TYPE, nIdLanguage NUMBER) RETURN XMLTYPE;

7 function countTransactionsByAttribute(nIDAttribute attributes.id%TYPE, nIdLanguage NUMBER) RETURN NUMBER;

8 function countTransactionsByObject(nIDObject objects.id%TYPE, nIdLanguage NUMBER) RETURN NUMBER;

9 function countTransactionsByObjectType(nIDObjectType objecttypes.id%TYPE, nIdLanguage NUMBER) RETURN NUMBER;

10 FUNCTION pageAuditByAttribute(nIDAttribute attributes.id%TYPE, nIdLanguage NUMBER, nPageNumber NUMBER, nAmountPerPage NUMBER) RETURN XMLTYPE;

11 FUNCTION pageAuditByObject(nIDObject objects.id%TYPE, nIdLanguage NUMBER, nPageNumber NUMBER, nAmountPerPage NUMBER) RETURN XMLTYPE;

12 FUNCTION pageAuditByObjectType(nIDObjectType objecttypes.id%TYPE, nIdLanguage NUMBER, nPageNumber NUMBER, nAmountPerPage NUMBER) RETURN XMLTYPE;

13 function showObjectRights(nIDObject objects.id%TYPE) RETURN XMLTYPE;

14 FUNCTION showFoundObjectRights RETURN XMLTYPE;

15

16 end DATAMODIFICATION;

17 /

Тело пакета DATAMODIFICATION представлено ниже:

SQL> create or replace package body DATAMODIFICATION as

2

3 FUNCTION showAuditByAttribute(nIDAttribute attributes.id%TYPE, nIdLanguage NUMBER) RETURN XMLTYPE AS

4 nDataType attributes.iddatatype%TYPE;

5 xDocument XMLTYPE;

6 vName datatypes.name%TYPE;

7 BEGIN

8 SELECT idDataType INTO nDataType FROM attributes WHERE id = nIDAttribute;

9 SELECT name INTO vName FROM datatypes WHERE id = nDataType;

10 IF vName = 'MULTILANG' THEN

11

12 SELECT

13 XMLElement("attribute_summary", XMLAttributes(nIDAttribute AS id),

14 XMLAgg(XMLElement("transaction",

15 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

16 XMLAgg(

17 XMLConcat(

18 XMLElement("attribute",

19 XMLAttributes(

20 nIDAttribute AS id_attribute,

21 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

22 A.type_of_operation AS type_of_operation, A.note AS attribute_note,

23 'MULTILANG' AS attribute_datatype

24),

25 XMLElement("old_value_attribute",A.old_value),

26 XMLElement("new_value_attribute",A.new_value)

27)

28)--XMLConcat

29)--XMLAgg

30)--XMLAttributes

31 order by A.modified_time desc

32)

33)

34 INTO xDocument

35 FROM (

36 SELECT a.*, uml.*, s.*, rownum r

37 FROM attributes a, usermultilangvalueslog uml, systemdatavalues s

38 WHERE a.id = nIDAttribute and uml.id_attribute = nIDAttribute AND uml.id_attribute = s.idparent AND s.idlanguage = nIdLanguage

39)A

40 GROUP BY A.modified_time, A.MODIFIED_USER;

41

42 RETURN xDocument;

43 ELSIF vName = 'VARCHAR2' THEN

44

45 SELECT

46 XMLElement("attribute_summary", XMLAttributes(nIDAttribute AS id),

47 XMLAgg(XMLElement("transaction",

48 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

49 XMLAgg(

50 XMLConcat(

51 XMLElement("attribute",

52 XMLAttributes(

53 nIDAttribute AS id_attribute,

54 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

55 A.type_of_operation AS type_of_operation, A.note AS attribute_note,

56 'STRING' AS attribute_datatype

57),

58 XMLElement("old_value_attribute",A.old_value),

59 XMLElement("new_value_attribute",A.new_value)

60)

61)--XMLConcat

62)--XMLAgg

63)--XMLAttributes

64 order by A.modified_time desc

65)

66)

67 INTO xDocument

68 FROM (

69 SELECT a.*, usl.*, s.*, rownum r

70 FROM attributes a, userstringvalueslog usl, systemdatavalues s

71 WHERE a.id = nIDAttribute and usl.id_attribute = nIDAttribute AND usl.id_attribute = s.idparent AND s.idlanguage = 1

72)A

73 GROUP BY A.modified_time, A.MODIFIED_USER;

74

75 RETURN xDocument;

76

77 ELSIF vName = 'NUMBER' THEN

78

79 SELECT

80 XMLElement("attribute_summary", XMLAttributes(nIDAttribute AS id),

81 XMLAgg(XMLElement("transaction",

82 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

83 XMLAgg(

84 XMLConcat(

85 XMLElement("attribute",

86 XMLAttributes(

87 nIDAttribute AS id_attribute,

88 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

89 A.type_of_operation AS type_of_operation, A.note AS attribute_note,

90 'NUMBER' AS attribute_datatype

91),

92 XMLElement("old_value_attribute",A.old_value),

93 XMLElement("new_value_attribute",A.new_value)

94)

95)--XMLConcat

96)--XMLAgg

97)--XMLAttributes

98 order by A.modified_time desc

99)

100)

101 INTO xDocument

102 FROM (

103 SELECT a.*, usl.*, s.*, rownum r

104 FROM attributes a, usernumbervalueslog usl, systemdatavalues s

105 WHERE a.id = nIDAttribute and usl.id_attribute = nIDAttribute AND usl.id_attribute = s.idparent AND s.idlanguage = 1

106)A

107 GROUP BY A.modified_time, A.MODIFIED_USER;

108

109 RETURN xDocument;

110

111 ELSIF vName = 'DATE' THEN

112

113 SELECT

114 XMLElement("attribute_summary", XMLAttributes(nIDAttribute AS id),

115 XMLAgg(XMLElement("transaction",

116 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

117 XMLAgg(

118 XMLConcat(

119 XMLElement("attribute",

120 XMLAttributes(

121 nIDAttribute AS id_attribute,

122 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

123 A.type_of_operation AS type_of_operation, A.note AS attribute_note,

124 'DATE' AS attribute_datatype

125),

126 XMLElement("old_value_attribute",A.old_value),

127 XMLElement("new_value_attribute",A.new_value)

128)

129)--XMLConcat

130)--XMLAgg

131)--XMLAttributes

132 order by A.modified_time desc

133)

134)

135 INTO xDocument

136 FROM (

137 SELECT a.*, usl.*, s.*, rownum r

138 FROM attributes a, userdatevalueslog usl, systemdatavalues s

139 WHERE a.id = nIDAttribute and usl.id_attribute = nIDAttribute AND usl.id_attribute = s.idparent AND s.idlanguage = 1

140)A

141 GROUP BY A.modified_time, A.MODIFIED_USER;

142

143 RETURN xDocument;

144

145 ELSIF vName = 'CLOB' THEN

146

147 SELECT

148 XMLElement("attribute_summary", XMLAttributes(nIDAttribute AS id),

149 XMLAgg(XMLElement("transaction",

150 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

151 XMLAgg(

152 XMLConcat(

153 XMLElement("attribute",

154 XMLAttributes(

155 nIDAttribute AS id_attribute,

156 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

157 A.type_of_operation AS type_of_operation, A.note AS attribute_note,

158 'CLOB' AS attribute_datatype

159),

160 XMLElement("old_value_attribute",A.old_value),

161 XMLElement("new_value_attribute",A.new_value)

162)

163)--XMLConcat

164)--XMLAgg

165)--XMLAttributes

166 order by A.modified_time desc

167)

168)

169 INTO xDocument

170 FROM (

171 SELECT a.*, usl.*, s.*, rownum r

172 FROM attributes a, userclobvalueslog usl, systemdatavalues s

173 WHERE a.id = nIDAttribute and usl.id_attribute = nIDAttribute AND usl.id_attribute = s.idparent AND s.idlanguage = 1

174)A

175 GROUP BY A.modified_time, A.MODIFIED_USER;

176

177 RETURN xDocument;

178

179 ELSIF vName = 'DICTIONARY' THEN

180

181 SELECT

182 XMLElement("attribute_summary", XMLAttributes(nIDAttribute AS id),

183 XMLAgg(XMLElement("transaction",

184 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

185 XMLAgg(

186 XMLConcat(

187 XMLElement("attribute",

188 XMLAttributes(

189 nIDAttribute AS id_attribute,

190 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

191 A.type_of_operation AS type_of_operation, A.note AS attribute_note,

192 'DICTIONARY' AS attribute_datatype

193),

194 XMLElement("old_value_attribute",A.old_value),

195 XMLElement("new_value_attribute",A.new_value)

196)

197)--XMLConcat

198)--XMLAgg

199)--XMLAttributes

200 order by A.modified_time desc

201)

202)

203 INTO xDocument

204 FROM (

205 SELECT a.*, usl.*, s.*, rownum r

206 FROM attributes a, userdictionaryvalueslog usl, systemdatavalues s

207 WHERE a.id = nIDAttribute and usl.id_attribute = nIDAttribute AND usl.id_attribute = s.idparent AND s.idlanguage = 1

208)A

209 GROUP BY A.modified_time, A.MODIFIED_USER;

210

211 RETURN xDocument;

212

213 END IF;

214 RETURN NULL;

215 END showAuditByAttribute;

216

217 FUNCTION showAuditByObject(nIDObject objects.id%TYPE, nIdLanguage NUMBER) RETURN XMLTYPE AS

218 xDocument XMLTYPE;

219 BEGIN

220

221 SELECT

222 XMLElement("object_summary", XMLAttributes(nIDObject AS id),

223 XMLAgg(XMLElement("transaction",

224 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

225 XMLAgg(

226 XMLConcat(

227 XMLElement("attribute",

228 XMLAttributes(

229 A.new_idattribute AS id_attribute,

230 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

231 A.type_of_operation AS type_of_operation, A.attribute_note AS attribute_note,

232 A.attribute_datatype AS attribute_datatype, A.datatype_length AS datatype_length

233),

234 XMLElement("old_value_attribute",A.old_value),

235 XMLElement("new_value_attribute",A.new_value)

236),

237 XMLElement("object",

238 XMLAttributes(

239 A.OLD_IDPARENTOBJECT AS OLD_IDPARENTOBJECT,

240 A.NEW_IDPARENTOBJECT AS NEW_IDPARENTOBJECT,

241 A.OBJECTTYPE NEW_OBJECTTYPE,

242 A.OLD_OWNER OLD_OWNER,

243 A.NEW_OWNER NEW_OWNER,

244 A.OLD_ORIGHTS OLD_ORIGHTS,

245 A.NEW_ORIGHTS NEW_ORIGHTS,

246 A.OLD_ARIGHTS OLD_ARIGHTS,

247 A.NEW_ARIGHTS NEW_ARIGHTS,

248 A.OPERATION OPERATION,

249 A.OBJECTNOTE OBJECTNOTE

250)

251)

252)--XMLConcat

253)--XMLAgg

254)--XMLAttributes

255 order by A.modified_time desc

256)

257)

258 INTO xDocument

259 FROM (

260 --usermultilangvalueslog

261 SELECT uml.id_attribute AS new_idattribute,

262 to_clob(uml.old_value) AS old_value,

263 to_clob(uml.new_value) AS new_value,

264 uml.old_serialnumber AS old_serialnumber,

265 uml.new_serialnumber AS new_serialnumber,

266 uml.modified_user AS modified_user,

267 uml.modified_time AS modified_time,

268 uml.type_of_operation AS type_of_operation,

269 s.value AS attribute_note,

270 'MULTILANG' AS attribute_datatype,

271 a.length AS datatype_length,

272 null OLD_IDPARENTOBJECT,

273 null NEW_IDPARENTOBJECT,

274 null OBJECTTYPE,

275 null OLD_OWNER,

276 null NEW_OWNER,

277 null OLD_ORIGHTS,

278 null NEW_ORIGHTS,

279 null OLD_ARIGHTS,

280 null NEW_ARIGHTS,

281 null OPERATION,

282 null OBJECTNOTE

283 FROM objects o, attributes a, objecttypes ot, usermultilangvalueslog uml, systemdatavalues s

284 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

285 AND

286 (uml.id_object = o.id and uml.id_attribute = a.id)

287

288 UNION ALL

289 --userstringvalueslog

290 SELECT uml.id_attribute AS new_idattribute,

291 to_clob(uml.old_value) AS old_value,

292 to_clob(uml.new_value) AS new_value,

293 uml.old_serialnumber AS old_serialnumber,

294 uml.new_serialnumber AS new_serialnumber,

295 uml.modified_user AS modified_user,

296 uml.modified_time AS modified_time,

297 uml.type_of_operation AS type_of_operation,

298 s.value AS attribute_note,

299 'STRING' AS attribute_datatype,

300 a.length AS datatype_length,

301 null OLD_IDPARENTOBJECT,

302 null NEW_IDPARENTOBJECT,

303 null OBJECTTYPE,

304 null OLD_OWNER,

305 null NEW_OWNER,

306 null OLD_ORIGHTS,

307 null NEW_ORIGHTS,

308 null OLD_ARIGHTS,

309 null NEW_ARIGHTS,

310 null OPERATION,

311 null OBJECTNOTE

312 FROM objects o, attributes a, objecttypes ot, userstringvalueslog uml, systemdatavalues s

313 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

314 AND

315 (uml.id_object = o.id and uml.id_attribute = a.id)

316

317 UNION ALL

318 --userdatevalueslog

319 SELECT uml.id_attribute AS new_idattribute,

320 to_clob(uml.old_value) AS old_value,

321 to_clob(uml.new_value) AS new_value,

322 uml.old_serialnumber AS old_serialnumber,

323 uml.new_serialnumber AS new_serialnumber,

324 uml.modified_user AS modified_user,

325 uml.modified_time AS modified_time,

326 uml.type_of_operation AS type_of_operation,

327 s.value AS attribute_note,

328 'DATE' AS attribute_datatype,

329 a.length AS datatype_length,

330 null OLD_IDPARENTOBJECT,

331 null NEW_IDPARENTOBJECT,

332 null OBJECTTYPE,

333 null OLD_OWNER,

334 null NEW_OWNER,

335 null OLD_ORIGHTS,

336 null NEW_ORIGHTS,

337 null OLD_ARIGHTS,

338 null NEW_ARIGHTS,

339 null OPERATION,

340 null OBJECTNOTE

341 FROM objects o, attributes a, objecttypes ot, userdatevalueslog uml, systemdatavalues s

342 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

343 AND

344 (uml.id_object = o.id and uml.id_attribute = a.id)

345

346 UNION ALL

347 --userclobvalueslog

348 SELECT uml.id_attribute AS new_idattribute,

349 to_clob(uml.old_value) AS old_value,

350 to_clob(uml.new_value) AS new_value,

351 uml.old_serialnumber AS old_serialnumber,

352 uml.new_serialnumber AS new_serialnumber,

353 uml.modified_user AS modified_user,

354 uml.modified_time AS modified_time,

355 uml.type_of_operation AS type_of_operation,

356 s.value AS attribute_note,

357 'CLOB' AS attribute_datatype,

358 a.length AS datatype_length,

359 null OLD_IDPARENTOBJECT,

360 null NEW_IDPARENTOBJECT,

361 null OBJECTTYPE,

362 null OLD_OWNER,

363 null NEW_OWNER,

364 null OLD_ORIGHTS,

365 null NEW_ORIGHTS,

366 null OLD_ARIGHTS,

367 null NEW_ARIGHTS,

368 null OPERATION,

369 null OBJECTNOTE

370 FROM objects o, attributes a, objecttypes ot, userclobvalueslog uml, systemdatavalues s

371 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

372 AND

373 (uml.id_object = o.id and uml.id_attribute = a.id)

374

375 UNION ALL

376 --usernumbervalueslog

377 SELECT uml.id_attribute AS new_idattribute,

378 to_clob(uml.old_value) AS old_value,

379 to_clob(uml.new_value) AS new_value,

380 uml.old_serialnumber AS old_serialnumber,

381 uml.new_serialnumber AS new_serialnumber,

382 uml.modified_user AS modified_user,

383 uml.modified_time AS modified_time,

384 uml.type_of_operation AS type_of_operation,

385 s.value AS attribute_note,

386 'CLOB' AS attribute_datatype,

387 a.length AS datatype_length,

388 null OLD_IDPARENTOBJECT,

389 null OBJECTTYPE,

390 null NEW_OBJECTTYPE,

391 null OLD_OWNER,

392 null NEW_OWNER,

393 null OLD_ORIGHTS,

394 null NEW_ORIGHTS,

395 null OLD_ARIGHTS,

396 null NEW_ARIGHTS,

397 null OPERATION,

398 null OBJECTNOTE

399 FROM objects o, attributes a, objecttypes ot, usernumbervalueslog uml, systemdatavalues s

400 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

401 AND

402 (uml.id_object = o.id and uml.id_attribute = a.id)

403

404 UNION ALL

405 --userdictionaryvalueslog

406 SELECT uml.id_attribute AS new_idattribute,

407 to_clob(uml.old_value) AS old_value,

408 to_clob(uml.new_value) AS new_value,

409 uml.old_serialnumber AS old_serialnumber,

410 uml.new_serialnumber AS new_serialnumber,

411 uml.modified_user AS modified_user,

412 uml.modified_time AS modified_time,

413 uml.type_of_operation AS type_of_operation,

414 s.value AS attribute_note,

415 'CLOB' AS attribute_datatype,

416 a.length AS datatype_length,

417 null OLD_IDPARENTOBJECT,

418 null NEW_IDPARENTOBJECT,

419 null OBJECTTYPE,

420 null OLD_OWNER,

421 null NEW_OWNER,

422 null OLD_ORIGHTS,

423 null NEW_ORIGHTS,

424 null OLD_ARIGHTS,

425 null NEW_ARIGHTS,

426 null OPERATION,

427 null OBJECTNOTE

428 FROM objects o, attributes a, objecttypes ot, userdictionaryvalueslog uml, systemdatavalues s

429 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

430 AND

431 (uml.id_object = o.id and uml.id_attribute = a.id)

432

433 UNION ALL

434

435 SELECT null AS new_idattribute,

436 null AS old_value,

437 null AS new_value,

438 null AS old_serialnumber,

439 null AS new_serialnumber,

440 OL.MODIFIED_USER AS modified_user,

441 OL.MODIFIED_TIME AS modified_time,

442 null AS type_of_operation,

443 null AS attribute_note,

444 null AS attribute_datatype,

445 null AS datatype_length,

446 OL.OLD_IDPARENTOBJECT OLD_IDPARENTOBJECT,

447 OL.NEW_IDPARENTOBJECT NEW_IDPARENTOBJECT,

448 OL.NEW_OBJECTTYPE NEW_OBJECTTYPE,

449 OL.OLD_OWNER OLD_OWNER,

450 OL.NEW_OWNER NEW_OWNER,

451 OL.OLD_ORIGHTS OLD_ORIGHTS,

452 OL.NEW_ORIGHTS NEW_ORIGHTS,

453 OL.OLD_ARIGHTS OLD_ARIGHTS,

454 OL.NEW_ARIGHTS NEW_ARIGHTS,

455 OL.TYPE_OF_OPERATION OPERATION,

456 s.value OBJECTNOTE

457 FROM objectslog OL, systemdatavalues s

458 WHERE OL.ID_OBJECT = nIDObject and s.idparent = OL.ID_OBJECT AND S.IDLANGUAGE = nIdLanguage

459

460) A

461 GROUP BY A.modified_time, A.MODIFIED_USER;

462

463 RETURN xDocument;

464

465 END showAuditByObject;

466

467 function showAuditByObjectType(nIDObjectType objecttypes.id%TYPE, nIdLanguage NUMBER) RETURN XMLTYPE IS

468 xDocument XMLTYPE;

469 BEGIN

470

471 SELECT XMLElement("object_type",

472 XMLAttributes(1 AS idObjectType),

473 XMLElement("objects_summary",

474 XMLAgg(XMLElement("transaction",

475 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

476 XMLAgg(

477 XMLElement("object_info",

478 XMLAttributes(A.id AS "object_id"),

479 XMLElement("attribute",

480 XMLAttributes(

481 A.new_idattribute AS id_attribute,

482 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

483 A.type_of_operation AS type_of_operation, A.attribute_note AS attribute_note,

484 A.attribute_datatype AS attribute_datatype, A.datatype_length AS datatype_length

485),

486 XMLElement("old_value_attribute",A.old_value),

487 XMLElement("new_value_attribute",A.new_value)

488),

489 XMLElement("object_change",

490 XMLAttributes(

491 A.OLD_IDPARENTOBJECT AS OLD_IDPARENTOBJECT,

492 A.NEW_IDPARENTOBJECT AS NEW_IDPARENTOBJECT,

493 A.OBJECTTYPE NEW_OBJECTTYPE,

494 A.OLD_OWNER OLD_OWNER,

495 A.NEW_OWNER NEW_OWNER,

496 A.OLD_ORIGHTS OLD_ORIGHTS,

497 A.NEW_ORIGHTS NEW_ORIGHTS,

498 A.OLD_ARIGHTS OLD_ARIGHTS,

499 A.NEW_ARIGHTS NEW_ARIGHTS,

500 A.OPERATION OPERATION,

501 A.OBJECTNOTE OBJECTNOTE

502)

503)

504)--XMLConcat

505)--XMLAgg

506)--XMLAttributes

507 order by A.modified_time desc

508)

509)

510)

511 INTO xDocument

512 --showAuditByObject(id, nIdLanguage)

513 --) AS objects)

514 FROM (

515 SELECT B.*, rownum r

516 FROM (

517 --usermultilangvalueslog

518 SELECT

519 o.id AS id,

520 uml.id_attribute AS new_idattribute,

521 to_clob(uml.old_value) AS old_value,

522 to_clob(uml.new_value) AS new_value,

523 uml.old_serialnumber AS old_serialnumber,

524 uml.new_serialnumber AS new_serialnumber,

525 uml.modified_user AS modified_user,

526 uml.modified_time AS modified_time,

527 uml.type_of_operation AS type_of_operation,

528 s.value AS attribute_note,

529 'MULTILANG' AS attribute_datatype,

530 a.length AS datatype_length,

531 null OLD_IDPARENTOBJECT,

532 null NEW_IDPARENTOBJECT,

533 null OBJECTTYPE,

534 null OLD_OWNER,

535 null NEW_OWNER,

536 null OLD_ORIGHTS,

537 null NEW_ORIGHTS,

538 null OLD_ARIGHTS,

539 null NEW_ARIGHTS,

540 null OPERATION,

541 null OBJECTNOTE

542 FROM objects o, attributes a, objecttypes ot, usermultilangvalueslog uml, systemdatavalues s

543 WHERE o.idobjecttype = nIDObjectType and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

544 AND

545 (uml.id_object = o.id and uml.id_attribute = a.id)

546

547 UNION ALL

548 --userstringvalueslog

549 SELECT

550 o.id AS id,

551 uml.id_attribute AS new_idattribute,

552 to_clob(uml.old_value) AS old_value,

553 to_clob(uml.new_value) AS new_value,

554 uml.old_serialnumber AS old_serialnumber,

555 uml.new_serialnumber AS new_serialnumber,

556 uml.modified_user AS modified_user,

557 uml.modified_time AS modified_time,

558 uml.type_of_operation AS type_of_operation,

559 s.value AS attribute_note,

560 'STRING' AS attribute_datatype,

561 a.length AS datatype_length,

562 null OLD_IDPARENTOBJECT,

563 null NEW_IDPARENTOBJECT,

564 null OBJECTTYPE,

565 null OLD_OWNER,

566 null NEW_OWNER,

567 null OLD_ORIGHTS,

568 null NEW_ORIGHTS,

569 null OLD_ARIGHTS,

570 null NEW_ARIGHTS,

571 null OPERATION,

572 null OBJECTNOTE

573 FROM objects o, attributes a, objecttypes ot, userstringvalueslog uml, systemdatavalues s

574 WHERE o.idobjecttype = nIDObjectType and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

575 AND

576 (uml.id_object = o.id and uml.id_attribute = a.id)

577

578 UNION ALL

579 --userdatevalueslog

580 SELECT

581 o.id AS id,

582 uml.id_attribute AS new_idattribute,

583 to_clob(uml.old_value) AS old_value,

584 to_clob(uml.new_value) AS new_value,

585 uml.old_serialnumber AS old_serialnumber,

586 uml.new_serialnumber AS new_serialnumber,

587 uml.modified_user AS modified_user,

588 uml.modified_time AS modified_time,

589 uml.type_of_operation AS type_of_operation,

590 s.value AS attribute_note,

591 'DATE' AS attribute_datatype,

592 a.length AS datatype_length,

593 null OLD_IDPARENTOBJECT,

594 null NEW_IDPARENTOBJECT,

595 null OBJECTTYPE,

596 null OLD_OWNER,

597 null NEW_OWNER,

598 null OLD_ORIGHTS,

599 null NEW_ORIGHTS,

600 null OLD_ARIGHTS,

601 null NEW_ARIGHTS,

602 null OPERATION,

603 null OBJECTNOTE

604 FROM objects o, attributes a, objecttypes ot, userdatevalueslog uml, systemdatavalues s

605 WHERE o.idobjecttype = nIDObjectType and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

606 AND

607 (uml.id_object = o.id and uml.id_attribute = a.id)

608

609 UNION ALL

610 --userclobvalueslog

611 SELECT

612 o.id AS id,

613 uml.id_attribute AS new_idattribute,

614 to_clob(uml.old_value) AS old_value,

615 to_clob(uml.new_value) AS new_value,

616 uml.old_serialnumber AS old_serialnumber,

617 uml.new_serialnumber AS new_serialnumber,

618 uml.modified_user AS modified_user,

619 uml.modified_time AS modified_time,

620 uml.type_of_operation AS type_of_operation,

621 s.value AS attribute_note,

622 'CLOB' AS attribute_datatype,

623 a.length AS datatype_length,

624 null OLD_IDPARENTOBJECT,

625 null NEW_IDPARENTOBJECT,

626 null OBJECTTYPE,

627 null OLD_OWNER,

628 null NEW_OWNER,

629 null OLD_ORIGHTS,

630 null NEW_ORIGHTS,

631 null OLD_ARIGHTS,

632 null NEW_ARIGHTS,

633 null OPERATION,

634 null OBJECTNOTE

635 FROM objects o, attributes a, objecttypes ot, userclobvalueslog uml, systemdatavalues s

636 WHERE o.idobjecttype = nIDObjectType and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

637 AND

638 (uml.id_object = o.id and uml.id_attribute = a.id)

639

640 UNION ALL

641 --usernumbervalueslog

642 SELECT

643 o.id AS id,

644 uml.id_attribute AS new_idattribute,

645 to_clob(uml.old_value) AS old_value,

646 to_clob(uml.new_value) AS new_value,

647 uml.old_serialnumber AS old_serialnumber,

648 uml.new_serialnumber AS new_serialnumber,

649 uml.modified_user AS modified_user,

650 uml.modified_time AS modified_time,

651 uml.type_of_operation AS type_of_operation,

652 s.value AS attribute_note,

653 'CLOB' AS attribute_datatype,

654 a.length AS datatype_length,

655 null OLD_IDPARENTOBJECT,

656 null OBJECTTYPE,

657 null NEW_OBJECTTYPE,

658 null OLD_OWNER,

659 null NEW_OWNER,

660 null OLD_ORIGHTS,

661 null NEW_ORIGHTS,

662 null OLD_ARIGHTS,

663 null NEW_ARIGHTS,

664 null OPERATION,

665 null OBJECTNOTE

666 FROM objects o, attributes a, objecttypes ot, usernumbervalueslog uml, systemdatavalues s

667 WHERE o.idobjecttype = nIDObjectType and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

668 AND

669 (uml.id_object = o.id and uml.id_attribute = a.id)

670

671 UNION ALL

672 --userdictionaryvalueslog

673 SELECT

674 o.id AS id,

675 uml.id_attribute AS new_idattribute,

676 to_clob(uml.old_value) AS old_value,

677 to_clob(uml.new_value) AS new_value,

678 uml.old_serialnumber AS old_serialnumber,

679 uml.new_serialnumber AS new_serialnumber,

680 uml.modified_user AS modified_user,

681 uml.modified_time AS modified_time,

682 uml.type_of_operation AS type_of_operation,

683 s.value AS attribute_note,

684 'CLOB' AS attribute_datatype,

685 a.length AS datatype_length,

686 null OLD_IDPARENTOBJECT,

687 null NEW_IDPARENTOBJECT,

688 null OBJECTTYPE,

689 null OLD_OWNER,

690 null NEW_OWNER,

691 null OLD_ORIGHTS,

692 null NEW_ORIGHTS,

693 null OLD_ARIGHTS,

694 null NEW_ARIGHTS,

695 null OPERATION,

696 null OBJECTNOTE

697 FROM objects o, attributes a, objecttypes ot, userdictionaryvalueslog uml, systemdatavalues s

698 WHERE o.idobjecttype = nIDObjectType and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

699 AND

700 (uml.id_object = o.id and uml.id_attribute = a.id)

701

702 UNION ALL

703

704 SELECT

705 o.id AS id,

706 null AS new_idattribute,

707 null AS old_value,

708 null AS new_value,

709 null AS old_serialnumber,

710 null AS new_serialnumber,

711 OL.MODIFIED_USER AS modified_user,

712 OL.MODIFIED_TIME AS modified_time,

713 null AS type_of_operation,

714 null AS attribute_note,

715 null AS attribute_datatype,

716 null AS datatype_length,

717 OL.OLD_IDPARENTOBJECT OLD_IDPARENTOBJECT,

718 OL.NEW_IDPARENTOBJECT NEW_IDPARENTOBJECT,

719 OL.NEW_OBJECTTYPE NEW_OBJECTTYPE,

720 OL.OLD_OWNER OLD_OWNER,

721 OL.NEW_OWNER NEW_OWNER,

722 OL.OLD_ORIGHTS OLD_ORIGHTS,

723 OL.NEW_ORIGHTS NEW_ORIGHTS,

724 OL.OLD_ARIGHTS OLD_ARIGHTS,

725 OL.NEW_ARIGHTS NEW_ARIGHTS,

726 OL.TYPE_OF_OPERATION OPERATION,

727 s.value OBJECTNOTE

728 FROM objectslog OL, systemdatavalues s, objects o

729 WHERE o.idobjecttype = nIDObjectType AND OL.ID_OBJECT = o.id and s.idparent = OL.ID_OBJECT AND S.IDLANGUAGE = nIdLanguage

730 -- ORDER BY modified_time

731

732) B)A

733 GROUP BY A.modified_time, A.MODIFIED_USER

734 ORDER BY A.modified_time;

735

736 RETURN xDocument;

737

738 END showAuditByObjectType;

739

740 function countTransactionsByAttribute(nIDAttribute attributes.id%TYPE, nIdLanguage NUMBER) RETURN NUMBER IS

741 nAmountTransactions NUMBER;

742 nDataType attributes.iddatatype%TYPE;

743 vName datatypes.name%TYPE;

744 BEGIN

745 SELECT idDataType INTO nDataType FROM attributes WHERE id = nIDAttribute;

746 SELECT name INTO vName FROM datatypes WHERE id = nDataType;

747 IF vName = 'MULTILANG' THEN

748

749 SELECT count(*)

750 INTO nAmountTransactions

751 FROM

752 (SELECT modified_time

753 FROM usermultilangvalueslog u, systemdatavalues s

754 WHERE u.id_attribute = nIDAttribute AND u.id_attribute = s.idparent AND s.idlanguage = nIdLanguage

755 GROUP BY u.modified_time) A;

756

757 RETURN nAmountTransactions;

758

759 ELSIF vName = 'VARCHAR2' THEN

760

761 SELECT count(*)

762 INTO nAmountTransactions

763 FROM

764 (SELECT modified_time

765 FROM userstringvalueslog u, systemdatavalues s

766 WHERE u.id_attribute = nIDAttribute AND u.id_attribute = s.idparent AND s.idlanguage = nIdLanguage

767 GROUP BY u.modified_time) A;

768

769 RETURN nAmountTransactions;

770

771 ELSIF vName = 'NUMBER' THEN

772

773 SELECT count(*)

774 INTO nAmountTransactions

775 FROM

776 (SELECT modified_time

777 FROM usernumbervalueslog u, systemdatavalues s

778 WHERE u.id_attribute = nIDAttribute AND u.id_attribute = s.idparent AND s.idlanguage = nIdLanguage

779 GROUP BY u.modified_time) A;

780

781 RETURN nAmountTransactions;

782

783 ELSIF vName = 'DATE' THEN

784

785 SELECT count(*)

786 INTO nAmountTransactions

787 FROM

788 (SELECT modified_time

789 FROM userdatevalueslog u, systemdatavalues s

790 WHERE u.id_attribute = nIDAttribute AND u.id_attribute = s.idparent AND s.idlanguage = nIdLanguage

791 GROUP BY u.modified_time) A;

792

793 RETURN nAmountTransactions;

794

795 ELSIF vName = 'CLOB' THEN

796

797 SELECT count(*)

798 INTO nAmountTransactions

799 FROM

800 (SELECT modified_time

801 FROM userclobvalueslog u, systemdatavalues s

802 WHERE u.id_attribute = nIDAttribute AND u.id_attribute = s.idparent AND s.idlanguage = nIdLanguage

803 GROUP BY u.modified_time) A;

804

805 RETURN nAmountTransactions;

806

807 ELSIF vName = 'DICTIONARY' THEN

808

809 SELECT count(*)

810 INTO nAmountTransactions

811 FROM

812 (SELECT modified_time

813 FROM userdictionaryvalueslog u, systemdatavalues s

814 WHERE u.id_attribute = nIDAttribute AND u.id_attribute = s.idparent AND s.idlanguage = nIdLanguage

815 GROUP BY u.modified_time) A;

816

817 RETURN nAmountTransactions;

818

819 END IF;

820 RETURN 0;

821

822 RETURN nAmountTransactions;

823 EXCEPTION WHEN NO_DATA_FOUND THEN

824 RETURN 0;

825 END countTransactionsByAttribute;

826

827 function countTransactionsByObject(nIDObject objects.id%TYPE, nIdLanguage NUMBER) RETURN NUMBER IS

828 nAmountTransactions NUMBER;

829 BEGIN

830 SELECT count(*) INTO nAmountTransactions FROM (

831 SELECT a.modified_time

832 FROM (

833 --usermultilangvalueslog

834 SELECT uml.id_attribute AS new_idattribute,

835 to_clob(uml.old_value) AS old_value,

836 to_clob(uml.new_value) AS new_value,

837 uml.old_serialnumber AS old_serialnumber,

838 uml.new_serialnumber AS new_serialnumber,

839 uml.modified_user AS modified_user,

840 uml.modified_time AS modified_time,

841 uml.type_of_operation AS type_of_operation,

842 s.value AS attribute_note,

843 'MULTILANG' AS attribute_datatype,

844 a.length AS datatype_length,

845 null OLD_IDPARENTOBJECT,

846 null NEW_IDPARENTOBJECT,

847 null OBJECTTYPE,

848 null OLD_OWNER,

849 null NEW_OWNER,

850 null OLD_ORIGHTS,

851 null NEW_ORIGHTS,

852 null OLD_ARIGHTS,

853 null NEW_ARIGHTS,

854 null OPERATION,

855 null OBJECTNOTE

856 FROM objects o, attributes a, objecttypes ot, usermultilangvalueslog uml, systemdatavalues s

857 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

858 AND

859 (uml.id_object = o.id and uml.id_attribute = a.id)

860

861 UNION ALL

862 --userstringvalueslog

863 SELECT uml.id_attribute AS new_idattribute,

864 to_clob(uml.old_value) AS old_value,

865 to_clob(uml.new_value) AS new_value,

866 uml.old_serialnumber AS old_serialnumber,

867 uml.new_serialnumber AS new_serialnumber,

868 uml.modified_user AS modified_user,

869 uml.modified_time AS modified_time,

870 uml.type_of_operation AS type_of_operation,

871 s.value AS attribute_note,

872 'STRING' AS attribute_datatype,

873 a.length AS datatype_length,

874 null OLD_IDPARENTOBJECT,

875 null NEW_IDPARENTOBJECT,

876 null OBJECTTYPE,

877 null OLD_OWNER,

878 null NEW_OWNER,

879 null OLD_ORIGHTS,

880 null NEW_ORIGHTS,

881 null OLD_ARIGHTS,

882 null NEW_ARIGHTS,

883 null OPERATION,

884 null OBJECTNOTE

885 FROM objects o, attributes a, objecttypes ot, userstringvalueslog uml, systemdatavalues s

886 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

887 AND

888 (uml.id_object = o.id and uml.id_attribute = a.id)

889

890 UNION ALL

891 --userdatevalueslog

892 SELECT uml.id_attribute AS new_idattribute,

893 to_clob(uml.old_value) AS old_value,

894 to_clob(uml.new_value) AS new_value,

895 uml.old_serialnumber AS old_serialnumber,

896 uml.new_serialnumber AS new_serialnumber,

897 uml.modified_user AS modified_user,

898 uml.modified_time AS modified_time,

899 uml.type_of_operation AS type_of_operation,

900 s.value AS attribute_note,

901 'DATE' AS attribute_datatype,

902 a.length AS datatype_length,

903 null OLD_IDPARENTOBJECT,

904 null NEW_IDPARENTOBJECT,

905 null OBJECTTYPE,

906 null OLD_OWNER,

907 null NEW_OWNER,

908 null OLD_ORIGHTS,

909 null NEW_ORIGHTS,

910 null OLD_ARIGHTS,

911 null NEW_ARIGHTS,

912 null OPERATION,

913 null OBJECTNOTE

914 FROM objects o, attributes a, objecttypes ot, userdatevalueslog uml, systemdatavalues s

915 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

916 AND

917 (uml.id_object = o.id and uml.id_attribute = a.id)

918

919 UNION ALL

920 --userclobvalueslog

921 SELECT uml.id_attribute AS new_idattribute,

922 to_clob(uml.old_value) AS old_value,

923 to_clob(uml.new_value) AS new_value,

924 uml.old_serialnumber AS old_serialnumber,

925 uml.new_serialnumber AS new_serialnumber,

926 uml.modified_user AS modified_user,

927 uml.modified_time AS modified_time,

928 uml.type_of_operation AS type_of_operation,

929 s.value AS attribute_note,

930 'CLOB' AS attribute_datatype,

931 a.length AS datatype_length,

932 null OLD_IDPARENTOBJECT,

933 null NEW_IDPARENTOBJECT,

934 null OBJECTTYPE,

935 null OLD_OWNER,

936 null NEW_OWNER,

937 null OLD_ORIGHTS,

938 null NEW_ORIGHTS,

939 null OLD_ARIGHTS,

940 null NEW_ARIGHTS,

941 null OPERATION,

942 null OBJECTNOTE

943 FROM objects o, attributes a, objecttypes ot, userclobvalueslog uml, systemdatavalues s

944 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

945 AND

946 (uml.id_object = o.id and uml.id_attribute = a.id)

947

948 UNION ALL

949 --usernumbervalueslog

950 SELECT uml.id_attribute AS new_idattribute,

951 to_clob(uml.old_value) AS old_value,

952 to_clob(uml.new_value) AS new_value,

953 uml.old_serialnumber AS old_serialnumber,

954 uml.new_serialnumber AS new_serialnumber,

955 uml.modified_user AS modified_user,

956 uml.modified_time AS modified_time,

957 uml.type_of_operation AS type_of_operation,

958 s.value AS attribute_note,

959 'CLOB' AS attribute_datatype,

960 a.length AS datatype_length,

961 null OLD_IDPARENTOBJECT,

962 null OBJECTTYPE,

963 null NEW_OBJECTTYPE,

964 null OLD_OWNER,

965 null NEW_OWNER,

966 null OLD_ORIGHTS,

967 null NEW_ORIGHTS,

968 null OLD_ARIGHTS,

969 null NEW_ARIGHTS,

970 null OPERATION,

971 null OBJECTNOTE

972 FROM objects o, attributes a, objecttypes ot, usernumbervalueslog uml, systemdatavalues s

973 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

974 AND

975 (uml.id_object = o.id and uml.id_attribute = a.id)

976

977 UNION ALL

978 --userdictionaryvalueslog

979 SELECT uml.id_attribute AS new_idattribute,

980 to_clob(uml.old_value) AS old_value,

981 to_clob(uml.new_value) AS new_value,

982 uml.old_serialnumber AS old_serialnumber,

983 uml.new_serialnumber AS new_serialnumber,

984 uml.modified_user AS modified_user,

985 uml.modified_time AS modified_time,

986 uml.type_of_operation AS type_of_operation,

987 s.value AS attribute_note,

988 'CLOB' AS attribute_datatype,

989 a.length AS datatype_length,

990 null OLD_IDPARENTOBJECT,

991 null NEW_IDPARENTOBJECT,

992 null OBJECTTYPE,

993 null OLD_OWNER,

994 null NEW_OWNER,

995 null OLD_ORIGHTS,

996 null NEW_ORIGHTS,

997 null OLD_ARIGHTS,

998 null NEW_ARIGHTS,

999 null OPERATION,

1000 null OBJECTNOTE

1001 FROM objects o, attributes a, objecttypes ot, userdictionaryvalueslog uml, systemdatavalues s

1002 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

1003 AND

1004 (uml.id_object = o.id and uml.id_attribute = a.id)

1005

1006 UNION ALL

1007

1008 SELECT null AS new_idattribute,

1009 null AS old_value,

1010 null AS new_value,

1011 null AS old_serialnumber,

1012 null AS new_serialnumber,

1013 OL.MODIFIED_USER AS modified_user,

1014 OL.MODIFIED_TIME AS modified_time,

1015 null AS type_of_operation,

1016 null AS attribute_note,

1017 null AS attribute_datatype,

1018 null AS datatype_length,

1019 OL.OLD_IDPARENTOBJECT OLD_IDPARENTOBJECT,

1020 OL.NEW_IDPARENTOBJECT NEW_IDPARENTOBJECT,

1021 OL.NEW_OBJECTTYPE NEW_OBJECTTYPE,

1022 OL.OLD_OWNER OLD_OWNER,

1023 OL.NEW_OWNER NEW_OWNER,

1024 OL.OLD_ORIGHTS OLD_ORIGHTS,

1025 OL.NEW_ORIGHTS NEW_ORIGHTS,

1026 OL.OLD_ARIGHTS OLD_ARIGHTS,

1027 OL.NEW_ARIGHTS NEW_ARIGHTS,

1028 OL.TYPE_OF_OPERATION OPERATION,

1029 s.value OBJECTNOTE

1030 FROM objectslog OL, systemdatavalues s

1031 WHERE OL.ID_OBJECT = nIDObject and s.idparent = OL.ID_OBJECT AND S.IDLANGUAGE = nIdLanguage

1032

1033) A

1034 GROUP BY A.modified_time) B;

1035

1036 RETURN nAmountTransactions;

1037 END countTransactionsByObject;

1038

1039 function countTransactionsByObjectType(nIDObjectType objecttypes.id%TYPE, nIdLanguage NUMBER) RETURN NUMBER IS

1040 nAmountTransactions NUMBER;

1041 BEGIN

1042 SELECT sum(countTransactionsByObject(id, nIdLanguage))

1043 INTO nAmountTransactions

1044 FROM objects o

1045 WHERE o.idobjecttype = nIDObjectType

1046 AND (EXISTS (SELECT * FROM userclobvalueslog u WHERE u.id_object = o.id)

1047 OR EXISTS (SELECT * FROM userdatevalueslog u WHERE u.id_object = o.id)

1048 OR EXISTS (SELECT * FROM userdictionaryvalueslog u WHERE u.id_object = o.id)

1049 OR EXISTS (SELECT * FROM usermultilangvalueslog u WHERE u.id_object = o.id)

1050 OR EXISTS (SELECT * FROM usernumbervalueslog u WHERE u.id_object = o.id)

1051 OR EXISTS (SELECT * FROM userstringvalueslog u WHERE u.id_object = o.id));

1052 RETURN nAmountTransactions;

1053 END countTransactionsByObjectType;

1054

1055 FUNCTION pageAuditByAttribute(nIDAttribute attributes.id%TYPE, nIdLanguage NUMBER, nPageNumber NUMBER, nAmountPerPage NUMBER) RETURN XMLTYPE AS

1056 nDataType attributes.iddatatype%TYPE;

1057 xDocument XMLTYPE;

1058 vName datatypes.name%TYPE;

1059 BEGIN

1060 SELECT idDataType INTO nDataType FROM attributes WHERE id = nIDAttribute;

1061 SELECT name INTO vName FROM datatypes WHERE id = nDataType;

1062 IF vName = 'MULTILANG' THEN

1063

1064 SELECT

1065 XMLElement("attribute_summary", XMLAttributes(nIDAttribute AS id),

1066 XMLAgg(XMLElement("transaction",

1067 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

1068 XMLAgg(

1069 XMLConcat(

1070 XMLElement("attribute",

1071 XMLAttributes(

1072 nIDAttribute AS id_attribute,

1073 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

1074 A.type_of_operation AS type_of_operation, A.note AS attribute_note,

1075 'MULTILANG' AS attribute_datatype

1076),

1077 XMLElement("old_value_attribute",A.old_value),

1078 XMLElement("new_value_attribute",A.new_value)

1079)

1080)--XMLConcat

1081)--XMLAgg

1082)--XMLAttributes

1083 order by A.modified_time desc

1084)

1085)

1086 INTO xDocument

1087 FROM (

1088 SELECT a.*, uml.*, s.*, rownum r

1089 FROM attributes a, usermultilangvalueslog uml, systemdatavalues s

1090 WHERE a.id = nIDAttribute and uml.id_attribute = nIDAttribute AND uml.id_attribute = s.idparent AND s.idlanguage = nIdLanguage

1091)A

1092 WHERE (A.r between ((nPageNumber-1)*nAmountPerPage+1) and (nPageNumber*nAmountPerPage))

1093 GROUP BY A.modified_time, A.MODIFIED_USER;

1094

1095 RETURN xDocument;

1096 ELSIF vName = 'VARCHAR2' THEN

1097

1098 SELECT

1099 XMLElement("attribute_summary", XMLAttributes(nIDAttribute AS id),

1100 XMLAgg(XMLElement("transaction",

1101 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

1102 XMLAgg(

1103 XMLConcat(

1104 XMLElement("attribute",

1105 XMLAttributes(

1106 nIDAttribute AS id_attribute,

1107 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

1108 A.type_of_operation AS type_of_operation, A.note AS attribute_note,

1109 'STRING' AS attribute_datatype

1110),

1111 XMLElement("old_value_attribute",A.old_value),

1112 XMLElement("new_value_attribute",A.new_value)

1113)

1114)--XMLConcat

1115)--XMLAgg

1116)--XMLAttributes

1117 order by A.modified_time desc

1118)

1119)

1120 INTO xDocument

1121 FROM (

1122 SELECT a.*, usl.*, s.*, rownum r

1123 FROM attributes a, userstringvalueslog usl, systemdatavalues s

1124 WHERE a.id = nIDAttribute and usl.id_attribute = nIDAttribute AND usl.id_attribute = s.idparent AND s.idlanguage = 1

1125)A

1126 WHERE (A.r between ((nPageNumber-1)*nAmountPerPage+1) and (nPageNumber*nAmountPerPage))

1127 GROUP BY A.modified_time, A.MODIFIED_USER;

1128

1129 RETURN xDocument;

1130

1131 ELSIF vName = 'NUMBER' THEN

1132

1133 SELECT

1134 XMLElement("attribute_summary", XMLAttributes(nIDAttribute AS id),

1135 XMLAgg(XMLElement("transaction",

1136 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

1137 XMLAgg(

1138 XMLConcat(

1139 XMLElement("attribute",

1140 XMLAttributes(

1141 nIDAttribute AS id_attribute,

1142 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

1143 A.type_of_operation AS type_of_operation, A.note AS attribute_note,

1144 'NUMBER' AS attribute_datatype

1145),

1146 XMLElement("old_value_attribute",A.old_value),

1147 XMLElement("new_value_attribute",A.new_value)

1148)

1149)--XMLConcat

1150)--XMLAgg

1151)--XMLAttributes

1152 order by A.modified_time desc

1153)

1154)

1155 INTO xDocument

1156 FROM (

1157 SELECT a.*, usl.*, s.*, rownum r

1158 FROM attributes a, usernumbervalueslog usl, systemdatavalues s

1159 WHERE a.id = nIDAttribute and usl.id_attribute = nIDAttribute AND usl.id_attribute = s.idparent AND s.idlanguage = 1

1160)A

1161 WHERE (A.r between ((nPageNumber-1)*nAmountPerPage+1) and (nPageNumber*nAmountPerPage))

1162 GROUP BY A.modified_time, A.MODIFIED_USER;

1163

1164 RETURN xDocument;

1165

1166 ELSIF vName = 'DATE' THEN

1167

1168 SELECT

1169 XMLElement("attribute_summary", XMLAttributes(nIDAttribute AS id),

1170 XMLAgg(XMLElement("transaction",

1171 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

1172 XMLAgg(

1173 XMLConcat(

1174 XMLElement("attribute",

1175 XMLAttributes(

1176 nIDAttribute AS id_attribute,

1177 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

1178 A.type_of_operation AS type_of_operation, A.note AS attribute_note,

1179 'DATE' AS attribute_datatype

1180),

1181 XMLElement("old_value_attribute",A.old_value),

1182 XMLElement("new_value_attribute",A.new_value)

1183)

1184)--XMLConcat

1185)--XMLAgg

1186)--XMLAttributes

1187 order by A.modified_time desc

1188)

1189)

1190 INTO xDocument

1191 FROM (

1192 SELECT a.*, usl.*, s.*, rownum r

1193 FROM attributes a, userdatevalueslog usl, systemdatavalues s

1194 WHERE a.id = nIDAttribute and usl.id_attribute = nIDAttribute AND usl.id_attribute = s.idparent AND s.idlanguage = 1

1195)A

1196 WHERE (A.r between ((nPageNumber-1)*nAmountPerPage+1) and (nPageNumber*nAmountPerPage))

1197 GROUP BY A.modified_time, A.MODIFIED_USER;

1198

1199 RETURN xDocument;

1200

1201 ELSIF vName = 'CLOB' THEN

1202

1203 SELECT

1204 XMLElement("attribute_summary", XMLAttributes(nIDAttribute AS id),

1205 XMLAgg(XMLElement("transaction",

1206 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

1207 XMLAgg(

1208 XMLConcat(

1209 XMLElement("attribute",

1210 XMLAttributes(

1211 nIDAttribute AS id_attribute,

1212 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

1213 A.type_of_operation AS type_of_operation, A.note AS attribute_note,

1214 'CLOB' AS attribute_datatype

1215),

1216 XMLElement("old_value_attribute",A.old_value),

1217 XMLElement("new_value_attribute",A.new_value)

1218)

1219)--XMLConcat

1220)--XMLAgg

1221)--XMLAttributes

1222 order by A.modified_time desc

1223)

1224)

1225 INTO xDocument

1226 FROM (

1227 SELECT a.*, usl.*, s.*, rownum r

1228 FROM attributes a, userclobvalueslog usl, systemdatavalues s

1229 WHERE a.id = nIDAttribute and usl.id_attribute = nIDAttribute AND usl.id_attribute = s.idparent AND s.idlanguage = 1


Подобные документы

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

    курсовая работа [1,0 M], добавлен 10.06.2014

  • Схема взаимодействия подразделений предприятия. Выбор и обоснование технологии проектирования базы данных. Описание объектов базы данных. Разработка запросов на выборку, изменение, обновление и удаление данных. Интерфейсы взаимодействия с базой данных.

    курсовая работа [1,4 M], добавлен 25.05.2023

  • Семантическое моделирование данных. Основные понятия модели Entity-Relationship. Построение инфологической модели в виде диаграммы "Таблица-связь". Проектирование физической модели базы данных. Разработка формы заставки, главной, вторичных кнопочных форм.

    курсовая работа [1,5 M], добавлен 26.06.2012

  • Анализ проектирования баз данных на примере построения программы ведения информационной системы картотеки ГИБДД. Основные функции базы данных. Обоснование выбора технологий проектирования и реализации базы данных. Описание информационного обеспечения.

    курсовая работа [753,0 K], добавлен 27.08.2012

  • Разработка информационной системы учёта данных о клиентах, товарах и услугах в среде MS Access. Технология функционирования существующей ИС компьютерной компании. Модификация инфологической модели БД, проектирование новых экранных форм и отчетов.

    курсовая работа [1,5 M], добавлен 20.06.2014

  • Разработка информационно-аналитической системы агентства недвижимости. Обоснование выбора архитектуры базы данных и СУБД. Моделирование потоков данных (DFD диаграмм). Проектирование инфологической модели данных с использованием модели "сущность-связь".

    дипломная работа [5,4 M], добавлен 06.06.2013

  • Рассмотрение теоретических основ проектирования. Анализ предметной области и разработка таблиц базы данных. Заполнение таблиц, поиск данных с помощью фильтра. Создание форм, разработка запросов. Создание и настройка отчетов, составление приложения.

    курсовая работа [2,8 M], добавлен 01.06.2014

  • Особенности разработки инфологической модели и создание структуры реляционной базы данных. Основы проектирования базы данных. Разработка таблиц, форм, запросов для вывода информации о соответствующей модели. Работа с базами данных и их объектами.

    курсовая работа [981,4 K], добавлен 05.11.2011

  • Описание предметной области разрабатываемой базы данных для теннисного клуба. Обоснование выбора CASE-средства Erwin 8 и MS Access для проектирования базы данных. Построение инфологической модели и логической структуры базы данных, разработка интерфейса.

    курсовая работа [3,8 M], добавлен 02.02.2014

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

    курсовая работа [3,2 M], добавлен 23.08.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.