Представление структурированных данных в XML
Хотя XML разрабатывался, прежде всего, для представления и обработки документов, он может быть полезен для представления структурированных данных, которые обычно представляются в базах данных. На Рис. 8.1 показан типичный XML-документ из сферы обработки данных - очень простой заказ товаров. По содержанию он сильно отличается от документа, показанного на Рис. 7.1, но содержит те же основные компоненты. Вместо <book> элементом верхнего уровня является <purchaseOrder>. Он содержит, подобно элементу <book>, вложенные элементы - <customerNum>, <orderNum>, <orderDate> и <orderItem>. Элемент <orderItem> тоже содержит вложенные элементы. На Рис. 8.1 с заказом связано несколько условий приобретения товара, представленных атрибутами элемента <terms>. Атрибут ship определяет, как будет доставлен заказ, а атрибут bill - условия его кредитования.
<?xml version="1.0"?> <purchaseOrder> <customerNum>2117</customerNum> <orderNum>112961</orderNum> <orderDate>1989-12-17</orderDate> <repNum>106</repNum> <terms ship="ground" bill="Net30"></terms> <orderItem> <mfr>REI</mfr> <product>2A44L</product> <qty>7</qty> <amount>31500.00</amount> </orderItem> </purchaseOrder> |
Рис. 8.1 - XML-документ для простого заказа |
Очевидно, что этот документ-заказ тесно связан с таблицей ZAKAZY из нашей базы данных. Вы можете сравнить его со структурой таблицы ZAKAZY, приведенной в Приложении (см. Рисунок П.1 и Таблицу ZAKAZY). Элементы нижнего уровня за исключением элемента <terms> соответствуют столбцам таблицы ZAKAZY. Элемент верхнего уровня представляет строку таблицы.
Преобразование документов описанного типа в наборы строк таблицы ZAKAZY представляет собой механическую процедуру, поэтому его может выполнять простая компьютерная программа.
В отличие от таблицы ZAKAZY приведенный XML-документ содержит еще один, средний уровень иерархии, группирующий информацию о заказанном товаре - код производителя (mfr), код товара (product), количество товара (qty) и сумму заказа (amount). В реальном заказе, содержащем несколько позиций, эта группа элементов данных может повторяться несколько раз. XML-документ легко расширить для поддержки такой структуры данных, добавив еще один или несколько элементов <orderItem>.
Базу данных нельзя так легко расширить. Для поддержки многострочных заказов таблицу ZAKAZY, скорее всего, придется разбить на две: в одной будет храниться заголовок заказа (номер заказа (orderNum), дата заказа (orderDate), код клиента (customerNum) и т. п.), а в другой - соответствующие строки заказа: код производителя (mfr), код товара (product), количество товара (qty) и сумму заказа (amount).
Дата добавления: 2015-02-03; просмотров: 637;