Р. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР4. Р. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР. Разработкаприложений sap r3Рюдигер Кречмерна языкеВольфганг Вейс
Скачать 28.36 Mb.
|
Глава 6 Моделирование сущностей и связей • Создание модели данных • Типы сущности модели • Связи между типами сущностей 70 Глава 6 Создание реальных прикладных программ обычно требует обработки большого количества таблиц и их связей по внешнему ключу, а получение всей информации о содержимом таблиц и их отношени- ях — довольно трудоемкий процесс. Методы графического представления обеспечивают простой и удоб- ный способ визуализации таблиц и их взаимосвязей. Используя Data Modeler — средства моделирования данных пакета Development Workbench, можно отображать модели сущность — связь и управлять ими в рамках графической интерпретации модели. Модель данных состоит из двух основных элементов: квадратиков, которые называются типами сущности (entity types) и отображают таблицы, и стрелок, показывающих связи между ними. По- скольку модель данных строится на основе Dictionary, изменения в определении таблицы автоматически отражаются в модели данных. Например, при добавлении поля в таблицу оно появляется и в соответ- ствующем типе сущности. Переходить к другим моделям данных и базовым таблицам в пределах Dic- tionary можно с помощью двойного щелчка мышью на управляющих элементах экрана. Это позволяет получить доступ к любому уровню вложенных меню. Простейшая модель данных В этом разделе в качестве примера рассматривается модель данных для заказов, принятая в турис- тическом агентстве, которое бронирует места на авиалинии и ведет базу данных клиентов. На этом примере показаны основные свойства модели данных и ее связей со Dictionary. В следующих главах ссылки на модель данных будут встречаться неоднократно при рассмотрении SQL-операторов или внутренних поэтому дуем сделать на этой странице закладку. В примере используется не только таблица всех клиентов туристического агентства, но и тельная информация: пункты назначения, их географическое положение, возможные маршруты между пунктами, авиалинии, списки рейсов и заказов на авиабилеты. Все это хранится в следующих таблицах: • customers (клиенты туриста кого агентства) • geocity (пункты назначения) • carriers (авиалинии или транспортные компании) • (потенциально возможные рейсы между пунктами назначения) • (реальные рейсы) • bookings (записи заказов клиентов на авиабилеты) Крайняя левая колонка таблицы customers (табл. 6.1) содержит номер клиента уникальный иден- тификатор для каждой записи таблицы, т.е. поле id является первичным ключом таблицы customers. Это поле ключа может использоваться всеми таблицами, связанными с таблицей customers (например, bookings). Однако связанная с конкретным клиентом информация содержится в полях name (фамилия), city (город), telephone (телефон) и хранится только в таблице customers. Это чтобы избежать дублирования данных. Таблица 6.1. Пример содержимого таблицы customers 00000001 Edwards Small 00000002 Young Village 00000017 Smith Big City 87654321 Edison Для таблицы geocity (табл. 6.2) первичным ключом является поле city, а другие поля определяют географическое положение указанного в поле city города. Моделирование сущностей и связей 71 Таблица 6.2 Пример содержимого таблицы geoclty Frankfurt 10 50 Madrid 1 Moscow 30 58 Paris 5 48 Таблица carriers (табл. содержит список авиакомпаний, который снабжен полем идентификатора компании (поле Поле используется в качестве первичного ключа. Зависимые данные включают: название авиакомпании и местную (для каждой компании) валюту. Таблица Пример содержимого таблицы carriers ABC ABC Airlines USD XYZ XYZ DEM ключ таблицы planfli (табл. 6.4) состоит из полей (идентификатор авиакомпании с контрольной carriers) и (идентификатор связи с пунктом назначения). Зависимые ванные включают информацию о конечном пункте авиалинии (берется из таблицы geocity), общее время полета и время отправления. Таблица 6.4 Пример содержимого таблицы planfli ABC 1000 Frankfurt Paris 1 081000 1234 Paris Frankfurt 1 175500 XYZ 0006 Madrid Moscow 5 163000 XYZ 0007 Frankfurt Madrid 3 093500 Как и для таблицы planfli, первичный ключ таблицы состоит из полей carrid, connid и (дата полета). Таблица planfli является контрольной полей carrid и eonnid. Информация о стоимости полета, курсе валют и числе запятых мест собрана в дополнительных полях (табл. Таблица 6.5 Пример содержимого таблицы actfli ABC 1000 19991230 200 DEM 110 ABC 19991230 DEM 010 ABC 1234 300 DEM 020 XYZ 0006 19990606 100 USD 175 XYZ 0007 19990505 USD 133 Первичный ключ таблицы bookings содержит поля carrid, и (идентификатор регистрации). Поля carrid, connid и fldate связаны по первичному ключу с таблицей Дополни- тельную информацию образуют идентификатор клиента (связанный с контрольной таблицей customers) и дата заказа (табл. 6.6). 72 Глава 6 Таблица 6.6 Пример содержимого таблицы bookings ABC 1000 19991230 001 00000017 19990101 1234 19991230 002 19991229 1234 19991231 00000017 19990101 XYZ 0006 19990606 008 00000001 XYZ 0007 007 87654321 На практике все эти таблицы должны включать большее число полей, в том числе, например, поле тип клиента, которое позволяет различать клиентов или турист). Так как данные, содержащиеся в этих таблицах, для разных приложений различны, в рабочей системе они имеют признак Client, т.е. поле типа в качестве САМОГО левого поля таблицы. Возможно наличие дополнительных полей, если они подразумеваются в дальнейшем. таблицы связаны между собой с помощью первичных ключей. Например, таб- лица geocity является контрольной таблицей полей и таблицы т.е. значения этих полей содержатся в — city одного из элементов таблицы Отношения такого типа отражаются в графическом представлении модели сущность — связь, зави- симость между таблицами показана направленными стрелками. В качестве примера на приве- дена модель туристического агентства. 6.1 Модель данных туристического агентства Типы сущности (узлы) соответствуют таблицам. Указав узел двойным щелчком мышью, можно получить на экране определение типа сущности и его описание. Точно так же с помощью мыши можно просмотреть структуру выделенной таблицы, дважды щелкнув на ее названии. Как показано в главе 5, вывод на экран содержимого таблицы осуществляется посредством Data Browser. Тип сущности модели данных может соответствовать нескольким физическим таблицам в базе данных. В этом случае говорят, что тип сущности связан с представлением, включающим ряд таблиц. соединяющие таблицы в модели данных, отображают отношения этих базовых типов сущ- ности. Например, ключевое (идентификатор авиакомпании) имеет контрольную таб- лицу т.е. таблицы и связаны отношением первичного ключа. Это показано с помощью стрелки, которая начинается в узле и указывает на левый край узла Поля и имеют контрольную таблицу Данная связь, обозначенная двумя стрелками, идет от узла левой (или верхней) границе узла planfli, поскольку эти поля не от- носятся к ключевым в таблице planfli. Таблица, на которую указывает стрелка, называется зависимой, так как ее элементы зависят от другой таблицы {от которой начинается стрелка). стрелки всегда направлены слева направо, зависимые располагаются Стрелка, указывающая на Моделирование сущностей и связей _ 73 левый край узла типа сущности, определяет, что поля данной зависимой таблицы связаны с независимой таблицей. Б то же время отношения между полями показаны стрелками, подходящими к верхнему или краю узла типа сущности. Выбор способа моделирования С теоретической ТОЧКИ зрения разработка модели данных является одним из первых шагов проек- тирования программного обеспечения. Только после этого в Dictionary определяются соответствующие таблицы, разрабатываются программы, экраны и другие выполняемые объекты, использующие эти структуры данных. Согласно данному способу проектирования (сверху вниз) модель должна быть пол- ностью завершена до написания первой строки кода. Однако на практике часто прихо- дится корректировать модель по время цикла системы. Причин для внесения таких изменений несколько: приложение работает как предполагалось, или пользователи предъявили дополнительные Реализуя другой способ — снизу вверх, можно строить модель на основе существующих таблиц и графически представлять отношения между ними. АВАР/4 Workbench поддерживает оба подхода: можно или начинать с модели данных и после этого строить выполняемые объекты (при этом используется только строить модель, иллюстрируя взаимоотношения между программами и определениями существующих таблиц. При этом из- менения в структуре таблицы будут отражаться на типах сущностей. В общем случае подход сверху вниз предпочтительнее для новых проектов, а подход снизу вверх — для реинжиниринга проектов крупных работающих систем. и сочетание этих двух стратегий разработки и внедрения. Модели данных, типы сущности, таблицы и представления Узловые элементы модели данных Это либо одна таблица базы дан- либо представление или нескольких таблиц. Поля этой таблицы, или представления на уровне модели, называются или типами я данные соответствующей таблицы или представления — создавать или моделью данных можно посредством Object Browser, выбрав опцию (моделирование объектов) и щелкнув мышью на кнопке Edit в части экрана. D выведенном на экран укажите имя модели данных (список возможных имен появляется при нажатии на клавишу Если программное имя типа сущности уже известно, выберите опцию Entity и задайте После выбора модели данных па экран текстовая инфор- ее определение (нижнее окно Definition на рис. 6.2 Определение модели данных TRAVEL 74 Глава 6 Б верхней части экрана модели данных содержится краткое описание и административная мация (дата внесения изменения и статус). Ниже, в следующей части экрана, приведено полное описание модели, доступное для редактирования при нажатии на кнопку Editor. Отображать, или изменять типы сущностей и можно с помощью кнопки Hierarchy па экране Data Model Рис. 6.3 Иерархическая структура модели данных На экране Hierarchy отображается имя данных (в нашем примере — туристическое агентство) и шесть типов В данном случае все шесть типов имеют один уровень, однако на практике уровни могут быть разными. Создание или изменение модели данных ДЛЯ ТОГО чтобы создать или изменить модель данных, задайте имя модели на экране утилиты Object Browser, введите краткое текстовое определение и отредактируйте иерархическую структуру модели, нажав кнопку Hierarchy. Дополнительные типы сущности можно задать на экране Hierarchy, щелкнув мышью на кнопке Subordinate (подчиненные типы) или используя следующую последовательность кно- пок: Modeling Objects > Insert (вставить) > On Level (на тот же уровень). Из списка появившегося диалогового окна выберите тип сущности и введите его. Здесь же задайте подмодель данных. Это зволит сгруппировать типы сущностей по их значению и из более мелких моделей данных строить большую модель. Графический редактор отображает каждую модель разными цветами — эта опция задается на экране определения модели (см. 6.2). Таким образом создается структурирован- ное изображение всей модели данных. В приведенном примере с туристическим агентством имеется только одна модель с типами сущности (соподчиненные модели не использовались), поэтому она дена на экране одним цветом. Иерархия модели представляет собой структурированный список всех подмоделей и типов сущности, однако она не отражает отношений между ними. Графический редактор позволяет отображать и вно- сить изменения во всю модель, в том числе во взаимосвязи. Прежде чем в графический экран, выберите одно или несколько поддеревьев вашей модели, нажав кнопку (вы- брать/отменить выбор поддеревьев). При можно запретить работу с отдельными ектами выбранного поддерева, отменив их помощью кнопки Node выбор узлового элемента). Графическое окно появляется при нажатии на кнопку Graphics (графика) иерархического экрана. На нем в графической форме отображаются все выбранные модели данных, типы сущности и их взаимосвязи Смысл стрелок, указанных на этом изображении, поясняется ниже в разделе и внешние ключи". Моделирование сущностей и связей 75 РИС. 6.4 Графическое изображение модели данных Отображение или изменение типа сущности ВЫВОДА НА ЭКРАН или изменения типа сущности дважды щелкните мышью на имени типа сущ- ности в графическом окне или в списке модели данных. Это приведет к переключению на экране кодового определения типа сущности (рис. 6.5). На рис. показано определение типа сущности CUSTOMERS. Краткий текст этого определения отображается в который относится к данному типу сущности в общей структуре гра- фической модели (см. рис. 6.4). Рис. 6.5 Определение типа сущности Центральная область экрана типа сущности содержит имя связанной с ним таблицы или ления, хранящегося в Dictionary. Связь можно создать либо изменить, на кнопку в тате чего на следующем экране появится отображение этого связанного с Dictionary объекта (например, таблица customers, как на рис. 6.6). На этом можно имя другой нужной таблицы или представления, выбрав в переключателе опцию Table или Щелкнув дважды на имени объекта Dictionary, с типом сущности, можно переключиться в окно определения этого объекта и вывести на экран поля, базовые элементы данных, их тип и раз- Поля связанной таблицы или представления атрибутами типа сущности в рамках модели доступ к которым можно получить, щелкнув на кнопке Attributes на экране определения типа сущности. На рис. приведен этот экран с данными, взятыми из нашего примера. На этом экране можно также задать другие 76 Глава 6 Рис. 6.6 Назначение таблицы в Dictionary типу сущности Рис. 6.7 Атрибуты типа сущности Как и атрибуты полей таблицы, типа должны иметь ссылку на элемент дан- ных Dictionary. Например, атрибут относящийся к типу сущности CUSTOMERS, имеет ссылку на элемент данных При разработке нисходящим способом в первую очередь следует определить атрибуты типа сущнос- ти. Затем можно определить связанную таблицу Dictionary, имеющую поля со ссылками на такие же элементы данных. Для этого дважды щелкните мышью на создайте ее и укажите Extras на экране сопровождения таблицы. В результате все поля данного типа сущности копируются в буфер обмена и могут вставляться в качестве полей таблицы с помощью опе- раций Edit (редактирование) Paste (восстановление). Моделирование сущностей и связей 77 Связи и внешние ключи Связь между типами с помощью исходного типа {независимого связанного) и целевого (зависимого). типы сущностей отображаются в левой полови- графического экрана, так как стрелки, всегда направлены слева направо. Существует два способа связи таблиц по внешнему ключу: ключевые поля, либо неключевые поля зависимой таблицы, ссылающиеся на независимую таблицу (контрольную). Другими словами, левой тип сущности внешнему ключу таблицы зависит по существованию от исходного, нет. Если на графическом экране стрелка указывает на левый угол прямоугольника, тип это означает, что поля ключа базовой зависимой таблицы связаны с независимой таблицей. Если же стрелки на верхнюю или нижнюю сторону прямоугольника, значит, свя- поля не принадлежат ключу. Связи между неключевыми полями зависимой таблицы уровне модели называются К ним относится, в частности, связь по внешнему ключу между и Связи по внешнему ключу между ключевыми разделяются на (hierarchical) и агреги- рующие иерархических связях тип сущности, зависимый по существованию, является или независимой сущности (refinement of the independent entity). Например, связь транспортной компании) с carriers-id считается иерархической. Каждый элемент таблицы planlli зависит от существования связанных элементов таблицы Целевой тип сущности агрегирующей связи зависит по крайней мере от двух исходных типов сущности. Зависимый по существованию тип сущности не является или уточнением, исходного типа. Ключевые поля агрегирующего типа сущности состоят ил ключевых полей независимых т.е. ключ зависи- таблицы содержит ключевые поля контрольной таблицы. Однако это не мешает иметь дополни- тельные поля, связанные с другой таблицей. Создание отношений, или связей Связи между типами сущностей можно двумя способами: • Нарисовать стрелку с помощью графического редактора • Определить входящую или исходящую связь в процессе работы с типом сущности Используя графический редактор в режиме сопровождения, нарисуйте связь, для чего щелкните мышью на кнопке Connect (соединить). Когда вершина курсора примет вид карандаша, соедините два типа сущнос- ти Есть еще один — указать (перейти) Ingoing (входящие связи) или (исходящие связи). В результате на экран выводится список всех связей. Чтобы создать новые, нажмите ил кнопку и укажите целевой тип сущности в появившемся диалоговом окне. Редактирование связи всегда осуществляется так, как на fi.8. Рис. 6.8 Создание отношении между сущностями CARRIERS и PLANFLI 78 Глава 6 В данном примере оба типа сущности, связанные отношением, появляются в верхней части экрана. В дальнейшем объясняется содержимое остальной части экрана. На экране сопровождения отношений типов сущности необходимо также задать значения в полях Category (категория) и Cardinality (количе- ство элементов). В дополнение к категориям, уже упоминавшимся в разделе "Связи и внешние ключи" (ссылочная, иерархическая и агрегирующая), можно, задав категорию "X", определить связь с внешним для системы объектом. Она называется связью (external relationship). Количество элементов должно быть указано как для исходного, так и для целевого типа На практике, если каждая исходная сущность имеет произвольное (неопределенное) число зависимых сущностей, обычно используется отношение 1:CN. Количество зависимых целевых объектов для одного исходного может быть равно нулю, единице или любому целому числу. Допустим, в нашем примере каждая авиакомпания может любое количество связей, т.е. отношение между carriers-id и равно 1:CN. Для такого количества элементов связи авиакомпания из таблицы carriers, возможно, не будет связана с таблицей Существуют и другие полезные значения отношений: (каждая исходная сущность связана только с одной зависимой) и 1:С (каждая исходная сущность связана макси- мально с одной зависимой). Если количество независимых типов сущности равно С, каждый зависимый тип имеет максимум один исходный. Если сущность есть частный случай общей сущности, их отношение можно предста- вить как отношение уточнения (specialization). Уточнение само по себе является отношением между сущ- ностями. Например, американская или немецкая авиакомпания — это авиакомпании. Поэтому, если необходимо, можно определить уточнение для сущности carriers: и В техническом аспекте уточнение может рассматриваться как выбор представления таблицы. На графическом экране уточнение отображается границами, отмеченными закрашенным треугольником. Создать или изменить уточнение типа сущности можно с помощью кнопки Spec (уточнить). В проектах реинжиниринга реальных систем отношения между сущностями не всегда представляют собой связи по внешнему ключу между базовыми таблицами Dictionary. Они могут устанавливаться даже с помощью специальных программ доступа к базам данных, например Logical Database (см. главу Резюме • Модель данных приложения можно создавать и сопровождать (вносить изменения) графическим способом, используя Data Modeler - средства моделирования данных пакета Development Work- bench АВАР/4. • Data Modeler обеспечивает размещение моделей в Dictionary. • Тип сущности представляет собой либо одну таблицу базы данных, либо представление, созданное из нескольких таблиц базы. • Поля таблицы, или представления, называются атрибутами типа сущности. Элементы вующих таблиц или представлений называются сущностями. • Связь по внешнему ключу ключевых полей называется ссылочными отношениями модели данных. • Связь по внешнему ключу ключевых полей с единственной независимой таблицей называется ие- рархической, а связь по внешнему ключу ключевых полей с набором независимых таблиц — агрегирующей. • Если какая-либо сущность является частным случаем более общей сущности, их отношение назы- вается уточнением. В следующей части рассматриваются простейшие конструкции языка АВАР/4. В главе 7 рассказыва- ется, как работать с различными типами данных. |