Автор: Киндюк Кирилл Вадимович

Рубрика: Технические науки

Опубликовано в Молодой учёный №5 (16) май 2010 г.

Статья просмотрена: 80 раз

Библиографическое описание:

Киндюк К. В. Формальное описание объектного и реляционного представлений предметной области // Молодой ученый. — 2010. — №5. Т.1. — С. 58-60.

В данной статье производится построение формального описания объектного и реляционного представлений произвольной предметной области для реализации инструменты объектно-реляционного преобразования

Ключевые слова: ООП, СУБД, база данных, объектный подход, объектно-реляционное преобразование, ORM

There are making construction a formal description of object and relational representations of an arbitrary domain for object-relational mapping tool implementation

Keywords: OOP, DBMS, database, object approach, object-realtional mapping, ORM

 

В настоящее время наиболее востребованным подходом при разработке программного обеспечения является объектно-ориентированный подход [1]. В рамках этого подхода предполагается разбиение предметной области на набор связанных между собой классов объектов, обладающих состоянием и поведением. Состояние определяется набором данных, присущих объекту класса, а поведение — набором методов, которые могут изменить это состояние [2]. Данный подход широко используется, о чем говорит большое количество изданий, посвященных ему. Существуют специальные издания, описывающие общие шаблоны, которые можно использовать при разработке программного обеспечения с использованием объектного подхода [3], [4].

Большинству приложений требуется производить сохранение результатов своей работы в постоянные хранилища данных. Чаще всего используются хранилища на основе реляционных систем управления базами данных. Эти хранилища используются ввиду их надежности, отказоустойчивости, эффективности и удобства эксплуатации. Однако представление предметной области при реляционном подходе отличается от объектного. Предметная область разбивается на набор связанный отношениями сущностей, однако данные сущности являются простыми структурами данных, не имеющими состояния и не способными его менять [5]. Отсутствуют основные отличительные особенности объектного подхода: инкапсуляция, наследование и полиморфизм

Два вышеописанных представления одинаково широко используются, и часто в рамках одного приложения встает проблема совмещения двух подходов. Объектный подход удобен для разработки самого приложения, а реляционный -  для хранения и извлечения данных.

Как можно заметить, проблема актуальна и ее решением занимаются, но приемлемого решения не получено.

Для совместного использования двух вышеописанных представлений используется несколько подходов:

1.                  Ручное указание процедур преобразования. Используется достаточно часто ввиду своей простоты, однако малоэффективно с точки зрения разработки и поддержки, поскольку требуется производить много похожих действий.

2.                  Указание шаблонов преобразования. В различных системах реализовано по разному, но сводится к тому, что в некотором виде описывается соответствие объектной и реляционной модели предметной области, а специальный инструмент, пользуясь этим описанием, производит построение процедур преобразования и доступа к данным.

3.                  Описание смешанного представления, позволяющего построить на его основе как объектное, так и реляционное представления.

Для описания возможности преобразования объектного представления в реляционное было проведено построение формальных описание объектного и реляционного представлений предметной области.

Объектное представление

Объектное представление предметной области (ОV) задается моделью, элементами которой являются классы и связи между ними

OV=<Cm, Lm>,

где Cm — множество классов, а Lm — множество связей между классами.

Класс описывается именем и содержит в себе поля и методы. Поля описывают данные экземпляра класса, а методы реализуют его поведение.

C=<N, Fс, Mс>,

где N — наименование класса, Fс — множество полей, Mс — множество методов.

Конкретное поле описывается следующим образом:

F=<N, DT, AM>,

где N — наименование поля, DT — тип данных поля, AM — модификатор доступа к полю.

Связи между классами описывают, какую роль играет один класс по отношению к другому (другим). Связь в общем случае описывается следующим образом:

L=<N, T, Cl, Rl, Ml, Al>,

где N — наименование связи, Cl- множество классов, которые данная связь объединяет, T- тип связи, Rl — множество ролей классов, принимающих участие в образовании данной связи. Ml — множество мощностей связи для каждого из классов, Al — множество собственных  атрибутов связи.

Конкретная роль описывается следующим образом:

R=<N,C>,

где N — наименование роли, C — класс, играющий данную роль.

Мощность связи (мультипликатор) означает число связей между каждым экземпляром класса (объектом) в начале линии с экземпляром класса в ее конце[6].

Мощность связи для класса можно описать следующим образом:

M = <С1, С2, V1, V2>,

где C1 — первый класс, для которого описывается мощность, C2 — второй класс, для которого описывается мощность, V1 — значение мощности для первого класса, участвующего в образовании связи,  V1 — для второго.

Для примера возьмем фрагмент предметной области, описывающий студентов и их группы. Каждый студент обладает такими признаками как «Фамилия», «Имя», «Отчество», «Дата рождения». Каждая группа имеет признаки «Наименование»,  «Курс», «Поток». Студенты учатся в группе.

Объектное представление данной предметной области будет выглядеть следующим образом:

OV=<Cm, Lm>

Объектная модель предметной области состоят из 2-х классов:

Cm = { C1,C2}

Опишем первый класс (для упрощения описания методы опустим):

C1 = < «Студент»,  Fc1, Ø>

Fc1 =  {Fc11, Fc12, Fc13, Fc14}

Fc11 = {«Фамилия», «Строковый», «Публичный»}

Fc12 = {«Имя», «Строковый», «Публичный»}

Fc13 = {«Отчество», «Строковый», «Публичный»}

Fc14 = {«Дата рождения», «Дата/время», «Публичный»}

Опишем второй класс (для упрощения описания методы опустим):

C2 = < «Группа»,  Fc2, Ø>

Fc2 =  {Fc21, Fc22, Fc23}

Fc21 = {«Наименование», «Строковый», «Публичный»}

Fc22 = {«Курс», «Числовой», «Публичный»}

Fc23 = {«Поток», «Числовой», «Публичный»}

Опишем связи:

Lm = {L1}

L1 =  < «Обучение» , «Простая агрегация», {C1, C2}, {R1,R2},  {M1}, Ø}

R1 = < «Обучается», C1>

R2 = < «Содержит», C2>

M1 = < C1, C2, M, 1 >, где M — много

Реляционное представление

Реляционное представление описывается совокупностью сущностей и связывающих их отношений[7].

RV=<Em, Rm>,

где Em — множество сущностей предметной области, Rm- множество отношений между сущностями.

Каждая сущность описывается именем и обладает набором атрибутов.

E=<N, Ke, Ae>,

где N — имя сущности, Ke — множество ключевых атрибутов, а Ae — множество неключевых атрибутов сущности.

Конкретный атрибут сущности (ключевой либо неключевой) можно описать следующим образом:

A=<N, D>,

где N — наименование атрибута, D- домен атрибута.

Отношение (реляция) является аналогом связи в объектной модели, Отношение также описывает взаимосвязь между  сущностями.

R=<N, Er, Ro, Mr>,

где N — имя отношения, Er — множество сущностей, между которыми устанавливается отношение (количество элементов множества равно двум), Ro —  множеств ролей сущностей (количество элементов множества равно двум), Mr —  множество мощностей сущностей (количество элементов множества равно двум).

Роль в реляционном представлении описывается аналогично роли в объектной модели:

Ro=<N, E>,

где N — наименование роли, E — сущность, играющая данную роль

Мощность связи  можно описать следующим образом:

M = <E1, E2, V1, V2>,

где E1- первая сущность, для которой описывается мощность,  E2- вторая сущность, для которой описывается мощность, V1 — значение мощности для первой сущности отношения, V2  — для второй.

Реляционное представление вышеуказанной предметной области можно описать следующим образом:

Rv = <Em, Rm>

Реляционная модель содержит в себе 2 сущности

Em = {E1, E2}

E1 = < «Студент», Ke1, Ae1>

Ke1 =  {Ke11}

Ke11 = < «Идентификатор», «Число» >

Ae1 = {Ae11, Ae12, Ae13, Ae14}

Ae11 = < «Фамилия», «Строка» >

Ae12 = < «Имя», «Строка» >

Ae13 = < «Отчество», «Строка» >

Ae14 = < «Дата рождения», «Дата/время» >

E2 = < «Группа», Ke2, Ae2>

Ke2 =  {Ke21}

Ke21 = < «Идентификатор», «Число» >

Ae2 = {Ae21, Ae22, Ae23, Ae24}

Ae21 = < «Наименование», «Строка» >

Ae22 = < «Поток», «Число» >

Ae23 = < «Курс», «Число» >

Rm = {R1}

R1 = < «Обучение», {E1, E2}, {R1,R2}, {M1}>

R1 = < «Обучается», E1>

R2 = < «Содержит», E2>

M1 = < E1, E2, M, 1 >, где M — много

Выводы

Как можно заметить, представления(реляционное и объектное) имеют сходство. Объектное представление предметной области может служить расширением реляционного. В объектном представлении присутствует такое понятие, как «метод», которое не может быть соотнесено ни с одним понятием реляционного представления, поскольку в реляционном представлении описывается структура данных, а метод определяет способ поведения объекта, а не его свойства. Другие понятия, описывающие структуру данных, в объектной модели имеют расширенное представление.

Таким образом, встает задача преобразования расширенных свойств объектного представления предметной области для выражения их в терминах реляционной модели, а также обратное преобразование (для получения данных из БД).

Список использованных источников и литературы

1.    TIOBE Software: Tiobe index [Электронный ресурс]. – Режим доступа: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (дата обращения 03.01.2008).

2.    Фундаментально про объектно-ориентированное программирование [Электронный ресурс]. – Режим доступа: http://www.interface.ru/home.asp?artId=4382 (дата обращения 03.01.2008).

3.    Фаулер М, "Архитектура корпоративных приложений" / М.Фаулер — Вильямс, 2007 —544с. 

4.    Erich Gamma "Design Patterns: Elements of Reusable Object-Oriented Software" /Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides — Addison-Wesley Professional, 1994 — 416с.

5.    Кириллов В.В. "Введение в реляционные базы данных" / В.В.Кириллов, Г.Ю.Громов — СПб:БХВ-Петербург, 2008

6.    Диаграмма классов [Электронный ресурс]. – Режим доступа:  http://ru.wikipedia.org/wiki/Диаграмма_классов (дата обращения 03.01.2008).

7.    Entity-relationship model [Электронный ресурс]. – Режим доступа:  http://en.wikipedia.org/wiki/Entity-relationship_model (дата обращения 03.01.2008).

 

Основные термины (генерируются автоматически): предметной области, представление предметной области, следующим образом, реляционного представлений предметной, дата обращения 03.01.2008, представлений предметной области, Объектное представление предметной, элементов множества равно, количество элементов множества, объектного подхода, Электронный ресурс, объектного представления предметной, описание объектного, объектной модели, произвольной предметной области, разбиение предметной области, реляционной модели предметной, фрагмент предметной области, преобразования объектного представления, представление вышеуказанной предметной.

Ключевые слова

ООП, СУБД, база данных, объектный подход, объектно-реляционное преобразование, ORM

Обсуждение

Социальные комментарии Cackle
Задать вопрос