Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_I_SUBD_Metodichka_2012.doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
2.14 Mб
Скачать

Общая идея языка запросов (xPath)

Структура БД XNikaSQL описывается с помощью, так называемой, поисковой XSD схемы. Поисковая схема представляет взгляд на БД, хранящую коллекции XML документов разных типов (форм), как на один большой XML псевдо-документ.

Корневой элемент этого XML псевдо-документа называется "Colls". В корневом элементе расположено по одному элементу на каждую коллекцию (форму) в БД. Элементы названы по имени коллекции (коду формы), например, "ФИЗ_ЛИЦА". В каждом таком элементе условно расположены дочерние элементы, соответствующие хранящимся в коллекции объектам учета. Дочерние элементы названы по коду экземпляра формы, например, "ФИЗ_ЛИЦО". В каждом дочернем элементе расположены XML данные соответствующего объекта учета. Схема каждого такого элемента соответствует XSD схеме типа объектов учета соответствующей коллекции.

Язык запросов XNikaSQL имеет форму стандартного языка XPath2.0 (http://www.w3.org/TR/xpath20/), предназначенного для поиска элементов XML документа, в данном случае объектов учета, условно находящихся в XML псевдо-документе, описанном поисковой схемой БД. Например, "/Colls/ФИЗ_ЛИЦА/ФИЗ_ЛИЦО[Фамилия='Иванов']".

Таблица 5. Примеры запросов на языке запросов XNikaSQL.

Запрос на языке запросов XNikaSQL

Комментарий

Соответствующий SQL запрос

1

/Colls/ФИЗ_ЛИЦА/ ФИЗ_ЛИЦО[main_props/ fio/lst_name='Иванов']

Простое условие:

ищем ФИЗ_ЛИЦО с фамилией Иванов

SELECT * FROM [ФИЗ_ЛИЦА] Y1 WHERE Y1.[main_props_fio_lst_name] = 'Иванов'

4

/Colls/ФИЗ_ЛИЦА/ ФИЗ_ЛИЦО[starts-with(main_props/fio/ lst_name, 'Иванов') and

main_props/inn <= 123456789]

Простые сравнения и сравнения строк: ищем ФИЗ_ЛИЦО с фамилией, начинающейся на Иванов, и ИНН меньше или равно 123456789

SELECT * FROM [ФИЗ_ЛИЦА] Y1 WHERE ((Y1.[main_props_fio_lst_name] LIKE 'Иванов%') AND (Y1.[main_props_inn] <= 123456789))

8

/Colls/ФИЗ_ЛИЦА/ ФИЗ_ЛИЦО[status/ aLanguage/language[name='английский' and level='свободно'] and status/aLanguage/ language[name= 'немецкий' and level='читает со

словарем']]

Сочетание связанных условий на многозначные атрибуты: ищем ФИЗ_ЛИЦО, владеющее свободно английским, и, умеющее читать со словарем по-немецки.

SELECT * FROM [ФИЗ_ЛИЦА] Y1 WHERE ((EXISTS (SELECT * FROM [ФИЗ_ЛИЦА_status_aLanguage] Y2 WHERE Y1.[ID_1] = Y2.[ID_1] AND ((Y2.[name] = 'английский') AND (Y2.[level] = 'свободно')))) AND (EXISTS (SELECT * FROM [ФИЗ_ЛИЦА_status_aLanguage] Y3 WHERE Y1.[ID_1] = Y3.[ID_1] AND ((Y3.[name] = 'немецкий') AND (Y3.[level] = 'читает со

словарем')))))

Проектирование реляционных бд на основе принципов нормализации

Процесс проектирования БД представляет собой последовательность переходов от неформального словесного описания информационной структуры предметной области к формализованному описанию объектов предметной области в терминах некоторой модели. В общем случае можно выделить следующие этапы проектирования:

  1. Системный анализ и описание информационных объектов предметной области (например, UseCase – диаграммы (диаграммы прецедентов)).

  2. Проектирование инфологической модели предметной области — частично формализованное описание объектов предметной области в терминах некоторой семантической модели, например, в терминах ER-модели.

  3. Даталогичеcкое или логическое проектирование БД, то есть описание БД в терминах принятой даталогической модели данных.

  4. Физическое проектирование БД, то есть выбор эффективного размещения БД на внешних носителях для обеспечения наиболее эффективной работы приложения.

Между 2-м и 3-м этапами необходимо принять решение, с использованием какой СУБД будет реализовываться проект, т.к. этапы проектирования 3 и 4 необходимо вести в терминах конкретной платформы СУБД (типы данных, ключи, соглашения о названиях полей и таблиц и т.д.).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]