Министерствообразования и науки РФФедеральноеагентство по образованию
Государственное образовательное учреждение высшегопрофессионального образования
Отчёт
по курсовойработе
по курсу:«Проектирование АСОИУ»
на тему:
«Проектирование РБД “Санатория” спомощью инструментария AllFusionERwinDataModeler»
Выполнили
Проверила:
2007
1. Цель работы:
Изучение возможностей AllFusion ERwin Data Modeler, проектирование реляционной БД на основе методологии IDEF1x.
2. Методология проектирования:
ERwin Data Modeler поддерживаетнотации проектирования данныхIDEF1х, IE и Dimensional.
IDEF1X является методом для разработкиреляционных баз данных и использует условный синтаксис, специальноразработанный для удобного построения концептуальной схемы.
Концептуальной схемой мы называем универсальноепредставление структуры данных в рамках коммерческого предприятия, независимоеот конечной реализации базы данных и аппаратной платформы. Будучи статическимметодом разработки, IDEF1X изначально не предназначен для динамического анализапо принципу «AS IS», тем не менее, он иногда применяется в этомкачестве, как альтернатива методу IDEF1. Использование метода IDEF1X наиболеецелесообразно для построения логической структуры базы данных после того, каквсе информационные ресурсы исследованы (скажем с помощью метода IDEF1) ирешение о внедрении реляционной базы данных, как части корпоративнойинформационной системы, было принято.
Сущность в IDEF1Xописывает собой совокупность или набор экземпляров похожих по свойствам, нооднозначно отличаемых друг от друга по одному или нескольким признакам. Каждыйэкземпляр является реализацией сущности. Таким образом, сущность в IDEF1Xописывает конкретный набор экземпляров реального мира, в отличие от сущности вIDEF1, которая представляет собой абстрактный набор информационных отображенийреального мира. Примером сущности IDEF1X может быть сущность«СОТРУДНИК», которая представляет собой всех сотрудников предприятия,а один из них, скажем, Иванов Петр Сергеевич, является конкретной реализациейэтой сущности.
/>Связи вIDEF1X представляют собой ссылки, соединения и ассоциации между сущностями.Связи это суть глаголы, которые показывают, как соотносятся сущности междусобой. Ниже приведен ряд примеров связи между сущностями:
Отдел нескольких Сотрудников
Самолет нескольких Пассажиров.
Сотрудник разные Отчеты.
Во всех перечисленныхпримерах взаимосвязи между сущностями соответствуют схеме один ко многим.Это означает, что один экземпляр первой сущности связан с несколькимиэкземплярами второй сущности. Причем первая сущность называется родительской, авторая — дочерней. В приведенных примерах глаголы заключены в угловые скобки.Связи отображаются в виде линии между двумя сущностями с точкой на одном концеи глагольной фразой, отображаемой над линией.
Отношения многие комногим обычно используются на начальной стадии разработки диаграммы, например,в диаграмме зависимости сущностей и отображаются в IDEF1X в виде сплошной линиис точками на обоих концах. Так как отношения многие ко многим могут скрытьдругие бизнес правила или ограничения, они должны быть полностью исследованы наодном из этапов моделирования. Например, иногда отношение многие ко многим наранних стадиях моделирования идентифицируется неправильно, на самом делепредставляя два или несколько случаев отношений один-ко-многим между связаннымисущностями. Или, в случае необходимости хранения дополнительных сведений освязи многие-ко-многим, например, даты или комментария, такая связь должна бытьзаменена дополнительной сущностью, содержащей эти сведения. При моделированиинеобходимо быть увереным в том, что все отношения многие ко многим будутподробно обсуждены на более поздних стадиях моделирования для обеспеченияправильного моделирования отношений.
/>Сущностьописывается в диаграмме IDEF1X графическим объектом в виде прямоугольника.Каждый прямоугольник, отображающий собой сущность, разделяется горизонтальнойлинией на часть, в которой расположены ключевые поля и часть, где расположенынеключевые поля. Верхняя часть называется ключевой областью, а нижняя частьобластью данных. Ключевая область объекта СОТРУДНИК содержит поле«Уникальный идентификатор сотрудника», в области данных находятсяполя «Имя сотрудника», «Адрес сотрудника», «Телефонсотрудника» и т.д.
Ключевая область содержитпервичный ключдля сущности. Первичный ключ — это набор атрибутов,выбранных для идентификации уникальных экземпляров сущности. Атрибутыпервичного ключа располагаются над линией в ключевой области. Как следует изназвания, неключевой атрибут — это атрибут, который не был выбран ключевым.Неключевые атрибуты располагаются под чертой, в области данных.
3. Возможности инструментарияпроектирования:
AllFusion ERwin Data Modeler (ранее:ERwin) позволяетпроектировать, документировать и сопровождать базы данных, хранилища данных ивитрины данных (data marts). Создав наглядную модель базы данных, можнооптимизировать структуру БД и добиться её полного соответствия требованиям изадачам организации. Визуальное моделирование повышает качество создаваемойбазы данных, продуктивность и скорость её разработки.
/>/>Руководители проектов могут с помощью ERwin Data Modeler тщательнозадокументировать структуру БД, получить отчеты презентационного качества иобеспечить эффективное управление проектом, используя среду для совместного проектированияAllFusion Model Manager (ранее: ModelMart).
Поскольку ERwin DataModeler поддерживает работу с БД на физическом уровне, учитывая особенностикаждой конкретной СУБД, администраторы БД могут с его помощью максимальноповысить производительность информационной системы. Разработчики с помощьюERwin Data Modeler могут сначала, используя визуальные средства, описать схемуБД, а затем автоматически сгенерировать файлы данных для выбранной реляционнойСУБД (прямое проектирование). Автоматически генерируются также триггеры,обеспечивающие ссылочную целостность БД. ERwin Data Modeler поддерживаетнотации проектирования данныхIDEF1х, IE и Dimensional.
Пользователь описываетструктуру данных визуально. Он задает служащие прообразами реляционных таблиц сущностис их атрибутами и при помощи мыши «натягивает» между ними связи,которые являются прототипами реляционных отношений.
ERwin Data Modelerпозволяет по уже существующим файлам БД восстанавливать логическую структуруданных. Это называется обратным проектированием. Оно позволяет, во-первых,переносить структуру БД (но не данные!) из одной СУБД в другую и, во-вторых,исследовать старые проекты. Этот процесс наиболее распространен при переходе содной технологии на другую (с файл-сервер на клиент-сервер), а также при сменесервера БД. На основе модели данных предоставляется возможность создаватьотчеты, которые позволяют существенно упростить процесс документированиятехнического проекта.
ERwin поддерживает прямоеи обратное проектирование 20 типов баз данных различных производителей, отнастольных до реляционных СУБД и специализированных СУБД, предназначенных длясоздания хранилищ данных.
Основные характеристики AllFusionERwin Data Modeler
· Поддержкастандартной нотации IDEF1x для ER-диаграмм моделей данных, нотации IE испециальной нотации, предназначенной для проектирования хранилищ данных — Dimensional.
· Поддержкапроектирования информационных хранилищ (на основе Red Brick и Teradata)
· Поддержкасовместного проектирования (версия для ModelMart)
· Поддержкатриггеров, хранимых процедур и шаблонов
· Развитые средствапроверки корректности моделей данных Reverse Engineering (генерация моделиданных на основе анализа существующей базы данных), включая восстановление связейпо индексам
· Автоматическаягенерация SQL DDL для создания баз данных
· Полнаясовместимость и поддержка 20-ти типов СУБД на основе прямого доступа ксистемному каталогу баз данных (отпадает потребность в использовании ODBC).
4. Описание предметной области:
В данной лабораторной работе вкачестве предметной области выступает «Санаторий». Данные, которые необходимохранить в базе данных:
· Информация об отделениях,из которых состоит санаторий (например, медчасть, спортивный комплекс,пищеблок);
· Информация осекторах, из которых состоят отделения санатория;
· Информация орабочих местах;
· Сведения осотрудниках, предоставляющих услуги в санатории;
· Функции,выполняемые сотрудниками;
· Информация обусловиях проживания в санатории.
Деятельность санатория заключается впредоставлении услуг клиентам, направляемых предприятиями для повышения уровня здоровья служащихпредприятий с целью компенсации воздействия на организм вредных факторов.
5. Сущности и атрибуты:
В данной лабораторнойработе при проектировании БД «Санатория» используются следующие сущности ссоответствующими атрибутами:
· Отделение;
Ø Наименование;
Ø Юридическийадрес.
· Сектор;
Ø Наименование.
· Рабочее место:
Ø Наименование.
· Сотрудник;
Ø Фамилия;
Ø Имя;
Ø Отчество;
Ø Адрес;
Ø Зарплата;
Ø Год рождения;
Ø № страховогополиса;
Ø Дата приема наработу.
· Функция;
Ø Наименование.
· Автотранспорт;
Ø Гос.номер;
Ø Марка;
Ø Срокэксплуатации;
Ø Техосмотр.
· Клиент;
Ø Фамилия;
Ø Имя;
Ø Отчество;
Ø Адрес;
Ø № страховогополиса;
Ø Год рождения.
· Путевка;
Ø Период;
Ø Стоимость;
Ø Количествочеловек.
· Жил.комплекс.
Ø № комнаты;
Ø Мебель;
Ø Площадь;
Ø Количествокойка-мест;
Ø Условия.
· Предприятие-отправитель:
Ø Наименование;
Ø Юридическийадрес;
Ø № договора.
6. Связи между сущностями:
В IDEF1X концепциязависимых и независимых сущностей усиливается типом взаимосвязей между двумясущностями. Если вы хотите, чтобы внешний ключ передавался в дочернюю сущность(и, в результате, создавал зависимую сущность), то можете создать идентифицирующуюсвязь между родительской и дочерней сущность.
Идентифицирующиевзаимосвязи обозначаются сплошной линией между сущностями.
Неидентифицирующие связи,являющиеся уникальными для IDEF1X, также связывают родительскую сущность сдочерней. Неидентифицирующие связи используются для отображения другого типапередачи атрибутов внешних ключей — передача в область данных дочерней сущности(под линией).
Неидентифицирующие связиотображаются пунктирной линией между объектами. Так как переданные ключи внеидентифицирующей связи не являются составной частью первичного ключа дочернейсущности, то этот вид связи не проявляется ни в одной идентифицирующейзависимости. В этом случае и ОТДЕЛ, и СОТРУДНИК рассматриваются как независимыесущности.
При проектировании БДСанатория определены следующие связи между сущностями:
· Отделение состоитиз секторов (один-ко-многим);
· Отделениеобслуживает клиентов (многие-ко-многим);
· Сектор состоит израбочих мест (один-ко-многим);
· Рабочее местопредоставляется сотруднику (один-ко-многим):
· Функциивыполняется на рабочем месте (один-ко-многим);
· Автотранспортпринадлежит отделению (один-ко-многим);
· Клиент имеетпутевку (один-ко-многим);
· Клиент работаетна предприятии (один-ко-многим);
· Жил.комплекспредоставляется клиенту (один-ко-многим);
· Предприятие-отправительпредоставляет путевки (один-ко-многим);
/>
Рис.1.Логический уровень проектирования БД
7. Переход на физический уровень.Процесс преобразования связи многие-ко-многим:
При переходе на физический уровеньособого внимания заслуживают такие типы связей как “многие-ко-многим” и«супертипа с подтипами».
Стандарт EDEF1X допускает присутствиев модели обоих типов связей. Однако без их разрешения физическая база данныхбудет далека от оптимальной. ERwin предоставляет возможность разрешения этихсвязей.
Стандартным разрешением связи“многие-ко-многим” является механизм, показанный на рис. 3.
/>
Рис.2. Разрешение связи «многие-ко-многим»
На логическом уровне проектированияБД существовала связь «многие-ко-многим» между сущностями Отделение и Клиент. Врезультате перехода на физический уровень образовалась дополнительная сущностьс соответствующей областью первичных ключей:
/>
Рис.3Переход на физический уровень
8. Скрипт для создания БД в Access:
‘ Starting Access Basic DAOSession…
DimERwinWorkspace As Workspace
DimERwinDatabase As Database
DimERwinTableDef As TableDef
Dim ERwinQueryDefAs QueryDef
Dim ERwinIndexAs Index
Dim ERwinFieldAs Field
DimERwinRelation As Relation
SetERwinWorkspace = DBEngine.WorkSpaces(0)
SetERwinDatabase = ERwinWorkspace.OpenDatabase(sERwinDatabase)
‘ CREATETABLE «Client»
SetERwinTableDef = ERwinDatabase.CreateTableDef(«Client»)
Set ERwinField= ERwinTableDef.CreateField(«ID client», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«ID enterprise», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Number of flat», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Surname», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Name», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Lastname», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Address», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Insurance policy», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Birthday», DB_DATETIME)
ERwinTableDef.Fields.AppendERwinField
ERwinDatabase.TableDefs.AppendERwinTableDef
‘ CREATEINDEX «PrimaryKey»
SetERwinTableDef = ERwinDatabase.TableDefs(«Client»)
Set ERwinIndex= ERwinTableDef.CreateIndex(«PrimaryKey»)
Set ERwinField= ERwinIndex.CreateField(«ID client»)
ERwinIndex.Fields.AppendERwinField
Set ERwinField= ERwinIndex.CreateField(«ID enterprise»)
ERwinIndex.Fields.AppendERwinField
Set ERwinField= ERwinIndex.CreateField(«Number of flat»)
ERwinIndex.Fields.AppendERwinField
ERwinIndex.Primary= True
ERwinTableDef.Indexes.AppendERwinIndex
‘ CREATETABLE «Department»
SetERwinTableDef = ERwinDatabase.CreateTableDef(«Department»)
Set ERwinField= ERwinTableDef.CreateField(«ID department», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Department name», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Legal address», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
ERwinDatabase.TableDefs.AppendERwinTableDef
‘ CREATEINDEX «PrimaryKey»
SetERwinTableDef = ERwinDatabase.TableDefs(«Department»)
Set ERwinIndex= ERwinTableDef.CreateIndex(«PrimaryKey»)
Set ERwinField= ERwinIndex.CreateField(«ID department»)
ERwinIndex.Fields.AppendERwinField
ERwinIndex.Primary= True
ERwinTableDef.Indexes.AppendERwinIndex
‘ CREATETABLE «Department_Client»
SetERwinTableDef = ERwinDat base.CreateTableDef(«Department_Client»)
Set ERwinField= ERwinTableDef.CreateField(«ID department», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«ID client», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«ID enterprise», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Number of flat», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
ERwinDatabase.TableDefs.AppendERwinTableDef
‘ CREATEINDEX «PrimaryKey»
SetERwinTableDef = ERwinDatabase.TableDefs(«Department_Client»)
Set ERwinIndex= ERwinTableDef.CreateIndex(«PrimaryKey»)
Set ERwinField= ERwinIndex.CreateField(«ID department»)
ERwinIndex.Fields.AppendERwinField
Set ERwinField= ERwinIndex.CreateField(«ID client»)
ERwinIndex.Fields.AppendERwinField
Set ERwinField= ERwinIndex.CreateField(«ID enterprise»)
ERwinIndex.Fields.AppendERwinField
Set ERwinField= ERwinIndex.CreateField(«Number of flat»)
ERwinIndex.Fields.AppendERwinField
ERwinIndex.Primary= True
ERwinTableDef.Indexes.AppendERwinIndex
‘ CREATETABLE «Enterprise-sender»
SetERwinTableDef = ERwinDatabase.CreateTableDef(«Enterprise-sender»)
Set ERwinField= ERwinTableDef.CreateField(«ID enterprise», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Name», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Legal address», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Number contract», DB_INTEGER)
ERwinTableDef.Fields.AppendERwinField
ERwinDatabase.TableDefs.AppendERwinTableDef
‘ CREATEINDEX «PrimaryKey»
SetERwinTableDef = ERwinDatabase.TableDefs(«Enterprise-sender»)
Set ERwinIndex= ERwinTableDef.CreateIndex(«PrimaryKey»)
Set ERwinField= ERwinIndex.CreateField(«ID enterprise»)
ERwinIndex.Fields.AppendERwinField
ERwinIndex.Primary= True
ERwinTableDef.Indexes.AppendERwinIndex
‘ CREATETABLE «Function»
SetERwinTableDef = ERwinDatabase.CreateTableDef(«Function»)
Set ERwinField= ERwinTableDef.CreateField(«ID function», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«ID work place», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«ID sector», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Function’s name», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
ERwinDatabase.TableDefs.AppendERwinTableDef
‘ CREATEINDEX «PrimaryKey»
Set ERwinTableDef= ERwinDatabase.TableDefs(«Function»)
Set ERwinIndex= ERwinTableDef.CreateIndex(«PrimaryKey»)
Set ERwinField= ERwinIndex.CreateField(«ID function»)
ERwinIndex.Fields.AppendERwinField
Set ERwinField= ERwinIndex.CreateField(«ID work place»)
ERwinIndex.Fields.AppendERwinField
Set ERwinField= ERwinIndex.CreateField(«ID sector»)
ERwinIndex.Fields.AppendERwinField
ERwinIndex.Primary= True
ERwinTableDef.Indexes.AppendERwinIndex
‘ CREATETABLE «Housing estate»
SetERwinTableDef = ERwinDatabase.CreateTableDef(«Housing estate»)
Set ERwinField= ERwinTableDef.CreateField(«Number of flat», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Furniture», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Area», DB_INTEGER)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Quantity of places», DB_INTEGER)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Condition», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
ERwinDatabase.TableDefs.AppendERwinTableDef
‘ CREATEINDEX «PrimaryKey»
SetERwinTableDef = ERwinDatabase.TableDefs(«Housing estate»)
Set ERwinIndex= ERwinTableDef.CreateIndex(«PrimaryKey»)
Set ERwinField= ERwinIndex.CreateField(«Number of flat»)
ERwinIndex.Fields.AppendERwinField
ERwinIndex.Primary= True
ERwinTableDef.Indexes.AppendERwinIndex
‘ CREATETABLE «Motor transport»
SetERwinTableDef = ERwinDatabase.CreateTableDef(«Motor transport»)
Set ERwinField= ERwinTableDef.CreateField(«State number», DB_TEXT, 18)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«ID department», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Car’s brand», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Explotation time», DB_DATETIME)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Date maintenance», DB_DATETIME)
ERwinTableDef.Fields.AppendERwinField
ERwinDatabase.TableDefs.AppendERwinTableDef
‘ CREATEINDEX «PrimaryKey»
SetERwinTableDef = ERwinDatabase.TableDefs(«Motor transport»)
Set ERwinIndex= ERwinTableDef.CreateIndex(«PrimaryKey»)
Set ERwinField= ERwinIndex.CreateField(«State number»)
ERwinIndex.Fields.AppendERwinField
ERwinIndex.Primary= True
ERwinTableDef.Indexes.AppendERwinIndex
‘ CREATETABLE «Permit»
SetERwinTableDef = ERwinDatabase.CreateTableDef(«Permit»)
Set ERwinField= ERwinTableDef.CreateField(«ID permit», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«ID client», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«ID enterprise», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Number of flat», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Period», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Cost», DB_INTEGER)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«People quantity», DB_INTEGER)
ERwinTableDef.Fields.AppendERwinField
ERwinDatabase.TableDefs.AppendERwinTableDef
‘ CREATEINDEX «PrimaryKey»
SetERwinTableDef = ERwinDatabase.TableDefs(«Permit»)
Set ERwinIndex= ERwinTableDef.CreateIndex(«PrimaryKey»)
Set ERwinField= ERwinIndex.CreateField(«ID permit»)
ERwinIndex.Fields.AppendERwinField
Set ERwinField= ERwinIndex.CreateField(«ID client»)
ERwinIndex.Fields.AppendERwinField
Set ERwinField= ERwinIndex.CreateField(«ID enterprise»)
ERwinIndex.Fields.AppendERwinField
Set ERwinField= ERwinIndex.CreateField(«Number of flat»)
ERwinIndex.Fields.AppendERwinField
ERwinIndex.Primary= True
ERwinTableDef.Indexes.AppendERwinIndex
‘ CREATETABLE «Sector»
SetERwinTableDef = ERwinDatabase.CreateTableDef(«Sector»)
Set ERwinField= ERwinTableDef.CreateField(«ID sector», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«ID department», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Sector name», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
ERwinDatabase.TableDefs.AppendERwinTableDef
‘ CREATEINDEX «PrimaryKey»
SetERwinTableDef = ERwinDatabase.TableDefs(«Sector»)
Set ERwinIndex= ERwinTableDef.CreateIndex(«PrimaryKey»)
Set ERwinField= ERwinIndex.CreateField(«ID sector»)
ERwinIndex.Fields.AppendERwinField
ERwinIndex.Primary= True
ERwinTableDef.Indexes.AppendERwinIndex
‘ CREATETABLE «Work place»
SetERwinTableDef = ERwinDatabase.CreateTableDef(«Work place»)
Set ERwinField= ERwinTableDef.CreateField(«ID work place», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«ID sector», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Name work place», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
ERwinDatabase.TableDefs.AppendERwinTableDef
‘ CREATEINDEX «PrimaryKey»
SetERwinTableDef = ERwinDatabase.TableDefs(«Work place»)
Set ERwinIndex= ERwinTableDef.CreateIndex(«PrimaryKey»)
Set ERwinField= ERwinIndex.CreateField(«ID work place»)
ERwinIndex.Fields.AppendERwinField
Set ERwinField= ERwinIndex.CreateField(«ID sector»)
ERwinIndex.Fields.AppendERwinField
ERwinIndex.Primary= True
ERwinTableDef.Indexes.AppendERwinIndex
‘ CREATETABLE «Worker»
SetERwinTableDef = ERwinDatabase.CreateTableDef(«Worker»)
Set ERwinField= ERwinTableDef.CreateField(«ID of worker», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«ID work place», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«ID sector», DB_INTEGER)
ERwinField.Required= True
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Surname», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Name», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Lastname», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Address», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Pay», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Birthday», DB_DATETIME)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Insurance policy», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
Set ERwinField= ERwinTableDef.CreateField(«Delivery date of work», DB_TEXT, 18)
ERwinTableDef.Fields.AppendERwinField
ERwinDatabase.TableDefs.AppendERwinTableDef
‘ CREATEINDEX «PrimaryKey»
SetERwinTableDef = ERwinDatabase.TableDefs(«Worker»)
Set ERwinIndex= ERwinTableDef.CreateIndex(«PrimaryKey»)
Set ERwinField= ERwinIndex.CreateField(«ID of worker»)
ERwinIndex.Fields.AppendERwinField
Set ERwinField= ERwinIndex.CreateField(«ID work place»)
ERwinIndex.Fields.AppendERwinField
Set ERwinField= ERwinIndex.CreateField(«ID sector»)
ERwinIndex.Fields.AppendERwinField
ERwinIndex.Primary= True
ERwinTableDef.Indexes.AppendERwinIndex
‘ CREATERELATIONSHIP «Send»
SetERwinRelation = ERwinDatabase.CreateRelation(«Send»,«Enterprise-sender», «Client»)
Set ERwinField= ERwinRelation.CreateField(«ID enterprise»)
ERwinField.ForeignName= «ID enterprise»
ERwinRelation.Fields.AppendERwinField
ERwinDatabase.Relations.AppendERwinRelation
‘ CREATERELATIONSHIP «Belong to»
SetERwinRelation = ERwinDatabase.CreateRelation(«Belong to»,«Housing estate», «Client»)
Set ERwinField= ERwinRelation.CreateField(«Number of flat»)
ERwinField.ForeignName= «Number of flat»
ERwinRelation.Fields.AppendERwinField
ERwinDatabase.Relations.AppendERwinRelation
‘ CREATERELATIONSHIP «R/12»
SetERwinRelation = ERwinDatabase.CreateRelation(«R/12»,«Client», «Department_Client»)
Set ERwinField= ERwinRelation.CreateField(«ID client»)
ERwinField.ForeignName= «ID client»
ERwinRelation.Fields.AppendERwinField
Set ERwinField= ERwinRelation.CreateField(«ID enterprise»)
ERwinField.ForeignName= «ID enterprise»
ERwinRelation.Fields.AppendERwinField
Set ERwinField= ERwinRelation.CreateField(«Number of flat»)
ERwinField.ForeignName= «Number of flat»
ERwinRelation.Fields.AppendERwinField
ERwinDatabase.Relations.AppendERwinRelation
‘ CREATERELATIONSHIP «R/11»
SetERwinRelation = ERwinDatabase.CreateRelation(«R/11»,«Department», «Department_Client»)
Set ERwinField= ERwinRelation.CreateField(«ID department»)
ERwinField.ForeignName= «ID department»
ERwinRelation.Fields.AppendERwinField
ERwinDatabase.Relations.AppendERwinRelation
‘ CREATERELATIONSHIP «perform»
SetERwinRelation = ERwinDatabase.CreateRelation(«perform», «Workplace», «Function»)
Set ERwinField= ERwinRelation.CreateField(«ID work place»)
ERwinField.ForeignName= «ID work place»
ERwinRelation.Fields.AppendERwinField
Set ERwinField= ERwinRelation.CreateField(«ID sector»)
ERwinField.ForeignName= «ID sector»
ERwinRelation.Fields.AppendERwinField
ERwinDatabase.Relations.AppendERwinRelation
‘ CREATERELATIONSHIP «Provide»
SetERwinRelation = ERwinDatabase.CreateRelation(«Provide», «Department»,«Motor transport»)
Set ERwinField= ERwinRelation.CreateField(«ID department»)
ERwinField.ForeignName= «ID department»
ERwinRelation.Fields.AppendERwinField
ERwinDatabase.Relations.AppendERwinRelation
‘ CREATERELATIONSHIP «Have»
SetERwinRelation = ERwinDatabase.CreateRelation(«Have»,«Client», «Permit»)
Set ERwinField= ERwinRelation.CreateField(«ID client»)
ERwinField.ForeignName= «ID client»
ERwinRelation.Fields.AppendERwinField
Set ERwinField= ERwinRelation.CreateField(«ID enterprise»)
ERwinField.ForeignName= «ID enterprise»
ERwinRelation.Fields.AppendERwinField
Set ERwinField= ERwinRelation.CreateField(«Number of flat»)
ERwinField.ForeignName= «Number of flat»
ERwinRelation.Fields.AppendERwinField
ERwinDatabase.Relations.AppendERwinRelation
‘ CREATERELATIONSHIP «Give to»
SetERwinRelation = ERwinDatabase.CreateRelation(«Give to», «Enterprise-sender»,«Permit»)
Set ERwinField= ERwinRelation.CreateField(«ID enterprise»)
ERwinField.ForeignName= «ID enterprise»
ERwinRelation.Fields.AppendERwinField
ERwinDatabase.Relations.AppendERwinRelation
‘ CREATERELATIONSHIP «Consist of»
SetERwinRelation = ERwinDatabase.CreateRelation(«Consist of», «Department»,«Sector»)
Set ERwinField= ERwinRelation.CreateField(«ID department»)
ERwinField.ForeignName= «ID department»
ERwinRelation.Fields.AppendERwinField
ERwinDatabase.Relations.AppendERwinRelation
‘ CREATERELATIONSHIP «Consist of»
SetERwinRelation = ERwinDatabase.CreateRelation(«Consist of»,«Sector», «Work place»)
Set ERwinField= ERwinRelation.CreateField(«ID sector»)
ERwinField.ForeignName= «ID sector»
ERwinRelation.Fields.AppendERwinField
ERwinDatabase.Relations.AppendERwinRelation
‘ CREATERELATIONSHIP «Give to»
SetERwinRelation = ERwinDatabase.CreateRelation(«Give to», «Workplace», «Worker»)
Set ERwinField= ERwinRelation.CreateField(«ID work place»)
ERwinField.ForeignName= «ID work place»
ERwinRelation.Fields.AppendERwinField
Set ERwinField= ERwinRelation.CreateField(«ID sector»)
ERwinField.ForeignName= «ID sector»
ERwinRelation.Fields.AppendERwinField
ERwinDatabase.Relations.AppendERwinRelation
ERwinDatabase.Close
ERwinWorkspace.Close
‘ TerminatingAccess Basic DAO Session…
Вывод:
В процессе выполнения даннойлабораторной работы были изучены основы работы в AllFusion ERwin DataModeler, а также определена предметная область, основные сущности БД,информация о которых должна содержаться в базе данных, первичные ключисущностей, их атрибуты и связи между ними.
AllFusion ERwin DataModelerпозволяетпроектировать, документировать и сопровождать базы данных, хранилища данных ивитрины данных (data marts). Создав наглядную модель базы данных, можнооптимизировать структуру БД и добиться её полного соответствия требованиям изадачам организации. Визуальное моделирование повышает качество создаваемойбазы данных, продуктивность и скорость её разработки
Литература:
1. Маклаков С.В.CASE-средства разработки информационных систем. BPwin и Erwin –М.: ДиалогМифи,2001.
2. ПостановлениеПравительства РФ «О мерах по организаии индивидуального (персонифицированного)учета для целей государственного пенсионного страхования».
3. Федеральный закон«Об индивидуальном (персонифицированном) учете в системе государственногопенсионного страхования».
4. Инструкция опорядке ведения индивидуального (персонифицированного) учета сведений озастрахованных лицах для целей государственного пенсионного страхования.
5. «О формахдокументов индивидуального (персонифицированного) учета в системегосударственного пенсионного страхования и инструкции по их заполнению»