Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

внешней сущности и выбираем пункт меню Edit Termintor чтобы редактировать его

Работа добавлена на сайт samzan.net:


Задача

Некие поставщики снабжают товарами клиентов. Асортимент товаров велик. Спроектируйте приложение для сопровождения баз данных, которая бы позволяла анализировать следующее:

  •  какие товары заказывал клиент X у поставщика Y;
  •  какова стоимость заказа клиента X.

Создание DFD диаграммы

  1.  Запустим среду построения DFD диаграмм.
  2.  Щелкаем правой кнопкой мыши на значке Terminator и помещаем его на DFD диаграмму
  3.  Щелкаем правой кнопкой мыши на «внешней сущности» и выбираем пункт меню «Edit Terminator», чтобы редактировать его. В появившемся окне называем внешнюю сущность, в данном случае это «Клиент».
  4.  Щелкаем на значке Process и помещаем его на DFD диаграмму.
  5.  Щелкаем правой кнопкой мыши на «Process» и выбираем пункт контекстного меню «Редактировать процесс». В появившемся окне называем процесс, в данном случае «Сделать заказ».
  6.  Щелкаем на значке Data Store и помещаем его на DFD диаграмму.
  7.  Щелкаем правой кнопкой мыши на «Data Store» и выбираем пункт контекстного меню «Редактировать хранилище данных». В появившемся окне называем хранилище данных, в данном случае «Заказы»
  8.  Щелкаем на значке Data Flow и помещаем его на DFD диаграмму.
  9.  Щелкаем правой кнопкой мыши на потоке данных и выбираем пункт контекстного меню «Редактировать поток данных». Чтобы добавить поток данных на диаграмму мы щелкаем на значке внешней сущности «Клиент» и тянем до значка процесса «Сделать заказ», чтобы связать их. Вызываем контекстное меню, выбираем пункт «Редактировать поток данных». В появившемся окне называем поток данных, в данном случае «Оформить заказ».
  10.  Аналогичным образом добавляем поток данных «Контроль заказов», связывающий процесс «Сделать заказ» с хранилищем данных.
  11.  Выделяем процесс «Сделать заказ» и хранилище данных «Заказы», щелкаем значок «Выравнивание»,который позволяет выровнять элементы диаграммы. Размещаем названия потоков данных.
  12.   Можно также определять цвета для всех элементов диаграммы. Для этого нужно вызвать контекстное меню, выбираем пункт «Colors», и в появившемся окне выбираем нужный цвет в палитре.
  13.   Можно перемещать точки переломов линий потоков данных, то есть строить ломаную линию. Для этого необходимо нажать CTRL и щелкнуть на existing break point. Вызываем контекстное меню и выбираем пункт «Переместить break point». Можно перемещать точки по отдельности или все одновременно.

На этом построение диаграммы нулевого уровня заканчивается и начинается построение диаграммы первого уровня.

1) Вызываем контекстное меню и выбираем пункт «Редактировать процесс». В появившемся окне снимаем флажок Lowest level.

2)  В дереве DFD Navigator выбираем процесс «Сделать заказ». Связываем существующие потоки с новыми процессами. Новые процессы «Получение информации о товарах» и «Оформление заказа», связываем их потоками с другими элементами диаграммы, как это было описано ранее.

3)  Добавляем 2 хранилища данных на диаграмму. Называем их «Поставщики» и «Товары», добавляем потоки данных «Запрос 2»(связывает процесс «Получение информации о товарах» с хранилищем данных «Поставщики»),  «Запрос 1»(связывает процесс «Получение информации о товарах» с хранилищем данных «Товар»), «Информация о товарах»(связывает хранилище данных «Товар» с процессом «Оформление заказа»), «Контроль товаров»( связывает процесс «Оформление заказа» с хранилищем данных «Товар»). В дереве DFD Navigator процессы нижних уровней представлены темными кружочками.

  1.  Можно также автоматически расположить элементы диаграммы, щелкнув на значке Align Right Size
  2.  Щелкнув на значке “HTML report», генерируем детальное описание нашей диаграммы.

Семантика 0-уровня

Администрация оптового склада товаров заказала разработку модуля информационной системы для отдела продаж. Система предназначена для автоматизации процесса осуществления  и хранения заказов. Во время предпроектного исследования составлено следующее описание событий, происходящих во время оформления заказа товаров:

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

Семантика 1-уровня

Администрация оптового склада товаров заказала разработку модуля информационной системы для отдела продаж. Система предназначена для автоматизации процесса осуществления  и хранения заказов. Во время предпроектного исследования составлено следующее описание событий, происходящих во время оформления заказа товаров:

  •  клиент, желающий приобрести партию товара, звонит или приходит на склад. Его принимает сотрудник, который выясняет, какие товары желает приобрести клиент;
  •  сотрудник выясняет, есть ли в наличии желаемый товар на складе, если нет, то он делает запрос к поставщикам, выясняя, есть ли данный товар у них;
  •  когда найдены все интересующие клиента товары, сотрудник приступает к оформлению заказа, в котором указывает наименование, стоимость, количество, поставщика товара;
  •  заказанные товары передаются со склада клиенту, что указывается в информации о наличии товаров на складе.

Создание ER-диаграммы

1. Запустим среду построения ER-диаграмм.

2. Начнем создавать модель, используя команду меню File / New Model.

3. В появившемся окне "Target database selection" выберем формат базы данных Firebird.

4. Добавляем сущности. Для этого щелкаем на иконку «Entity» и потом щелкаем на область построения. Дважды щелкаем на сущности или щелкаем правой кнопкой мыши и выбираем пункт контекстного меню «Правка». Определяем логическое и физическое имя сущности (в нашем случае это «Товар») и добавляем ее атрибуты: Код товара, Наименование, Цена и Код поставщика. При этом первичным ключом делаем Код товара. Можно добавлять атрибуты, индексы, ключи также свойства, настройки, определения и т.д.

5. Существует два способа добавить новые атрибуты к сущности. Нажимая на большую кнопку «Add», сохраняем все атрибуты, введя в появившемся окне все типы данных и свойства, которые будут использованы в атрибуте или нажимая на маленькую кнопку «Add», сохраняем новое имя атрибута с параметрами по умолчанию, таким способом мы можем сохранить новое имя атрибута быстрее.

6. Мы можем выбрать какие элементы будут показаны при помощи выпадающего списка на панели. Для маленьких диаграмм оптимальным вариантом является показывать все атрибуты. Для больших диаграмм можно выбрать сущности, первичные ключи или ключи. Выбрав «Attributes», мы видим все атрибуты.

8. Добавляем еще одну сущность с тремя атрибутами. Выбираем пункт меню «Правка», в открывшемся окне вводим имя сущности «Поставщики», нажимаем большую кнопку «Add», потом маленькую, в появившемся окне вводим имя атрибута «Код поставщика», его тип, ставим флажок «Ключ» и можно нажать кнопку «Ok+Add», чтобы добавить новые атрибуты, не закрывая окно. Таким же образом добавляем еще 2 атрибута: «Название», «Адрес».

9. Добавляем связи. Щелкаем мышью на иконку идентифицирующей связи и добавляем 2 связи: щелкаем на родительской сущности и удерживая левую клавишу мыши тянем до дочерней сущности. Можно использовать такие виды связей: идентифицирующая, неидентифицирующая, «многие-ко-многим», самосвязь, информационные.

10. Чтобы править связь нужно дважды на ней щелкнуть или щелкнуть правой кнопкой мыши на ней. Можно изменить имя связи, элемент соединения, отношение и т.д. Можно использовать такие методы соединения: первичный ключ, уникальная связь и альтернативный ключ.

12. На вкладке «Referential Integrity» можно определить правила целостности отношений: запрещающий механизм, каскадное удаление, нажимаем «Ok», чтобы править связь.

14. Мы работаем с физической моделью, хотя можно выбрать как физическую, так и логическую.

15. Щелкаем правой кнопкой мыши на рабочей области и меняем вид модели. Можно сделать тени, выровнять колонки и т.д.

16. Щелкаем на иконке «Model Verification» и проверяем диаграмму. В появившемся окне нажимаем клавишу «Run».

17. Щелкая на иконке «Generate Script Icon», чтобы сгенерировать SQL код.

18. В появившемся диалоговом окне выбираем пункты, которые нужно сгенерировать, на вкладке «How To Generate» определяем правила и свойства. На вкладке «Entity List»  можно выбрать главную модель или другую подмодель.

19. Нажимаем клавишу «Generate», чтобы сгенерировать SQL код, когда код сгенерирован, нажимаем «View button». Эта опция помогает с легкостью создать SQL код, не тратя при этом много времени.

Преобразуем ER-диаграмму (рис. 1) в отношения: .

Рисунок 1 - Диаграмма базы данных в нотации IDEF1X

Zakazy (NomZk, Kol-vo, Customer, CodeTov), Tovar(CodeTov, Naim, Price, CodePost), Postavschiki(CodePost, Name. Address).

Определим ФЗ, которые соответствуют отношениям. Отношению Zakazy соответствует полная ФЗ NomZk à Kol-vo, Customer,CodeTov, отношению Tovar — полная ФЗ CodeTov à Naim, Price, CodePost, отношению Postavschiki CodePost à Name, Address.

Как видно из диаграммы каждое из полученных отношений содержит только одну полную ФЗ, следовательно отношения нормализованы, то есть приведены к третьей нормальной форме.

Сущность

Атрибут

Столбец

Мотивация

Тип данных

Примечание

Zakazy

NomZk

NomZk

Номер заказа

Integer

Primary Key

Zakazy

Kol-vo

Kol-vo

Количество товара

Integer

Zakazy

Customer

Customer

Имя покупателя

Char(20)

Zakazy

CodeTov

CodeTov

Код товара

Integer

Foreign Key

Postavschiki

CodePost

CodePost

Код Поставщика

Integer

Primary Key

Postavschiki

Name

Name

Название организации поставщика

Char(20)

Postavschiki

Address

Address

Адрес поставщика

Char(20)

Tovar

CodeTov

CodeTov

Код товара

Integer

Primary Key

Tovar

Naim

Naim

Наименование товара

Char(20)

Tovar

Price

Price

Цена товара

Integer

Tovar

CodePost

Price

Код поставщика

Integer

Foreign Key

Сущности Zakazy и Tovar связаны при помощи неидентифицирующей связи «один-ко-многим», причем она «Optional-Mandatory», то есть каждый заказ должен содержать один или несколько товаров, но каждый товар может содержаться в 0 или несколько заказов.

Сущности Tovar и Postavschiki связаны при помощи неидентифицирующей связи «один-ко многим», причем она «Mandatory-Mandatory», то есть у каждого товара должен быть свой поставщик и каждый поставщик должен поставлять 1 или несколько товаров.

SQL-код

/*

Created  19.09.2007

Modified  01.01.2000

Project  

Model  

Company  

Author  

Version  

Database  Firebird

*/

Create Table "Tovar"  (

"CodeTov" Integer NOT NULL,

"Name" Char(20) NOT NULL UNIQUE,

"Price" Integer NOT NULL,

"CodePost" Integer NOT NULL,

Constraint "pk_Tovar" Primary Key ("CodeTov")

);

Create Table "Postavschiki"  (

"CodePost" Integer NOT NULL,

"Name" Char(20) UNIQUE,

"Address" Char(20) NOT NULL UNIQUE,

Constraint "pk_Postavschiki" Primary Key ("CodePost")

);

Create Table "Zakazy"  (

"NomZk" Char(20) NOT NULL,

"Kol_vo" Integer NOT NULL,

"Customer" Char(20) NOT NULL,

"CodeTov" Integer NOT NULL,

Constraint "pk_Zakazy" Primary Key ("NomZk")

);

Alter Table "Zakazy" add Constraint "Zapros1" Foreign Key ("CodeTov") references "Tovar" ("CodeTov") on delete no action ;

Alter Table "Tovar" add Constraint "Zapros2" Foreign Key ("CodePost") references "Postavschiki" ("CodePost") on delete no action ;

Create Exception "except_del_p" 'Children still exist in child table. Cannot delete parent.';

Create Exception "except_ins_ch" 'Parent does not exist. Cannot create child.';

Create Exception "except_upd_ch" 'Parent does not exist. Cannot update child.';

Create Exception "except_upd_p" 'Children still exist in child table. Cannot update parent.';

Create Exception "except_ins_ch_card" 'Maximum cardinality exceeded. Cannot insert into child.';

Create Exception "except_upd_ch_card" 'Maximum cardinality exceeded. Cannot update child.';

set term ^;

/* Update trigger for Tovar */

Create Trigger "tu_Tovar"

for "Tovar" before update as

declare variable numrows integer;  

 

begin

/* Restrict child Zakazy, when parent Tovar changed */

 

if (old."CodeTov" != new."CodeTov")  then

begin

 select count(*)

 from "Zakazy"

 where "Zakazy"."CodeTov" = old."CodeTov"

 into :numrows;

 if (numrows > 0) then

  exception "except_upd_p";

end

 

 

 

end

^

/* Update trigger for Postavschiki */

Create Trigger "tu_Postavschiki"

for "Postavschiki" before update as

declare variable numrows integer;  

 

begin

/* Restrict child Tovar, when parent Postavschiki changed */

 

if (old."CodePost" != new."CodePost")  then

begin

 select count(*)

 from "Tovar"

 where "Tovar"."CodePost" = old."CodePost"

 into :numrows;

 if (numrows > 0) then

  exception "except_upd_p";

end

 

 

end

^

set term ;^




1. Тема- Робота з фінансовоекономічними функціями в MS Excel
2. исторических факторов
3. Организационная форма управления работой выставки
4. высота ширина Площадь круга- Кинематика
5. Оптические методы анализа
6. Контрольная работа- Фенольные гликозиды
7. нетронутого провинциального городка Российской Империи начала XX века Лютеранский Кафедральный собор тоже
8. тематичний урок Тема- Повторення та закріплення таблиць множення чисел 2 і 3 та ділення на 2.
9. а Освоение заброшенных и новых земель Распространение трехполья чередование пара озимых и яровых ку
10. Этот сюжет дал возможность сатирику глубоко и всесторонне изобразить в комедии всю чиновничью Россию
11. в. до шкільного навчання
12. БЕЛЫЙ КОТ 099 064 85 45 094 900 20 25; 065270 20 25
13. В EN 199115 містяться принципи і положення з розрахунку температурних впливів на будівлі мости та інші констр
14. 2006 ВВР 2006 N 1920 ст
15. Лабораторная работа 15
16. Военное управление и комплектование русского войска (конец XV - первая половина XVII вв
17. премия которую создают акции сверх премии свободных от риска дефолта ценных бумаг на длинных промежутках в
18. Гідрологічні та водогосподарські розрахунки
19. Жидкие кристаллы
20. Подготовка лидеров и последователей1