Добавлен: 15.11.2018
Просмотров: 757
Скачиваний: 16
родовой
предок
Сотрудник
Табельный номер
Фамилия
Имя
Отчество
Дата рождения
Должность
категориальная
сущность (потомок)
Сущность
консультант не снесена в иерархию
наследованияНеполная категория
Постоянный Совместитель
с отрудник
Т абельный номер (FK) Табельный номер (FK)
Ставка
Иерархию наследования создают, когда несколько сущностей имеют общие по смыслу атрибуты, либо когда сущности имеют общие по смыслу связи
О
Особенность:
Одна таблица через одно поле связана
в двумя или более таблицами !
Работает (общая по смыслу связь)
Постоянный Совместитель
сотрудник
Полные и неполные категории
В полной категории каждому экземпляру родового предка обязательно соответствует экземпляр в каком -либо потомке, т.е. каждый служащий обязательно является либо совместителем, либо консультантом, либо постоянным сотрудником.
Категория может быть еще не выстроена полностью. Тогда в родовом предке могут существовать экземпляры, которые не имеют соответствующих экземпляров в потомках. Такая категория будет неполной.
С
Полная категория
Все
Сущности внесены в иерархию наследования
отрудник
Символ
категории
Фамилия
Имя
Отчество
Дата рождения
Должность
категориальная
сущность (потомок)
Тип
Постоянный Совместитель Консультант
с отрудник
Т абельный номер (FK) Табельный номер (FK) Табельный номер (FK)
Ставка Организация
Комбинация полной и неполной категорий
Сотрудник
Тип
Постоянный Совместитель
сотрудник
Пол
Муж Жен
Создание категориальной связи
-
установить курсор на кнопке о в палитре инструментов и ЛК мыши
-
щелкнуть сначала по родовому предку, потом - по потомку
-
для установления второй связи в иерархии категорий сначала щелкнуть по символу категории, потом по второму потомку
Редактирование категории - ПЩ по символу категории В контекстном меню - пункт - Subtype Relationship Editor. Указать дискриминатор категории (Discriminator Attribute Choice) (например - атрибут Тип в родовом предке) и тип категории - полная/неполная (Complete/Incomplete).
Стадии построения иерархии наследования
-
Определение сущностей с общими (по определению) атрибутами
пример 1: Постоянный сотрудник и Совместитель
пример 2:Транзисторы низкочастотные, транзисторы высокочастотные
-
Перенос общих атрибутов в сущность - родовой предок
пример 1: Постоянный сотрудник и Совместитель - > Сотрудник
пример 2:Транзисторы низкочастотные, транзисторы высокочастотные -> транзистор
-
Создание неполной структуры категорий
Создается категориальная связь от новой сущности - родового предка - к старым сущностям - потомкам. Новая сущность дополняется атрибутом-дискриминатором категории - тип
-
Создание полной структуры категорий
Производится дополнительный поиск сущностей, имеющих общие по смыслу атрибуты с родовым предком. Общие атрибуты переносятся в родового предка и категория преобразуется в полную. Некоторые не общие атрибуты могут быть перенесены в сущность-потомка.
пример1: консультант
пример 2 : транзисторы сверхвысокочастотные.
-
Комбинация полной и неполной структур категорий
При необходимости создание иерархии категорий можно продолжить
Пример создания модели
Логическая модель
Создание модели - диалог
Настройка сервера БД
Меню – Server (сервер)
Выбор сервера
Физический уровень представления модели зависит от выбранного сервера. ERwin поддерживает более 20 реляционных и нереляционных СУБД.
Default <имя сервера> Datatype - задает тип данных по умолчанию. Зависит от выбранного сервера.
Default Non Key Option - позволяет разрешить или запретить значения NULL для неключевых колонок.
Allow special chars in names - позволяет разрешить или запретить использование специальных символов и пробелов в именах таблиц. Опция действует только для тех СУБД, которые поддерживают использование специальных символов.
По умолчанию ERwin генерирует имена таблиц и индексов по шаблону на основе имен соответствующих сущностей и ключей логической модели. Окна Table Name Macro и Index Name Macro позволяют изменить шаблон генерации имен, заданный по умолчанию. В дальнейшем имена таблиц и индексов можно изменять вручную.
Кнопка Reset Names вызывает диалог Globally Reset DBMS Property который позволяет заменить все имена таблиц, связей, индексов, колонок и соответствующих свойств, заданных вручную, на значения по умолчанию. Имена таблиц и колонок по умолчанию будут сгенерированы на основе имен сущностей и атрибутов логической модели. Пробел заменяется на символ подчеркивания.
Редактирование таблиц (Table Editor)
Можно задать имя таблицы, синонимы, правила валидации (проверки), процедуры, отличные от значений по умолчанию.
Name - имя текущей таблицы
Owner - имя владельца таблицы, возможно, отличное от имени пользователя
Physical Only - создание объектов только на физическом уровне
Generate [V] - если выбрана эта опция, то будет выполняться команда CREATE TABLE.
Кнопка DB Sync - немедленная синхронизация модели с системным каталогом БД
Закладки
Dimensional - для моделирования хранилищ данных
Comment - комментарии к таблице
Volumetrics - оценка размера БД
Physical Props - задает физические свойства таблицы
Partitions - задает значения разделения ( только для Oracle)
UDP - свойства, определяемые пользователем
Validation - задание правил валидации
Synonym - задание синонимов таблицы ( если сервер это поддерживает)
Stored Procedure - связывание с таблицей хранимых процедур
Pre& Post Script - создание скриптов (наборов команд) , которые будут выполняться до и после создания таблицы при генерации схемы БД
PowerBuilder - задание расширенных атрибутов для генерации кода клиентского приложения на PB
Редактирование колонок - редактор Column Editor
Подсоединение к БД
Задачи
Прямое проектирование БД
Предварительный просмотр генерации БД
' Starting Access Basic DAO Session...
Dim ERwinWorkspace As Workspace
Dim ERwinDatabase As Database
Dim ERwinTableDef As TableDef
Dim ERwinQueryDef As QueryDef
Dim ERwinIndex As Index
Dim ERwinField As Field
Dim ERwinRelation As Relation
Set ERwinWorkspace = DBEngine.WorkSpaces(0)
Set ERwinDatabase = ERwinWorkspace.OpenDatabase(sERwinDatabase)
' CREATE TABLE "Отдел"
Set ERwinTableDef = ERwinDatabase.CreateTableDef("Отдел")
Set ERwinField = ERwinTableDef.CreateField("Номер отдела", DB_TEXT, 20)
ERwinField.Required = True
ERwinTableDef.Fields.Append ERwinField
Set ERwinField = ERwinTableDef.CreateField("Название отдела", DB_TEXT, 20)
ERwinTableDef.Fields.Append ERwinField
ERwinDatabase.TableDefs.Append ERwinTableDef
' CREATE INDEX "PrimaryKey"
Set ERwinTableDef = ERwinDatabase.TableDefs("Отдел")
Set ERwinIndex = ERwinTableDef.CreateIndex("PrimaryKey")
Set ERwinField = ERwinIndex.CreateField("Номер отдела")
ERwinIndex.Fields.Append ERwinField
ERwinIndex.Primary = True
ERwinIndex.Clustered = True
ERwinTableDef.Indexes.Append ERwinIndex
' CREATE TABLE "Сотрудник"
Set ERwinTableDef = ERwinDatabase.CreateTableDef("Сотрудник")
Set ERwinField = ERwinTableDef.CreateField("Таб номер", DB_INTEGER)
ERwinField.Required = True
ERwinTableDef.Fields.Append ERwinField
Set ERwinField = ERwinTableDef.CreateField("Номер отдела", DB_TEXT, 20)
ERwinField.Required = True
ERwinTableDef.Fields.Append ERwinField
Set ERwinField = ERwinTableDef.CreateField("Фамилия", DB_DATETIME)
ERwinTableDef.Fields.Append ERwinField
Set ERwinField = ERwinTableDef.CreateField("Имя", DB_TEXT, 20)
ERwinTableDef.Fields.Append ERwinField
Set ERwinField = ERwinTableDef.CreateField("Дата рождения", DB_DATETIME)
ERwinTableDef.Fields.Append ERwinField
ERwinDatabase.TableDefs.Append ERwinTableDef
' CREATE INDEX "PrimaryKey"
Set ERwinTableDef = ERwinDatabase.TableDefs("Сотрудник")
Set ERwinIndex = ERwinTableDef.CreateIndex("PrimaryKey")
Set ERwinField = ERwinIndex.CreateField("Таб номер")
ERwinIndex.Fields.Append ERwinField
Set ERwinField = ERwinIndex.CreateField("Номер отдела")
ERwinIndex.Fields.Append ERwinField
ERwinIndex.Primary = True
ERwinIndex.Clustered = True
ERwinTableDef.Indexes.Append ERwinIndex
' CREATE RELATIONSHIP "R/1"
Set ERwinRelation = ERwinDatabase.CreateRelation("R/1", "Отдел", "Сотрудник")
Set ERwinField = ERwinRelation.CreateField("Номер отдела")
ERwinField.ForeignName = "Номер отдела"
ERwinRelation.Fields.Append ERwinField
ERwinDatabase.Relations.Append ERwinRelation
ERwinDatabase.Close
ERwinWorkspace.Close
' Terminating Access Basic DAO Session...
Выбор клиента Задание клиента
SQL-server генерация БД
CREATE TABLE Отдел (
Номер_отдела varchar(20) NOT NULL,
Название_отдела varchar(20) NULL
)
go
ALTER TABLE Отдел
ADD PRIMARY KEY (Номер_отдела)
go
и т.д. 2 страницы текста
---------------------------------------------------------------
Как сгенерировать структуру данных из ERWIN для MS ACCESS
-
Tasks/ForwardEngineer…, потом кнопку Preview для просмотра и последующего сохранения или Report для сохранения, потом сохранить текст в файле, например, с именем "1.txt" (имя можно взять любое).
-
Создать базу MS ACCESS для запуска VBA, например "ERWIN.mdb". В этой базе создать модуль "Module1"
-
В модуле "Module1" написать текст процедуры
Sub m1()
Dim sERwinDatabase As String
sERwinDatabase = "ПРОБНЫЕ БАЗЫ\ПРОБА.mdb" ' имя базы данных, куда будут генерироваться
' таблицы и связи
Dim DB_DATETIME As Integer
DB_DATETIME = dbDate ' устраняет несоответствие обозначений типов ERwin и
' MS ACCESS
' Вставить ниже содержимое файла "1.txt"
…
End Sub
Указать конкретное имя базы, в которой будут генерироваться таблицы и связи (в примере - "ПРОБА.mdb").
-
Вставить файл "1.txt" в указанное место
-
Откомпилировать проект. Исправить возможные ошибки! (несоответствие типов, имен и др.)
-
Запустить процедуру m1(). Будут сгенерированы таблицы и связи в базе
"ПРОБА.mdb"
Примечание. При повторном запуске процедуры, когда таблицы уже созданы первым запуском, возникают ошибки.