Учебное пособие (1075724), страница 40
Текст из файла (страница 40)
Сущность «Модернизация компьютера».Атрибуты:3.1. Код модернизации (уникальный идентификатор).3.2. Код компьютера (связь с сущностью «Компьютер»).3.3. Дата модернизации (дата).3.4. Описание модернизации (текст).«Модернизация компьютера» является «слабой» сущностью, не можетсуществовать без сущности «Компьютер».7.3.2.2 Описание связейМежду сущностями «Тип процессора» и «Компьютер» существует связь«Компьютер содержит процессор» типа «один-ко-многим», один тип процессораможет использоваться в нескольких компьютерах.Междусущностями«Компьютер»и«Модернизациякомпьютера»существует связь «Компьютер модернизируется» типа «один-ко-многим», одинкомпьютер может модернизироваться много раз.7.3.2.3 Диаграмма сущность-связьДиаграммасущность-связьдлярассмотреннойпредметнойобластиприведена на следующем рисунке:382КомпьютерКомпьютерсодержитпроцессорКомпьютермодернизируетсяТип процессораМодернизация компьютераРис.
7.4. Диаграмма сущность-связь.7.3.3 Физическая модель данных в СУБД «eXist»В СУБД «eXist» сущность может быть представлена тремя способами:Способ 1. Сущности соответсвует XML-файл.Способ 2. Сущности соответствует коллекция XML-файлов.Способ 3. Зависимая сущность может храниться в одном файле с основнойсущностью.Можно также придумать другие способы хранения.
Например, в одном файлемогут храниться несколько сущностей (или вообще все сущности), но такойспособ не очень удобен (например, неудобно выгружать фрагменты данных из БДс помощью WebDAV).Способ 1. Одной сущности (в реляционной модели это таблица)соответствует один файл XML, расположенный в определенной коллекции.Экземпляру сущности (в реляционной модели это запись таблицы)соответствует XML-элемент, который сохранен в файле XML.Атрибуту сущности (в реляционной модели это поле записи) соответствуетXML-элемент, который вложен в XML-элемент, соответсвующий экземпляру.Название файла обычно совпадает с названием сущности.383Способ 1 удобен для хранения небольших сущностей, структура которых недолжна часто изменяться, например, справочников.Пример 7.1. Описание сущности в виде документа XML:<?xml version = "1.0" encoding = "utf-8"?><Сущность><Экземпляр_сущности id="Экземпляр_1"><Атрибут1>Значение 1</Атрибут1>...<АтрибутK>Значение K</АтрибутK></Экземпляр_сущности>...<Экземпляр_сущности id="Экземпляр_N"><Атрибут1>Значение N 1</Атрибут1>...<АтрибутK>Значение N K</АтрибутK></Экземпляр_сущности></Сущность>Способ 2.
Сущности соответствует коллекция XML-ориентированной СУБД.Экземпляру сущности соответствует один файл XML, расположенный вколлекции, соответствующей сущности.В качестве названия файла обычно используется значение атрибута id срасширением xml.Атрибуту сущности соответствует XML-элемент, который сохранен в файлеXML.Пример 7.2. Описание экземпляра сущности в виде документа XML:Файл «Экземпляр_1.xml»:<?xml version="1.0" encoding="utf-8"?><Экземпляр_сущности id="Экземпляр_1"><Атрибут1>Значение 1</Атрибут1>...<АтрибутK>Значение K</АтрибутK></Экземпляр_сущности>384Способ 3. Экземпляры зависимой (слабой) сущности можно встраивать вэкземпляры основной сущности в виде вложенных элементов XML.Экземпляры основной сущности могут храниться с помощью способов 1 или2 (в следующем примере для хранения основной сущности используется способ2).Пример 7.3.
Описание слабой (зависимой) сущности:<?xml version="1.0" encoding="utf-8"?><Экземпляр_сущности id="Экземпляр_1"><Атрибут1>Значение 1</Атрибут1>...<АтрибутK>Значение K</АтрибутK><Экземпляры_зависимой_сущности><Экземпляр_зависимой_сущностиid="Экземпляр_зависимой_сущности_1"><Атрибут_зависимой_сущности1>Значение зависимой сущности1</Атрибут_зависимой_сущности1>...<Атрибут_зависимой_сущностиK>Значение зависимой сущностиK</Атрибут_зависимой_сущностиK></Экземпляр_зависимой_сущности>...</Экземпляры_зависимой_сущности></Экземпляр_сущности>7.3.4 Отображение логической модели данных в физическуюмодель данных1.
Данные для нашего приложения будут храниться в коллекции«/db/iu5/xrx_example».2.оВовложенныхпроцессорахколлекцияхбудут(«/db/iu5/xrx_example/processors»)хранитьсяиданныекомпьютерах(«/db/iu5/xrx_example/computers»).3. Сущность «Тип процессора» будем хранить в БД с помощью способа 1.385Для хранения сущности будем использовать файл «processors.xml» вколлекции «/db/iu5/xrx_example/processors».Описание XML-файла приведено в следующей таблице:Таблица 7.1. Описание XML-файла для сущности «Тип процессора».Инфологическая модельСущность «Тип процессора»Датологическая модельФайл «processors.xml». КорневойXML-элемент файла «processors»Экземпляр сущностиXML-элемент«processors/processor»Атрибут сущности «Код процессора»XML-атрибут«processors/processor/@id»Атрибут сущности «НаименованиеXML-элементпроцессора»«processors/processor/processor_name»В следующем примере представлен справочник, содержащий данные:Пример 7.4. Пример файла «processors.xml»<?xml version="1.0" encoding="UTF-8"?><processors><processor id="333"><processor_name>Процессор 1</processor_name></processor><processor id="334"><processor_name>Процессор 2</processor_name></processor>...</processors>4.
Сущность «Компьютер» будем хранить с помощью способа 2, а сущность«Модернизация компьютера» с помощью способа 3.386Дляхранениябудемиспользоватьколлекцию«/db/iu5/xrx_example/computers».Каждому XML-файлу в этой коллекции будут соответствовать данные ободном компьютере. Название файла имеет структуру «id компьютера.xml».Данные о модернизации компьютера будут также храниться в XML-файле,соответствующем компьютеру.Таблица 7.2.
Описание XML-файла для сущностей «Компьютер» и «Модернизациякомпьютера».Инфологическая модельСущность «Компьютер»Датологическая модельКоллекция «/db/iu5/xrx_example/computers».Экземпляр сущностиФайл «id компьютера.xml».Корневой XML-элемент файла«computer»Атрибут сущности «Код компьютера»XML-атрибут «computer/@id»Атрибут сущности «Код процессора»XML-элемент«computer/processor_id»Атрибутсущности«Наименование XML-элементкомпьютера»«computer/computer_name»Атрибут сущности «Объем ОП в Мб»XML-элемент «computer/op»Атрибут сущности «Объем жесткого XML-элемент «computer/hdd»диска в Гб»Атрибут сущности «Используется как XML-элемент «computer/server»сервер»Сущность «МодернизацияXML-элемент «computer/upgrades»компьютера»Экземпляр сущностиXML-элемент«computer/upgrades/upgrade»Атрибут сущности «КодXML-атрибутмодернизации»«computer/upgrades/upgrade/@id»387Инфологическая модельДатологическая модельАтрибут сущности «ДатаXML-элементмодернизации»«computer/upgrades/upgrade/upgrade_date»Атрибут сущности «ОписаниеXML-элементмодернизации»«computer/upgrades/upgrade/upgrade_description»Пример 7.5.
Пример файла, содержащего данные о компьютере<?xml version="1.0" encoding="utf-8"?><computer id="3e915ce2-a97a-465c-8ad9f7d8f5bb44b9_2010_10_18_0_56_10F843"><computer_name>Сервер 1</computer_name><processor_id>29435348-3aa3-4cb5-9e3e84d4b26e83cb_2010_10_18_0_55_46F809</processor_id><op>1024</op><hdd>1000</hdd><server>true</server><upgrades><upgrade/></upgrades></computer>Пример 7.6.
Пример файла, содержащего данные о компьютере и егомодернизациях<?xml version="1.0" encoding="utf-8"?><computer id="3e915ce2-a97a-465c-8ad9f7d8f5bb44b9_2010_10_18_0_56_10F843"><computer_name>Сервер 1</computer_name><processor_id>29435348-3aa3-4cb5-9e3e84d4b26e83cb_2010_10_18_0_55_46F809</processor_id><op>1024</op><hdd>1000</hdd>388<server>true</server><upgrades><upgrade/><upgrade id="1_2010-10-18T22:46:37Z"><upgrade_date>2010-10-04</upgrade_date><upgrade_description>увеличение ОП</upgrade_description></upgrade><upgrade id="1_2010-10-18T22:46:54Z"><upgrade_date>2010-10-05</upgrade_date><upgrade_description>замена диска</upgrade_description></upgrade></upgrades></computer>5.
Связи между сущностями могут быть заданы двумя способами – в видеравенства соответствующих XML-элементов (XML-атрибутов) или в видевложенности элементов.Связьпроцессора»«Компьютерисодержит«Компьютер»процессор»задаетсявмеждусущностямивиде равенства«ТипXML-атрибута«processors/processor/@id» (в XML-файле, соответствующем процессору) и XMLэлемента «computer/processor_id» (в XML-файле, соответствующем компьютеру).Таким образом, связь задается в виде равенства элементов (атрибутов), которыенаходятся в разных XML-файлах (что похоже на реляционную модель, гдедолжны совпадать поля различных таблиц).Связь «Компьютер модернизируется» между сущностями «Компьютер» и«Модернизация компьютера» задается в виде вложенности элементов «upgrade»(соответствующихмодернизациикомпьютера)вэлемент«computer»(соответствующий компьютеру).
Такой способ может быть использован в случаеслабой (зависимой) сущности (данные зависимой сущности вложены в данныеосновной сущности). Этот способ не имеет прямых аналогий в реляционноймодели.3897.3.5 Разработка приложенияПример 7.7 содержит каталог «xrx_example», содержащий файлы XRXприложения. Для того, чтобы пример правильно работал, необходимо каталог«xrx_example» скопировать в каталог, в котором установлен «eXist» (например,«C:\tomcat\webapps\exist\xrx_example»).7.3.5.1 Соглашения по наименованию элементов XRX-приложенияВ XRX-приложениях обычно не используют сложную систему настроек.Принято использовать определенные договоренности по наименованиюфайлов, сценариев и использовать эти имена непосредственно в тексте сценариев.Конечно, такая система «хардкодинга» является менее гибкой по сравнениюс технологией конфигурационных файлов (которая используется, например, вASP.NET), но для разработки не очень сложных веб-приложений это достаточнопростой и надежный способ.В нашем примере будем использовать следующую систему договоренностей.В веб-приложении создается один XQuery-модуль (файл с расширением.xqm), в котором объявляются константы, пути к файлам, необходимыебиблиотечные функции и т.д.














