|
Рис. 1. Реляционное представление документа
Если мы хотим полностью отразить содержимое этой простой служебной записки в реляционной базе данных, то нам потребуется создать три таблицы следующего вида |
|
Рис. 2. Оптимизированный вариант представления структуры
Представленное на рис.1 преобразование семантически полное, «реляционно-безупречное» и очень неудобное для использования. Попробуем подойти несколько иначе — уберем таблицу 3, а вместо служебного реквизита "Позиция" сделаем в таблице 1 реквизит "ПолныйТекст" |
Вернуться к статье
|
Рис. 3. Очередное «улучшение» структуры
Дальнейшее «улучшение» структуры базы данных, представленной на рис. 1 и 2 можно сделать, если ликвидировать таблицу 2, а вместо нее в таблице 1 создать реквизит «Автор» и записать в его единственное значение сразу обоих авторов |
Вернуться к статье
|
Рис. 4. Объектно-ориентированная структура описания документа
В отличие от реляционной модели, ссылка находится не в дочернем, а родительском классе, идентификатор же, напротив, в классе дочернем, а не в родительском. |
Вернуться к статье
Рис. 5. Описание класса «XML-узел»
В отличие от рассмотренной на рис. 4 объектной модели, ссылка на дочерние узлы представляет собой упорядоченный список, который может содержать идентификаторы узлов типа — 1, 2, 3. Свойство «Атрибуты» представляет собой неупорядоченный список атрибутов и содержит идентификаторы узлов типа 2
Идентификатор | Тип узла | Имя узла | Значение узла | Дети (ссылка) | Атрибуты (ссылка) |
1 | 9 | (#document) | - | 2 | - |
1 | Документ | - | 7,9,11,13 | 3,5 |
3 | 2 | Номер | 51 | 4 | - |
4 | 3 | (#text) | 51 | - | - |
5 | 1 | Тип | Предложение | 6 | - |
6 | 3 | (#text) | Предложение | - | - |
7 | 1 | Содержание | - | 8 | - |
8 | 3 | (#text) | Мы, Ваши сотрудники | - | - |
9 | 1 | Автор | - | 10 | - |
10 | 3 | (#text) | Иванов Иван | - | - |
11 | 1 | Автор | - | 12 | - |
12 | 3 | (#text) | Петрова Мария | - | - |
13 | 1 | Содержание | - | 14 | - |
14 | 3 | (#text) | предлагаем Вам... | - | - |
|