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

Киндюк К. В. Формальное описание объектного и реляционного представлений предметной области // Молодой ученый. — 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).

 

Обсуждение

Социальные комментарии Cackle