ВУЗ: Не указан

Категория: Методичка

Дисциплина: Базы данных

Добавлен: 15.11.2018

Просмотров: 671

Скачиваний: 16

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

родовой предок

Сотрудник

Табельный номер

Фамилия

Имя

Отчество

Дата рождения

Должность

категориальная сущность (потомок)

Тип

Неполная категория

Сущность консультант не снесена в иерархию наследования

Тип


Постоянный Совместитель

с отрудник

Т абельный номер (FK) Табельный номер (FK)

Ставка


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

О

Особенность: Одна таблица через одно поле связана в двумя или более таблицами !

рганизация

Работает (общая по смыслу связь)


Постоянный Совместитель

сотрудник



Полные и неполные категории

В полной категории каждому экземпляру родового предка обязательно соответствует экземпляр в каком -либо потомке, т.е. каждый служащий обязательно является либо совместителем, либо консультантом, либо постоянным сотрудником.

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


С

Полная категория

Все Сущности внесены в иерархию наследования

отрудник

Символ категории

Табельный номер

Фамилия

Имя

Отчество

Дата рождения

Должность

категориальная сущность (потомок)

Тип

Тип


Постоянный Совместитель Консультант

с отрудник

Т абельный номер (FK) Табельный номер (FK) Табельный номер (FK)

Ставка Организация





Комбинация полной и неполной категорий



Сотрудник

Тип


Постоянный Совместитель

сотрудник

Пол



Муж Жен


Создание категориальной связи

  • установить курсор на кнопке о в палитре инструментов и ЛК мыши

  • щелкнуть сначала по родовому предку, потом - по потомку

  • для установления второй связи в иерархии категорий сначала щелкнуть по символу категории, потом по второму потомку


Редактирование категории - ПЩ по символу категории В контекстном меню - пункт - Subtype Relationship Editor. Указать дискриминатор категории (Discriminator Attribute Choice) (например - атрибут Тип в родовом предке) и тип категории - полная/неполная (Complete/Incomplete).


Стадии построения иерархии наследования


  1. Определение сущностей с общими (по определению) атрибутами

пример 1: Постоянный сотрудник и Совместитель

пример 2:Транзисторы низкочастотные, транзисторы высокочастотные


  1. Перенос общих атрибутов в сущность - родовой предок

пример 1: Постоянный сотрудник и Совместитель - > Сотрудник

пример 2:Транзисторы низкочастотные, транзисторы высокочастотные -> транзистор


  1. Создание неполной структуры категорий

Создается категориальная связь от новой сущности - родового предка - к старым сущностям - потомкам. Новая сущность дополняется атрибутом-дискриминатором категории - тип


  1. Создание полной структуры категорий

Производится дополнительный поиск сущностей, имеющих общие по смыслу атрибуты с родовым предком. Общие атрибуты переносятся в родового предка и категория преобразуется в полную. Некоторые не общие атрибуты могут быть перенесены в сущность-потомка.


пример1: консультант

пример 2 : транзисторы сверхвысокочастотные.


  1. Комбинация полной и неполной структур категорий

При необходимости создание иерархии категорий можно продолжить


Пример создания модели


Логическая модель



Создание модели - диалог

Настройка сервера БД

Меню – 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


  1. Tasks/ForwardEngineer…, потом кнопку Preview для просмотра и последующего сохранения или Report для сохранения, потом сохранить текст в файле, например, с именем "1.txt" (имя можно взять любое).

  2. Создать базу MS ACCESS для запуска VBA, например "ERWIN.mdb". В этой базе создать модуль "Module1"

  3. В модуле "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. Вставить файл "1.txt" в указанное место

  2. Откомпилировать проект. Исправить возможные ошибки! (несоответствие типов, имен и др.)

  3. Запустить процедуру m1(). Будут сгенерированы таблицы и связи в базе

"ПРОБА.mdb"

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