Базы_данных(мет). Тема Нормализация
Скачать 326.25 Kb.
|
Постановка задачиВ пункте обмена валют создается локальная информационная система, призванная автоматизировать процесс учета сделок купли – продажи валюты. Создаваемая система должна обеспечивать ввод, хранение и поиск информации о сделках, совершенных в данном пункте обмена. Каждой сделке присваивается уникальный цифровой код. Информация о сделке должна содержать сведения о дате и времени сделки, суммах покупаемой и продаваемой валют, фамилии, имени, отчестве и номере паспорта клиента, а так же о фамилии, инициалах и учетном номере личного дела кассира в отделе кадров. Система должна позволять вычислить денежный оборот за один или несколько дней, а так же осуществлять поиск информации о сделках по номеру паспорта клиента. Задача состоит в проектировании структуры баз данных разрабатываемой автоматизированной ИС. Создание логической модели БДПроведем анализ предметной области и внесем в диаграмму выявленные сущности. Для внесения сущности в модель необходимо «кликнуть» по кнопке сущности на панели инструментов (ERwin Toolbox) затем кликнуть по тому месту на диаграмме, где необходимо расположит новую сущность. Щелкнув правой кнопкой мыши по сущности и выбрав из всплывающего меню пункт Entity Properties…, можно вызвать диалог Entity Properties в котором определяются имя, комментарии и описание сущности. Каждая сущность должна быть полностью определена с помощью текстового описания в закладке Definition. Закладки Note, Note 2, Note 3, UDP служат для внесения дополнительных комментарий и определений к сущности. Создадим необходимые сущности. В результате у нас получится: Рис. 4. Общий вид модели после создания сущностей Следующим шагом в процессе создания логической модели должно стать определение связей между сущностями. Для создания связей между сущностями сначала составим описание данной предметной области при помощи ряда истинных высказываний на естественном языке: Любой КЛИЕНТ должен совершить одну или несколько СДЕЛОК. Каждую СДЕЛКУ должен совершить один КЛИЕНТ. Любой КАССИР может обслуживать одну или несколько СДЕЛОК, но может не обслужить и ни одной. Каждую СДЕЛКУ должен обслуживать только один КАССИР. Любая ВАЛЮТА может покупаться и продаваться при разных СДЕЛКАХ. При совершении СДЕЛКИ должна покупаться одна ВАЛЮТА и продаваться другая ВАЛЮТА. Таким образом, сформируем имена связей: КЛИЕНТ совершает СДЕЛКУ. КАССИР обслуживает СДЕЛКУ. ВАЛЮТА покупается при СДЕЛКЕ. ВАЛЮТА продается при СДЕЛКЕ. Все четыре связи являются связями «один-ко-многим». Во всех четырех случаях сущность СДЕЛКА является дочерней. Все связи не идентифицирующие, т. к. любой экземпляр сущности СДЕЛКА может быть однозначно идентифицирован по коду сделки, т.е. вне зависимости от экземпляров других сущностей. Все связи, кроме первой, могут иметь мощность 0, 1 , или более. Первая связь не может иметь мощность 0, т.к. в данном случае любой человек становится КЛИЕНТОМ только тогда, когда он совершает хотя бы одну сделку. Во всех четырех связях родительские сущности не могут принимать пустые значения, т.к. при отсутствии хотя бы одной из родительских сущностей экземпляр сущности СДЕЛКА перестает описывать сделку по обмену валюты. Для установки связи необходимо кликнуть по кнопке связь в панели инструментов, затем указать мышью сначала на родительскую сущность, а потом на дочернюю. Задать параметры связи можно при помощи редактора связей Relationship Properties (см. рис. 5). Рис. 5. Диалоговое окно Relationship Properties Задание ограничений ссылочной целостности, а так же указание ролей производится на закладке Rolename/ RI Action панели диалога редактора связей после создания атрибутов. После задания связей между сущностями диаграмма будет выглядеть следующим образом (см. рис. 6). Рис. 6. Вид логической модели после задания связей Теперь для каждой сущности необходимо указать первичные ключи и не ключевые атрибуты. Кроме того, для некоторых, возможно, понадобится задание альтернативных ключей и инверсных входов. Рассмотрим по очереди каждую из сущностей. Сведения о клиенте должны состоять из его фамилии, имени, отчества и номера его паспорта. Очевидно, что они будут атрибутами сущности КЛИЕНТ. Первичным ключом можно было бы выбрать номер паспорта, поскольку он однозначно идентифицирует любой из экземпляров этой сущности. Однако номер паспорта не является числом, т.к. кроме цифр, содержит и буквы, и, следовательно для его хранения будет использоваться строка минимум из 13 символов, что не совсем удобно. Поэтому введем для каждого клиента уникальный номер, который и будет первичным ключом. А атрибут «номер паспорта клиента» сделать альтернативным ключом, чтобы обеспечить возможность быстрого поиска информации о сделках по его значениям, согласно заданию. Сведения о кассире должны включать фамилию, инициалы и учетный номер кассира – они и будут атрибутами сущности КАССИР. Поскольку учётный номер личного дела кассира может содержать не только цифры, как и в предыдущем случае, введём для каждого экземпляра уникальный номер, который и будет первичным ключом. По тем же соображениям сущность ВАЛЮТА будет содержать два атрибута: код валюты и название валюты, первый из которых будет первичным ключом. Что касается сущности СДЕЛКА, то часть атрибутов она унаследует от родительских сущностей и остаётся лишь добавить следующие: «дата сделки», «время сделки», «сумма покупаемой валюты» и «сумма продаваемой валюты». Очевидно, что первичным ключом, следует выбрать уникальный цифровой код сделки. Поскольку в задании сказано, что создаваемая система должна позволять вычислить денежный оборот за один или несколько дней, полезно было бы сделать атрибут «дата сделки» инверсным выходом, т.к. он довольно часто будет использоваться для доступа к данным. Для задания первичных ключей и атрибутов используется редактор атрибутов. Для его вызова кликните правой кнопкой мыши на сущности и выберите пункт Attributes… (см. рис. 7). Рис. 7. Диалоговое окно Attributes Для задания альтернативных ключей и инверсных входов следует воспользоваться редактором ключей. Переход в него осуществляется, так же как и редактор атрибутов. Для вызова данного редактора кликните правой кнопкой мыши на сущности и выберите пункт Key Groups. В открывшимся диалоговом окне (см. рис. 8) нажмите кнопку New. Рис. 8. Диалоговое окно New Key Groups В открывшимся диалоговом окне задайте атрибуты и нажмите ОК. Выберите созданный альтернативный ключ и при помощи клавиши добавьте составляющие его атрибуты. Нажмите ОК. Рис. 9. Диалоговое окно Key Group Editor На этом процесс логического моделирования заканчивается, а сама модель приобретает вид, представленный на рис. 10. Рис. 10. Общий вид логической модели |