XML - статьи

Объектные представления


Если XML-документ не находится в каноническом формате, вы можете создать объектные представления или XMLType-представления, чтобы позволить XSU отображать XML-документы в таблицы базы данных. Как показано далее, контактная информация сохраняется в следующем contact.xml XML-документе: <Contact_List> <Contact> <User_id>userid</User_id> <First_Name>Steve</First_Name> <Last_Name>Jones</Last_Name> <Business> <Email>Steve.Jones@oracle.com</Email> <Phone>(650)5769801</Phone> <Address> <Street1>4op11</Street1> <Street2>500 Oracle Parkway</Street2> <City>Redwood Shores</City> <State>CA</State> <Zipcode>94065</Zipcode> <Country>USA</Country> </Address> </Business> </Contact> </Contact_List>

Схема базы данных определяется, как показано далее: CREATE TYPE address_typ AS OBJECT( street1 VARCHAR2(200), street2 VARCHAR2(200), city VARCHAR2(100), state VARCHAR2(20), zipcode VARCHAR2(20), country VARCHAR2(20)); / CREATE TABLE contact_tbl( contactid VARCHAR2(15) PRIMARY KEY, firstname VARCHAR2(100), lastname VARCHAR2(200), midname VARCHAR2(50), business_phone VARCHAR2(20), home_phone VARCHAR2(10), cell_phone VARCHAR2(20), business_addr address_typ, business_email VARCHAR2(150));

Используя каноническое отображение, XML-документ не может напрямую отобразится в столбцах таблицы, как документ, содержащий несколько уровней. Таким образом, для того, чтобы вставить XML-документ, нужно создать следующее объектное представление: CREATE TYPE contactinfo_type AS OBJECT( phone VARCHAR2(20), email VARCHAR2(150), address address_typ); / -- Create Object View CREATE VIEW contact_view AS SELECT contactid AS user_id, firstname AS first_name, lastname AS last_name,midname AS mid_name, contactinfo_type(business_phone,business_email, business_addr) AS business FROM contact_tbl;

Далее вы можете запустить следующую команду для загрузки XML-файла в CUSTOMER_VIEW: java OracleXML putXML -conn "jdbc:oracle:thin:@localhost:1521:orclX" -user "demo/demo" -fileName "contacts.xml" "contact_view"

В данном примере contact_view используется база данных Oracle для отображения XML- данных в базовые таблицы. Однако, во многих случаях эти типы представлений не будут обновляемыми, когда они содержат многоуровневые таблицы соединения или объекты типа наследования. Далее для обращения с совокупностью данных в этих таблицах и объектов вы должны создать INSTEAD-OF-TRIGGERS для представлений.



Содержание раздела