<NAME>
<FNAME>John</FNAME>
<LNAME>White</LNAME>
</NAME>
<NAME>
<LNAME>White</LNAME>
<FNAME>John</FNAME>
</NAME>
Но атрибуты в XML не являются упорядоченными, поэтому следующие два элемента XML считаются одинаковыми:
<NAME FNAME=”John” LNAME =”White”/>
<NAME LNAME=”White” FNAME=”John”/>
2.2. Основы реляционных моделей.
Реляционная модель основывается на математических принципах, вытекающих непосредственно из теории множеств и логики предикатов. Эти принципы впервые были применены в области моделирования данных в конце 60-х гг. доктором Е.Ф. Коддом, в то время работавшим в IBM, а впервые опубликованы — в 1970 г. Реляционная модель определяет способ представления данных (структуру данных), методы зашиты данных (целостность данных), а также операции, выполняемые с данными (манипулирование данными).
В общих чертах основные принципы реляционных систем баз данных можно сформулировать так,
· Все данные на концептуальном уровне представляются в виде упорядоченной организации, определенной в виде строк и столбцов и называемой отношением.
· Все значения являются скалярами. Это означает, что для любой строки и столбца любого отношения существует одно и только одно значение.
· Все операции выполняются над целым отношением, и результатом выполнения этих операций также является целое отношение. Этот принцип называется замыканием.
Основные операции легко определить в терминах универсальной алгебры. Универсальная алгебра – множество всех возможных значений с набором операций, результат которых лежит в том же множестве. Эти операции так,
· Селекция: Среди кортежей выбираем те, которые удовлетворяют определённому предикату (он строится из простых предикатов, которые являются логическими выражениями на значениях атрибутов).
· Проекция: Проектором называется оператор, квадрат которого есть он сам. Проекция производится на подмножество множества атрибутов. При выполнении проекции надо устранить дубликаты, что является весьма трудоёмкой задачей.
· Произведение: При выполнении операции произведения результирующая таблица получается, как правило, очень большой.
· Соединение: - композиция произведения и селекции, играет важную роль в теории баз данных. Эта операция имеет два операнда, может иметь разные виды зависимости от того,что происходить потом - кроме селекции может быть проекция.
· Естественное соединение: Эта операция важна, так как для нее существует эффективный алгоритм. Мы можем конструировать новые отношения из уже имеющихся. Другие операции тоже позволяют конструировать нетривиальные отношения, большие по размерам.
2.3. DTD и XML schema
С тех пор XML - способ описать структурные данные должно быть средство определить структуру XML документа. Определения Типа документа (DTD) и XML Схемы - различные механизмы. Они используются, чтобы определить допустимые элементы, которые могут произойти в документе. Они могут произойти и сдержать некоторые аспекты этих элементов в порядке. Ниже печатает из различных средств, сдерживания содержания XML документа.
2.3.1 Определение типа документа (Document Type Definition - DTD)
DTD состоит из объявлений разметки (markup declarations), начинающихся с пары символов <!. За этими символами идет одно из слов ELEMENT,ATTLIST,ENTITY,NOTATION,указывающих, что именно объявляется: элемент, список атрибутов, сущность или обозначение. Объявление разметки заканчивается символом ”>”. Структура DTD выглядит следующим образом:
<!DOCTYPE root_element [
<!ELEMENT element_name (component)>
other elements’ or attributes’ declarations
]>
· Объявление типа элемента
Каждый элемент документ XML должен быть описан в объявление типа элемента(element type declaration).Объявление типа элемента начинается с символов <!ELEMENT,после которых через пробел идет имя элемента и объявляется его содержимое.
Проще всего объявляется пустой элемент – отмечается словом EMPTY.Пример: <!ELEMENT doc EMPTY>.
Следующее объявление можно считать полной противоположностью объявлению пустого элемента: <!ELEMENT book ANY>.Элемент с обычным текстовым содержимым и без вложенных элементов объявляется так: <!ELEMENT author (#PCDATA)> . Слово #PCDATA (Parsed Character DATA) означает строку символов, просматриваемую программой-анализатором документа XML.
Если объявляемый элемент содержит вложенные элементы, то объявление должно содержать список их имен, перечисленных через запятую, в скобках. Вложенные элементы должны следовать в документе XML в том порядке, в каком они перечислены в объявление. Кроме вложенных элементов, внутри элемента может встретиться обычный текст, и вложенный элемент может встретиться больше один раз. То обстоятельство, что вложенный элемент можно записать в объявляемом элементе несколько раз, отмечается звездочкой, плюсом или вопросительным знаком. И так:
· Оператор * означает, что компонент может повторяться произвольное количество раз или вовсе отсутствовать.
· Оператор + означает, что компонент должен присутствовать не менее одного раза.
· Оператор ? означает, что компонент может отсутствовать или быть использован только однократно.
· Для моделирования списка компонентов используется оператор списка, который представлен парой круглых скобок, в которых через запятую указаны компоненты.
· Кроме того, в определениях элементов в DTD допускается использование оператора выбора |, разделяющего компоненты и позволяющего допускать присутствие только одного компонента, участвующего в выражении с этим оператором.
· Объявление атрибутов
Атрибуты элемента объявляются уже после объявления самого элемента. Все атрибуты одного элемента объявляются сразу, одним списком. Список начинается с символов <!ATTLIST, после них через пробел следует имя элемента, к которому относятся атрибуты. Затем идут объявления атрибутов. Список, как всегда, заканчивается символом “ > ”.
Для каждого атрибута записывается его имя, тип и признак обязательности. Тип атрибута записывается приведенными далее обозначениями.
· CDATA- строка символов.
· ID-уникальный идентификатор, однозначно определяющий элемент, в котором встретился этот атрибут; значения такого атрибута не должны повторяться в документе.
· IDREF- идентификатор, содержащий одно из значений атрибутов типа ID, используется в качестве ссылки не другие элементы.
· IDREFS- идентификатор, содержащий набор значений атрибутов типа ID, перечисленных через пробелы; тоже используется в качестве ссылки сразу на несколько элементов.
· ENTITY- имя непроверяемой анализатором сущности.
· ENTITIES- имена непроверяемых сущностей.
· NMTOKEN- слово, содержащее только символы, применяемые в именах.
· NMTOKENS- слова, перечисленные через пробелы.
· NOTATION- обозначение.
· Список значений атрибута, перечисляемых через вертикальную черту, в скобках.
Атрибуты типа ID играют ту же роль, что и первичные ключи в таблицах баз данных. Они позволяют различать элементы и индексировать их.
Объявление атрибута заканчивается признаком обязательности присутствия атрибута в элементе или подразумеваемым значением атрибута. Признак обязательности- это одно из трех слов, показывающих, всегда ли нужно записывать атрибут и что будет, если его нет в элементе :
a. #REQUIRED – атрибут надо обязательно записывать в элементе.
b. #IMPLIED – атрибут необязателен, у него нет значения по умолчанию.
c. #FIXED – у атрибута есть только одно значение, которое записывается тут же, через пробел.
· Объявление сущности
Все сущности можно разделить на три группы:
a. Внутренние сущности – задаются при объявлении сущности.
b. Внешние сущности – содержатся в отдельных файлах или встроены в программу- анализатор.
c. Параметризованные сущности – используются только внутри описания DTD.
Объявление внутренней сущности (entity declaration) начинается с символов <!ENTITY, после которых идет имя сущности. Через пробел записывается сама сущность – ее значение в кавычках.
После такого объявления программа- анализатор, увидев в документе ссылку на сущность &имя-сущности, ссылку на сущность можно применять тут же, в описании DTD. Такие сущности называются внутренними (internal entities), потому что для их объявления не нужен никакой внешний объект.
Для внешних сущностей (external entities) указывается только место их расположения в виде адреса URI. Перед указанием адреса записывается одно из слов SYSTEM или PUBLIC. Разница между пометками SYSTEM и PUBLIC заключается в том, что после слова PUBLIC идет какое-то общеизвестное объявление. Обычно здесь записывается известная ссылка, введенная консорциумом W3C или другой организацией. Если программа-анализатор не найдет эту ссылку, то она воспользуется адресом URI, идущим за ссылкой.
Объявление параметризованных сущностей (parametric entities), используемых только внутри описания DTD, выполняется точно так же, как объявление внутренних и внешних сущностей, только между началом объявления <!ENTITY и именем сущности вставляется знак процента, отделенный пробелами. Ссылка на параметризованную сущность начинается с амперсанда, а со знака процента.
· Объявление обозначение
Обозначение (notation) объявляется подобно сущности. Обозначения тоже могу быть внутренними и внешними. При объявлении внутренних обозначений после символов записывается имя обозначения, затем в кавычках – его расшифровка.
При объявлении внешних обозначений используются пометки SYSTEM или PUBLIC, причем за словом не обязательно должна следовать общеизвестная ссылка, так что слова SYSTEM и PUBLIC здесь равнозначны.
2.3.2 Схема XML.
Схемы данных (Schemas) являются альтернативным способом создания правил построения XML-документов. По сравнению с DTD, схемы обладают более мощными средствами для определения сложных структур данных, обеспечивают более понятный способ описания грамматики языка, способны легко модернизироваться и расширяться. Безусловным достоинством схем является также то, что они позволяют описывать правила для XML- документа средствами самого же XML.