Код и данные могут перемежаться: если выражение начинается
Получив входные данные, СУБД выполняет следующие действия:
ввод в СУБД | DDL | введено |
<formdata> <x data1="Larry" data2="oid_in_traffic"> </formdata> |
create table formdata ( id num primary key, sal varchar, san num4, sp num2, ral varchar, ran num4, rp num2, ru varchar, rs varchar, g varchar, su varchar ); create table x ( id num primary key, srv num references formdata, data1 varchar, data2 blob ); |
insert into formdata values (1, asker.org, 111.111.111.111, 80, distination.org, 222.222.222.222, 80, tomson, car-celler, BrowserName ); insert into x values (10, 1, Larry, file_content); |
Успешность записи xml-деревьев в базу данных зависит от того, соответствует ли схема базы вводимому дереву (при несоответствии некоторые xml-под-деревья игнорируются).
Если вложенная таблица двумя своими полями ссылается на две разные записи обрамляющей таблицы, то в открывающем теге вложенной таблицы после ее названия через знак слэш "/" нужно указать название соответствующего поля обрамляющей таблицы.
Если обрамляющая таблица двумя своими полями ссылается на две разные записи вложенной таблицы, то в открывающем теге обрамляющей таблицы после ее названия через знак слэш "/" нужно указать название соответствующего поля вложенной таблицы.
Таким образом таблица и ее ссылающееся поле указываются через слэш в одном открывающем теге. Такое указание поля в открывающем теге будем называть детерминацией, determination (в браузере она тоже предусмотрена). Различные варианты детерминации рассмотрены в отдельном документе. В примерах ниже предполагается, что все первичные ключи снабжены последовательностями, значения из которых вводятся в эти ключи по умолчанию.
ввод в СУБД | DDL | введено |
<formdata> <a data=12.3> <b data=23.4> <b data=34.5> <b data=45.6> </a> </formdata> |
create table a ( id num primary key, srv num references formdata, data float ); create table b ( id num primary key, ref num references a(id), data float ); |
insert into formdata values (1); insert into a values (10, 1, 12.3); insert into b values (101, 10, 23.4); insert into b values (102, 10, 34.5); insert into b values (103, 10, 45.6); -- секция "b" является множеством |
<formdata> <a data=12.3> <b data=23.4> <b data=34.5> <b data=45.6> </a> </formdata> |
create table a ( id num primary key, srv num references formdata, data float ); create table b ( id num primary key, ref1 num references a(id), ref2 num references a(id), data float ); |
insert into formdata values (1); insert into a values (10, 1, 12.3); |
<formdata> <a data=12.3> <b/ref1 data=23.4> <b/ref1 data=34.5> <b/ref1 data=45.6> </a> </formdata> |
create table a ( id num primary key, srv num references formdata, data float ); create table b ( id num primary key, ref1 num references a(id), ref2 num references a(id), data float ); |
insert into formdata values (1); insert into a values (10, 1, 12.3); insert into b values (101, 10, null, 23.4); insert into b values (102, 10, null, 34.5); insert into b values (103, 10, null, 45.6); |
<formdata> <a data=12.3> <b data=23.4> </a> </formdata> |
create table a ( id num primary key, srv num references formdata, ref num references b(id), data float ); create table b ( id num primary key, data float ); |
insert into formdata values (1); insert into a values (10, 1, 100, 12.3); insert into b values (100, 23.4); -- секция "b" является эстафетой |
<formdata> <a data=12.3> <b data=23.4> </a> </formdata> |
create table a ( id num primary key, srv num references formdata, ref1 num references b(id), ref2 num references b(id), data float ); create table b ( id num primary key, data float ); |
insert into formdata values (1); insert into a values (10, 1, null, null, 12.3); |
<formdata> <a/ref1 data=12.3> <b data=23.4> </a> </formdata> |
create table a ( id num primary key, srv num references formdata, ref1 num references b(id), ref2 num references b(id), data float ); create table b ( id num primary key, data float ); |
insert into formdata values (1); insert into a values (10, 1, 100, null, 12.3); insert into b values (100, 23.4); |
<formdata> <a data=12.3> <b data=23.4> <b data=34.5> <b data=45.6> </a> </formdata> |
create table a ( id num primary key, srv num references formdata, ref num references b(id), data float ); create table b ( id num primary key, data float ); |
insert into formdata values (1); insert into a values (10, 1, null, 12.3); -- секция "b" не введена (все теги вместе!), -- т.к. схема базы не содержит -- ни множества, ни списка для нее |
<formdata> <a data=12.3> <b data=23.4> <b data=34.5> <b data=45.6> </a> </formdata> |
create table a ( id num primary key, srv num references formdata, ref num references b(id), data float ); create table b ( id num primary key, ref num references b(id), data float ); |
insert into formdata values (1); insert into a values (10, 1, 101, 12.3); insert into b values (101, 102, 23.4); insert into b values (102, 103, 34.5); insert into b values (103, null, 45.6); -- секция "b" является списком |