Реферат: Методология проектирования баз данных

Московский ГосударственныйТехнический Университет Им. Н.Э. Баумана

Калужский филиал

Кафедра САУ и электротехники

Методологияпроектирования баз данных

 

Расчётно-пояснительная записка ккурсовой работе

по курсу «Проектирование алгоритмов и

программного обеспечения»

Выполнил: студент группы САУ-81

Лебедев А.Л.

Руководитель: доцент, к. т. н.

Николаенко С. И.

Калуга

2005 г.


I. Проект базы данных для предприятия,занимающегося заготовкой древесины, её переработкой и сбытом готовой продукции

Деревообрабатывающеепредприятие осуществляет заготовку, переработку и сбыт древесины. Напредприятии осуществляется бригадный принцип организации труда. Бригада можетиметь следующую специализацию: заготовительная, цеховая или погрузочная. Во главебригад стоят бригадиры. Каждая бригада имеет свой табельный номер.

Заготовка древесинызаключается в следующем. Лесничество выделяет предприятию лесобилеты, в которыхуказано, где находятся делянки и сколько леса может быть заготовлено на каждомучастке. Также указывается порода древесины. На предприятии существуетопределённое лицо – заведующий делянками, — который выписывает у лесничествалесобилеты, выдаёт делянки бригадам, принимает делянки от бригад, сдаёт участкиназад лесничеству. Назначенная на данную делянку бригада выпиливает лес ипривозит его на базу предприятия.

Привезённый на базу лессдаётся начальнику базы, который фиксирует кубатуру кругляка.

На территории предприятиянаходится несколько цехов по переработке древесины, за каждым цехом закрепленасушильная камера; также имеется склад готовой продукции. Цеха пронумерованы. Вкаждом цехе работает бригада, (в цехе их может быть несколько), котораяосуществляет распиловку древесины и её сдачу на склад продукции. Бригадирполучает лес от начальника базы. Приём готовой продукции ведёт кладовщик.

На предприятии определенотакже лицо, которое занимается продажей товара – начальник сбыта. Ондоговаривается с фирмами-клиентами об объёмах и датах поставок, видах продукциии, соответственно, определяет задание цеховым бригадам.

Работники и фирмы-клиентымогут иметь телефон. Их может быть несколько.

При работе с электроннымидокументами должна быть доступна следующая информация:

1.        штат сотрудниковпредприятия (таб. №, ФИО, дом. адрес, телефон, дата приёма на работу иназначения на должность, должность, номер бригады);

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

3.        какая бригадаработает на делянке;

4.        сколько лесабригада привезла на базу. Сколько всего леса и какого хранится на базе;

5.        какую продукцию ипо какой цене производит предприятие;

6.        какой план, когдаи на какой срок выдан начальником сбыта цеховым бригадам;

7.        сколько лесавыписал начальник бригады на базе и сдал продукции на склад. Сколько и какойпродукции хранится на складе;

8.        с какимифирмами-клиентами сотрудничает предприятие (название фирмы, адрес и телефон);

9.        какой заказ и накакой срок сделан предприятию фирмой-клиентом (вид, количество продукции и покакой цене);

10.     какой товар,сколько, по какой цене и когда отгружен фирме-клиенту.

Типовые операции(транзакции)

·         приём на работу,приписывание к бригадам, назначение на должность, увольнение, снятие сдолжности работников, перевод в другую бригаду;

·         создание новых ирасформирование старых бригад;

·         выписываниелесобилетов у лесничества;

·         выдача делянокбригадам;

·         приём делянок убригад;

·         возвращениеделянок лесничеству;

·         привоз лесабригадой на базу;

·         выдача планацеховым бригадам;

·         получение лесабригадирами на базе;

·         сдача продукциина склад;

·         добавление иудаление фирм-клиентов;

·         получение заказаот фирмы-клиента;

·         продажапродукции.

 

Общий вид накладных идругих документов

 

Лесобилет №_____

Лесничество «____________»Предприятие «____________»

Заведующий делянками ____________

Делянка № Квадрат

Площадь, />

Порода древесины Кол-во, куб. м. 1 13,36 6000 сосна 50 ель 120 берёза 35 2 Т.д.

«____»___________200 г.

Накладная на возвратделянки №___ лесничеству «____________» №___ от ______

Заведующий делянками___________

номер делянки Квадрат

Площадь, />

1 13,36 6000

Накладная на заказ товара№___ от ____

Фирма-заказчик__________Начальник сбыта __________

Адрес фирмы __________

Телефон __________

Наименование Ед. измерения Цена Кол-во Стоимость Товар1 пог. м.

Срок выполнениязаказа_____

Всего на сумму _______

Накладная на продажуаналогична накладной на заказ, с той лишь разницей, что в ней указывается зав.складом и ставится не срок выполнения заказа, а дата продажи.

 Подготовка отчёт о штатесотрудников по форме:


Таб. №

ФИО Адрес Телефон Дата приёма на работу Таб. № бригады Должность Дата назначения на должность

Подготовка отчёта оналичии товара на складе по форме:

Кладовщик ______________

Наименование Ед. измерения Цена Кол-во Стоимость

Всего на сумму __________

Подготовка отчёта обассортименте товара по форме:

Наименование Ед. измерения Цена

Подготовка отчёта опоставках товара фирмам-клиентам по форме:

Название фирмы«_____________»

Адрес

Телефон Срок поставокс___ по ___

Наименование Ед. измерения Цена Кол-во Стоимость

Всего на сумму: _________

Подготовка плана работыцеховым бригадам по форме:

План работы № __

Бригада №___Начальниксбыта ____________

Бригадир ___________Дата____ Срок выполнения, дней ____

Наименование Ед. измерения Кол-во

IIКонцептуальное проектирование

 

1. Типы сущности

Выделим следующие типысущностей:

1.        древесина;

2.        лесобилет;

3.        делянка;

4.        работник;

5.        бригада;

6.        бригадир;

7.        зав. делянками;

8.        нач. базы;

9.        продукция(товар);

10.     зав. складом

11.     нач. сбыта;

12.     фирма-клиент;

13.     телефон;

14.     накладная навозврат делянки лесничеству;

15.     накладная назаказ товара;

16.     накладная напродажу товара;

17.     план работыцеховой бригады;

 

Типы сущностей

Наименование Краткое описание Синонимы Особенности древесина сырьё для продукции лес, сырьё лесобилет документ, который выдаётся лесничеством нумерация лесобилетов ведётся в рамках текущего года делянка место в лесополосе, где предприятию разрешено выпиливание леса участок делянки могут возвращаться лесничеству по одной по мере выпиливания в них леса работник общее наименование для всех работающих на предприятии каждый работник входит в состав какой-либо бригады, кроме нач. базы, зав. складом, зав. делянками и нач. сбыта бригада основное рабочее звено предприятия каждая бригада выполняет только определённые виды работ бригадир работник, возглавляющий бригаду начальник в каждой бригаде обязательно есть бригадир зав. делянками работник, занимающийся выпиской лесобилетов у лесничества и возвратом участков, а также следящий за использованием делянок бригадами эту должность занимает только один работник нач. базы работник, который принимает лес и выдаёт лес цеховым бригадам --//-- зав. складом работник, который принимает готовую продукцию у цеховых бригад и выдаёт её фирмам- клиентам кладовщик --//-- нач. сбыта работник, который непосредственно сотрудничает с фирмами-клиентами и определяет план работы цеховым бригадам --//-- продукция совокупность изделий, которые выпускает предприятие товар вся продукция хранится на одном складе, может иметь одинаковое наименование, но разную цену фирма-клиент фирмы, которые осуществляют заказ и покупку продукции фирма-покупатель, фирма-заказчик делает заказ на продукцию, однако если таковая имеется на складе, может приобрести её сразу телефон средство сообщения между лесничеством, фирмами-клиентами и руководящими работниками, а также работников между собой фирмы-клиенты и работники могут иметь несколько номеров телефонов накладная на возврат делянки лесничеству документ, который свидетельствует, что лесничество приняло делянку у предприятия (зав. делянками) нумерация накладных ведётся в рамках года накладная на заказ товара документ, в котором фирма-клиент указывает какую продукцию она хочет приобрести и в какой срок бланк заказа --//-- накладная на продажу товара документ, который выписывает у зав. складом фирма-клиент, где указывается, какую продукцию она хочет приобретает и когда срок нумерация накладных ведётся в рамках года план работы цеховой бригады график работы бригады график работы выдаётся цеховым бригадам /> /> /> /> /> />

 

2. Типы связей

 

Определим типы связей:

1.        работник приписанк бригаде;

2.        бригадувозглавляет бригадир;

3.        зав. делянкамивыписывает лесобилет;

4.        лесобилет содержитделянку;

5.        древесина указанадля делянки;

6.        зав. делянкиоформляет накладную на возврат делянки лесничеству;

7.        накладная навозврат делянки лесничеству содержит делянку;

8.        делянказакреплена за бригадиром;

9.        древесина имеетсяу бригадира;

10.     лес хранится уначальника базы;

11.     начальник сбытаоформляет накладную на заказ;

12.     фирма-клиентвыписывает накладную на заказ;

13.     продукция входитв накладную на заказ;

14.     начальник сбытавыдаёт план работы;

15.     бригадир получаетплан работы;

16.     продукция входитв план работы;

17.     бригадир сдаётпродукцию;

18.     продукцияхранится у зав. складом;

19.     зав. складомоформляет накладную на продажу;

20.     фирма-клиентвыписывает накладную на продажу;

21.     продукция входитв накладную на продажу;

22.     фирма-клиентимеет телефон;

23.     работник имееттелефон.

Типы связей

Тип сущности Тип связи Тип сущности Кардинальность Степень участия древесина указана для делянка M:N Т: Т зав. делянками выписывает лесобилет 1: М Т: Т делянка входит в лесобилет M:1 Т: Т зав. делянками оформляет накладная на возврат делянки лесничеству 1: М Т: Т делянка входит в накладная на возврат делянки лесничеству M:1 Т: Т делянка закреплена за бригадир 1:1 Т: Р работник приписан к бригада М:1 T: Т бригадир возглавляет бригада 1:1 Т: Т древесина имеется у бригадир М:N Т: Р древесина хранится у нач. базы М:1 P: Т бригадир сдаёт продукция M:N Р: Т продукция хранится у зав. складом М:1 P: Т фирма-клиент выписывает накладная на заказ 1: М Т: Т нач. сбыта оформляет накладная на заказ 1: М Т: Т продукция входит в накладная на заказ 1: М Т: Т фирма-клиент выписывает накладная на продажу 1: М Т: Т зав. складом оформляет накладная на продажу 1: М Т: Т продукция входит в накладная на продажу 1: М Т: Т нач. сбыта выдаёт план работы 1: М Т: Т бригада получает план работы 1: М Р: Т продукция входит в план работы 1: М Т: Т работник имеет телефон М:1 P: Т фирма-клиент имеет телефон М:1 P: Т

 

3. Атрибуты

 

Тип сущности/

связи

Атрибут Описание Тип данных Значение по умолчанию Допустимость Null Производный, множестве-нный древесина порода порода деревьев символьный - нет множ Лесо-билет номер целый - нет - дата дата выписки дата - нет - делянка номер целый - нет - квадрат Местопол-ожение символьный - нет - площадь плав-щий - нет - работник таб. номер целый - нет - ФИО фамилия, имя, отчество символьный - нет - адрес адрес места жительства символьный - нет - телефон символьный - да множ дата поступления дата приёма на работу дата - нет - зав. делянками те же, что у работника + дата назначения дата назначения на должность дата - нет - нач. базы те же, что у зав. делянками зав. складом те же, что у зав. делянками нач. сбыта те же, что у зав. делянками бригада таб. номер целый - нет - специализация место работы бригады символьный - нет - номер цеха цех, в котором работает бригада целый да - бригадир те же, что у работника + дата назначения дата назначения на должность дата - нет - продукция наименование символьный - нет - цена плав-щий - нет - ед. измер-я символьный - нет - фирма-клиент наименование символьный - нет - адрес юридический адрес фирмы символьный - нет телефон символьный - да множ накладная на возврат делянки лесниче-ству номер целый - нет - дата дата выписки дата - нет - накладная на заказ товара номер целый - нет - дата даты выписки дата - нет - срок срок выполнения заказа целый - нет - Накладная на продажу номер целый - нет - дата дата выписки дата - нет - план работы цеховой бригады те же, что у накладной на заказ+ объём общий объём древесины, необходимый для выполнения плана плав-щий - нет - хранится у кол-во кол-во древесины у нач. базы, у зав. складом плав-щий - нет - сдаёт кол-во кол-во продукции, которую сдаёт бригадир зав. складом плав-щий - нет - имеется у кол-во кол-во древесины, которое имеется у бригадира плав-щий - нет - указана для кол-во кол-во древесины на делянке плав-щий - нет -  
4. Домены атрибутов

 

Домен Атрибуты Тип данных Ограничения Примеры значений порода порода символьный(20) берёза номер номер лесобилета, делянки, накладной на возврат делянки лесничеству, накладных на заказ и продажу товара, плана работы, цеха целый >0 1024 специализация специализация бригады символьный(20) заготовительная дата дата выдачи лесобилета, накладной на возврат делянки лесничеству, плана работы, дата оформления накладной на заказ и продажу, дата поступления на работу и назначения на должность дата

>01.01.2000 и

<01.01.2020

03.12.2002 срок срок выполнения плана работы или заказа целый >0 и <30 14 объём объём древесины в плане работы плавающий >0 35,5 квадрат квадрат символьный(5) 10*15 площадь площадь плавающий >0 10000,5 таб. номер таб. номер работников, бригадиров, бригад, зав. делянками, нач. базы, зав. склада, нач. сбыта целый >0 1251 название ФИО, название фирмы-клиента, наименование товара символьный(40) Лебедев Алексей Леонидович цена цена плавающий >0 123,5 единицы измерения единицы измерения вида товара символьный(10) кв.м. адрес адрес работников, бригадиров, бригад, зав. делянками, нач. базы, зав. склада, нач. сбыта, фирм-клиентов символьный(50) г. Калуга ул. Новаторская д.12 кв.6 телефон телефон работников, бригадиров, бригад, зав. делянками, нач. базы, зав. склада, нач. сбыта, фирм-клиентов символьный(10) 57-16-01 количество

кол-во древесины у нач. базы, у зав. складом,

кол-во продукции, которую сдаёт бригадир зав. складом,

кол-во древесины, которое имеется у бригадираБ

кол-во древесины на делянке

плавающий >0 125,3

 


5. Определениепотенциальных ключей и выбор среди них первичных

 

Тип сущности Первичный ключ Альтернативные ключи древесина порода лесобилет номер делянка номер квадрат, площадь

работник

бригадир

зав. делянками

нач. базы

зав. складом

нач. сбыта

таб. номер ФИО, адрес бригада номер продукция наименование, цена фирма-клиент название, адрес накладная на возврат делянки лесничеству, накладная на заказ и на продажу, план работы номер телефон номер

 


6. Построение ER-модели

 

 

/>


IIIЛогическое проектирование

1. Приведениеконцептуальной модели в соответствие с требованиями реляционной модели данных

 

1.1 Удаление связейтипа M:Nи связей с атрибутами

Связи «Древесина имеетсяу Бригадир» и «Древесина хранится у Нач. базы» заменяем на тип сущности«Наличие» с наследуемыми атрибутами «Таб. номер» и «Порода» и с собственныматрибутом «Количество» и типы связей «Древесина имеется в Наличие», «Нач. базыимеет в Наличие», «Бригадир имеет в Наличие».

Связь «Древесина указанадля Делянка» заменяем на тип сущности «Наличие древесины» с наследуемымиатрибутами «Порода» и «Номер» и собственным атрибутом «Количество» и типысвязей «Древесина характеризует Наличие древесины» и «Наличие древесины указанодля Делянка»

Связь «Продукция хранитсяу Зав. складом» заменяем на тип сущности «Хранение» с наследуемыми атрибутами«Наименование» и «Цена» и собственным атрибутом «Количество» и типы связей«Продукция имеется на Хранение» и «Зав. складом имеет на хранение»

Связи «Входит в»,связывающие сущности «Продукция» и «Накладная на заказ», «Накладная на продажу»и «План работы» заменяем на типы сущности «Строка накладной на заказ», «Строканакладной на продажу» и «Строка плана работы», типы связей «Продукция входит вСтрока накладной на заказ», «Продукция входит в Строка накладной на продажу»,«Продукция входит в План работы»; «Накладная на заказ содержит Строка накладнойна заказ», «Накладная на продажу содержит Строка накладной на продажу» и «Планработы содержит Строка плана работы» соответственно. При этом типы сущности«Строка накладной на заказ», «Строка накладной на продажу» и «Строка планаработы» наследуют атрибуты «Номер», «Наименование», «Цена» и имеют собственныйатрибут «Количество».

Связи «Лесобилет содержитДелянка» и «Накладная на возврат делянки лесничеству содержит Делянка» заменяемна два типа сущности «Строка лесобилета» и «Строка накладной на возврат делянкилесничеству» с наследуемыми атрибутами «Номер лесобилета», «Номер накладной» и«Номер делянки» и типы связей «Лесобилет содержит Строка лесобилета» и«Накладная на возврат делянки лесничеству содержит Строка накладной на возвратделянки лесничеству»; «Делянка входит в Строка лесобилета» и «Делянка входит вСтрока накладной на возврат делянки лесничеству» соответственно.

Связь «Бригадир сдаётПродукция» заменяем на тип сущности «Объём товара» с наследуемыми атрибутами«Таб. номер», «Наименование» и «Цена» и типы связей «Продукция входит в Объёмтовара» и «Бригадир выпускает Объём товара»

Скорректированнаятаблица «Типы сущностей»

Наименование Краткое описание Синонимы Особенности древесина сырьё для продукции лес, сырьё лесобилет документ, который выдаётся лесничеством нумерация лесобилетов ведётся в рамках текущего года делянка место в лесополосе, где предприятию разрешено выпиливание леса участок делянки могут возвращаться лесничеству по одной по мере выпиливания в них леса работник общее наименование для всех работающих на предприятии каждый работник входит в состав какой-либо бригады, кроме нач. базы, зав. складом, зав. делянками и нач. сбыта бригада основное рабочее звено предприятия каждая бригада выполняет только определённые виды работ бригадир работник, возглавляющий бригаду начальник в каждой бригаде обязательно есть бригадир зав. делянками работник, занимающийся выпиской лесобилетов у лесничества и возвратом участков, а также следящий за использованием делянок бригадами эту должность занимает только один работник нач. базы работник, который принимает лес и выдаёт лес цеховым бригадам --//-- зав. складом работник, который принимает готовую продукцию у цеховых бригад и выдаёт её фирмам- клиентам кладовщик --//-- нач. сбыта работник, который непосредственно сотрудничает с фирмами-клиентами и определяет план работы цеховым бригадам --//-- продукция совокупность изделий, которые выпускает предприятие товар вся продукция хранится на одном складе, может иметь одинаковое наименование, но разную цену фирма-клиент фирмы, которые осуществляют заказ и покупку продукции фирма-покупатель, фирма-заказчик делает заказ на продукцию, однако если таковая имеется на складе, может приобрести её сразу телефон средство сообщения между лесничеством, фирмами-клиентами и руководящими работниками, а также работников между собой фирмы-клиенты и работники могут иметь несколько номеров телефонов накладная на возврат делянки лесничеству документ, который свидетельствует, что лесничество приняло делянку у предприятия (зав. делянками) нумерация накладных ведётся в рамках года накладная на заказ товара документ, в котором фирма-клиент указывает какую продукцию она хочет приобрести и в какой срок бланк заказа --//-- накладная на продажу товара документ, который выписывает у зав. складом фирма-клиент, где указывается, какую продукцию она хочет приобретает и когда срок нумерация накладных ведётся в рамках года план работы цеховой бригады график работы бригады на неделю график работы выдаётся цеховым бригадам наличие древесины порода древесины и её количество на делянке - - наличие количество древесины, имеющееся у бригадира и нач. базы - - объём товара количество и вид продукции, которое имеет в наличии бригадир хранение количество продукции на хранении у зав. складом строка лесобилета строка накладной на возврат делянки лесничеству строка плана работы строка накладной на заказ строка накладной на продажу /> /> /> /> /> />

Скорректированнаятаблица «Типы связей»

Тип сущности Тип связи Тип сущности Кардинальность Степень участия наличие древесины указано для делянка M:1 Т: Т древесина характеризует наличие древесины 1:M T:T зав. делянками выписывает лесобилет 1: М Т: Т лесобилет содержит строка лесобилета 1: М Т: Т делянка входит в строка лесобилета 1:1 Т: Т зав. делянками оформляет накладная на возврат делянки лесничеству 1: М Т: Т накладная на возврат делянки лесничеству содержит строка накладной на возврат делянки лесничеству 1: М Т: Т делянка входит в строка накладной на возврат делянки лесничеству 1:1 Т: Т делянка закреплена за бригадир 1:1 Т: Р работник приписан к бригада М:1 T: Т бригадир возглавляет бригада 1:1 Т: Т бригадир имеет в наличие 1: М Р: Т нач. базы имеет в наличие 1: М Т: Т древесина имеется в наличие 1: М Р: Т бригадир выпускает объём товара 1: М Р: Т продукция входит в объём товара 1: М Т: Т продукция имеется на хранение М:1 Р: Т зав. складом имеет на хранение 1:1 Т: Т фирма-клиент выписывает накладная на заказ 1: М Т: Т нач. сбыта оформляет накладная на заказ 1: М Т: Т накладная на заказ содержит строка накладной на заказ 1: М Т: Т продукция входит в строка накладной на заказ 1: М Т: Т фирма-клиент выписывает накладная на продажу 1: М Т: Т зав. складом оформляет накладная на продажу 1: М Т: Т накладная на продажу содержит строка накладной на продажу 1: М Т: Т продукция входит в строка накладной на продажу 1: М Т: Т нач. сбыта выдаёт план работы 1: М Т: Т план работы содержит строка плана работы 1: М Т: Т продукция входит в строка плана работы 1: М Т: Т бригада получает план работы 1: М Р: Т работник имеет телефон М:1 P: Т фирма-клиент имеет телефон М:1 T: Т

Ключи

Тип сущности Первичный ключ Альтернативные ключи древесина порода лесобилет номер делянка номер квадрат, площадь

работник

бригадир

зав. делянками

нач. базы

зав. складом

нач. сбыта

таб. номер ФИО, адрес бригада таб. номер продукция наименование, цена фирма-клиент название, адрес накладная на возврат делянки лесничеству, накладная на заказ и на продажу, план работы номер телефон номер наличие слабая сущность хранение слабая сущность строка лесобилета слабая сущность строка накладной на возврат делянки лесничеству слабая сущность объём товара слабая сущность строка накладной на заказ слабая сущность строка накладной на продажу слабая сущность строка плана работы слабая сущность наличие древесины слабая сущность

2. Построениескорректированной ER– модели

 

/>

 

3. Определение наборовотношений

 

1.        Фирма-клиент (название,адрес, номер телефона)

ПК: название, адрес

ВК: нет

1.        Древесина (порода)

ПК: порода

ВК: нет

2.        Делянка (номер,квадрат, площадь)

ПК: номер

ВК: нет

3.        Работник (таб.номер, ФИО, адрес, телефон, дата поступления, дата назначения, должность, номербригады)

ПК: таб. номер

ВК: номер бригадыссылается на бригада (номер)

4.        Бригадир (таб.номер, ФИО, адрес, телефон, дата поступления, дата назначения, номер бригады)

ПК: таб. номер

ВК: номер бригадыссылается на бригада (номер)

5.        Бригада (номер,специализация, номер цеха)

ПК: номер

ВК: нет

6.        Продукция (наименование,цена, единицы измерения)

ПК: наименование, цена

ВК: нет

7.        Телефон (номер,название фирмы-клиента, адрес фирмы-клиента, таб. номер работника)

ПК: номер

ВК: названиефирмы-клиента, адрес фирмы-клиента ссылается на фирма-клиент (название, адрес)

ВК: таб. номер работникассылается на работник (таб. номер)

8.        Накладная назаказ (номер, дата, срок, таб. номер нач. сбыта, название фирмы-клиента, адресфирмы-клиента, номер телефона фирмы-клиента)

ПК: номер

ВК: названиефирмы-клиента, адрес фирмы-клиента ссылается на фирма-клиент (название, адрес)

ВК: таб. номер начальникасбыта ссылается на работник(таб. номер)

9.        Строка накладнойна заказ (кол-во, наименование продукции, цена продукции, номер накладной)

ПК: номер накладной,наименование продукции, цена продукции

ВК: номер накладнойссылается на накладная на заказ (номер)

ВК: наименование продукции,цена продукции ссылается на продукция (наименование, цена)

10.     Накладная напродажу (номер, дата, таб. номер зав. складом, название фирмы-клиента, адресфирмы-клиента, номер телефона фирмы-клиента)

ПК: номер

ВК: названиефирмы-клиента, адрес фирмы-клиента ссылается на фирма-клиент(название, адрес)

ВК: таб. номер зав.складом ссылается на работник(таб. номер)

11.     Строка накладнойна продажу(кол-во, наименование продукции, цена продукции, номер накладной)

ПК: номер накладной,наименование продукции, цена продукции

ВК: номер накладнойссылается на накладная на продажу(номер)

ВК: наименованиепродукции, цена продукции ссылается на продукция(наименование, цена)

12.     Планработы(номер, дата, срок, объём древесины, таб. номер нач. сбыта, номербригады)

ПК: номер

ВК: таб. номер начальникасбыта ссылается на работник(таб. номер)

ВК: номер бригадыссылается на бригада(номер)

13.     Строка планаработы(кол-во, наименование продукции, цена продукции, номер плана)

ПК: номер плана,наименование продукции, цена продукции

ВК: номер плана ссылаетсяна план работы(номер)

ВК: наименованиепродукции, цена продукции ссылается на продукция(наименование, цена)

14.     Объёмтовара(кол-во, таб. номер бригадира, наименование продукции, цена продукции)

ПК: таб. номер бригадира,наименование продукции, цена продукции

ВК: таб. номер бригадирассылается на работник(таб. номер)

ВК: наименованиепродукции, цена продукции ссылается на продукция(наименование, цена)

15.     Наличиедревесины(кол-во, порода, номер делянки)

ПК: номер делянки, порода

ВК: номер делянкиссылается на делянка(номер)

ВК: порода ссылается надревесина(порода)

16.     Лесобилет(номер,таб. номер зав. делянками, дата)

ПК: номер

ВК: таб. номер зав.делянками ссылается на работник(таб. номер)

17.     Строкалесобилета(номер лесобилета, номер делянки)

ПК: номер лесобилета,номер делянки

ВК: номер лесобилетассылается на лесобилет(номер)

ВК: номер делянкиссылается на делянка(номер)

18.     Накладная навозврат делянки лесничеству(номер, таб. номер зав. делянками, дата)

ПК: номер

ВК: таб. номер зав.делянками ссылается на работник(таб. номер)

19.     Строка накладнойна возврат делянки лесничеству(номер накладной, номер делянки)

ПК: номер накладной,номер делянки

ВК: номер накладнойссылается на накладная на возврат делянки лесничеству(номер)

ВК: номер делянкиссылается на делянка(номер)

20.     Наличие(таб.номер бригадира, таб.номер нач. базы, порода, кол-во)

ПК: таб. бригадира,таб.номер нач. базы, порода

ВК: таб. номер бригадирассылается на бригадир(таб. номер)

ВК: таб. номер нач. базыссылается на работник(таб. номер)

ВК: порода ссылается надревесина(порода)

21.     Хранение(таб.номер зав. складом, наименование продукции, цена продукции, кол-во)

ПК: наименованиепродукции, цена продукции

ВК: таб. номер зав.складом ссылается на работник(таб. номер)

ВК: наименованиепродукции, цена продукции ссылается на продукция(наименование, цена)

4. Проверка набораотношений на соответствие требованиям нормализации

 

Для каждого из отношенийвыпишем функциональные зависимости.

1.        Фирма-клиент

название, адрес – номертелефона

2.        Древесина

порода –

3.        Делянка

номер – квадрат

номер – площадь

4.        Работник

таб. номер – ФИО

таб. номер – адрес

таб. номер – телефон

таб. номер – датапоступления

таб. номер – датаназначения

таб. номер – должность

таб. номер – номербригады

5.        Бригадир

таб. номер – ФИО

таб. номер – адрес

таб. номер – телефон

таб. номер – датапоступления

таб. номер – датаназначения

таб. номер – номербригады

6.        Бригада

номер – специализация

номер – номер цеха

7.        Продукция

наименование, цена –единицы измерения

8.        Телефон

номер – названиефирмы-клиента

номер – адресфирмы-клиента

номер – таб. номерработника

9.        Накладная назаказ

номер – дата

номер – срок

номер – таб. номерначальника сбыта

номер – названиефирмы-клиента

номер – адресфирмы-клиента

номер – телефонфирмы-клиента

10.     Строка накладнойна заказ

номер накладной,наименование продукции, цена продукции – количество

11.     Накладная напродажу

номер – дата

номер – таб. номер зав.складом

номер – названиефирмы-клиента

номер – адресфирмы-клиента

номер – телефонфирмы-клиента

12.     Строка накладнойна продажу

номер накладной,наименование продукции, цена продукции – количество

13.     План работы

номер – дата

номер – срок

номер – таб. номер нач.сбыта

номер – номер бригады

14.     Строка планаработы

номер плана, наименованиепродукции, цена продукции – количество

номер плана, наименованиепродукции, цена продукции – объём древесины

15.     Объём товара

таб. номер бригадира,наименование продукции, цена продукции – количество

16.     Наличие древесины

номер делянки, порода –количество

17.     Лесобилет

номер – таб. номер зав.делянками

номер – дата

18.     Строка лесобилета

номер лесобилета, номерделянки –

19.     Накладная навозврат делянки лесничеству

номер – таб. номер зав.делянками

номер – дата

20.     Строка накладнойна возврат делянки лесничеству

номер накладной, номерделянки

21.     Наличие

таб. номер бригадира,таб. номер нач. базы, порода – количество

22.     Хранение

таб. номер зав. складом,наименование продукции, цена продукции – количество

 

5. Проверка модели навозможность выполнения всех транзакций

Для каждой транзакции на ER-модели обозначим путь её выполнения.

/>


6. Построение окончательноговарианта ER – модели

 

ER–модель, изображённую в пункте 2логического проектирования будет окончательным вариантом, т.к. пунктах 3 -5 ER – модель не претерпела никакихизменений.

7. Определение набораограничений целостности

 

1 Обязательные данные. К ним относятся все атрибуты,составляющие первичные ключи + ещё некоторые атрибуты, которые по постановкезадачи или из смысловых соображений не могут быть пустыми (см. таблицу«Атрибуты» и таблицу ниже).

Тип сущности/

связи

Атрибут Описание Тип данных строка накладной на заказ количество количество товара плавающий строка накладной на продажу количество количество товара плавающий строка плана работы количество количество товара плавающий хранение кол-во кол-во продукции у зав. складом плавающий наличие кол-во кол-во древесины у бригадира или нач. базы плавающий объём товара кол-во кол-во продукции, которое имеется у бригадира плавающий наличие древесины кол-во кол-во древесины на делянке плавающий

2 Ограничение доменоватрибутов

См. таблицу доменов.

3 Ограничениессылочной целостности

Для всех внешних ключей определим действие на случайудаления или изменения родительских записей.

Работник

ВК: номер бригадыссылается на бригада(номер)

при изменении CASCADE, при удалении NO ACTION

Бригадир

ВК: номер бригадыссылается на бригада(номер)

при изменении CASCADE, при удалении NO ACTION

Телефон

ВК: названиефирмы-клиента, адрес фирмы-клиента ссылается на фирма-клиент(название, адрес)

при изменении CASCADE, при удалении CASCADE

ВК: таб. номер работникассылается на работник(таб. номер)

при изменении CASCADE, при удалении CASCADE

Накладная на заказ

ВК: названиефирмы-клиента, адрес фирмы-клиента ссылается на фирма-клиент(название, адрес)

при изменении NO ACTION, при удалении NO ACTION

ВК: таб. номер начальникасбыта ссылается на работник(таб. номер)

при изменении CASCADE, при удалении NO ACTION

Строка накладной на заказ

ВК: номер накладнойссылается на накладная на заказ(номер)

при изменении CASCADE, при удалении NO ACTION

ВК: наименованиепродукции, цена продукции ссылается на продукция(наименование, цена)

при изменении NO ACTION, при удалении NO ACTION

Накладная на продажу

ВК: названиефирмы-клиента, адрес фирмы-клиента ссылается на фирма-клиент(название, адрес)

при изменении NO ACTION, при удалении NO ACTION

ВК: таб. номер зав.складом ссылается на работник(таб. номер)

при изменении CASCADE, при удалении NO ACTION

Строка накладной напродажу

ВК: номер накладнойссылается на накладная на продажу(номер)

при изменении CASCADE, при удалении NO ACTION

ВК: наименованиепродукции, цена продукции ссылается на продукция(наименование, цена)

при изменении NO ACTION, при удалении NO ACTION

План работы

ВК: таб. номер начальникасбыта ссылается на работник(таб. номер)

при изменении CASCADE, при удалении NO ACTION

ВК: номер бригадыссылается на бригада(номер)

при изменении CASCADE, при удалении NO ACTION

Строка плана работы

ВК: номер плана ссылаетсяна план работы(номер)

при изменении CASCADE, при удалении NO ACTION

ВК: наименованиепродукции, цена продукции ссылается на продукция(наименование, цена)

при изменении NO ACTION, при удалении NO ACTION

Объём товара

ВК: таб. номер бригадирассылается на работник(таб. номер)

при изменении CASCADE, при удалении NO ACTION

ВК: наименованиепродукции, цена продукции ссылается на продукция(наименование, цена)

при изменении NO ACTION, при удалении NO ACTION

Наличие древесины

ВК: номер делянкиссылается на делянка(номер)

при изменении CASCADE, при удалении NO ACTION

ВК: порода ссылается надревесина(порода)

при изменении NO ACTION, при удалении NO ACTION

Лесобилет

ВК: таб. номер зав.делянками ссылается на работник(таб. номер)

при изменении CASCADE, при удалении NO ACTION

Строка лесобилета

ВК: номер лесобилетассылается на лесобилет(номер)

при изменении CASCADE, при удалении NO ACTION

ВК: номер делянкиссылается на делянка(номер)

при изменении CASCADE, при удалении NO ACTION

Накладная на возвратделянки лесничеству

ВК: таб. номер зав.делянками ссылается на работник(таб. номер)

при изменении CASCADE, при удалении NO ACTION

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

ВК: номер накладнойссылается на накладная на возврат делянки лесничеству(номер)

при изменении CASCADE, при удалении NO ACTION

ВК: номер делянкиссылается на делянка(номер)

при изменении CASCADE, при удалении NO ACTION

Наличие

ВК: таб. номер работникассылается на работник(таб. номер)

при изменении CASCADE, при удалении NO ACTION

ВК: порода ссылается надревесина(порода)

при изменении NO ACTION, при удалении NO ACTION

Хранение

ВК: таб. номер зав.складом ссылается на работник(таб. номер)

при изменении CASCADE, при удалении NO ACTION

ВК: наименованиепродукции, цена продукции ссылается на продукция(наименование, цена)

при изменении NO ACTION, при удалении NO ACTION


4 Бизнесправила

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


IVФизическое проектирование

 

1. Введение контролируемойизбыточности

 

1. Замена ПКсемантически незначащими атрибутами

 

Т.к. значение первичногоключа «Таб. номер» для типа экземпляра сущности «Работник» освобождается, например,при увольнении работника, но в качестве внешнего ключа может встречаться водной или нескольких дочерних таблицах, то были введён суррогатный ключ«Условный номер» и новый атрибут «Уволен» для логического удаления работника.

Чтобы не отслеживать уникальностьпервичного ключа в таблицах «Работник» и «Бригадир», они были объединены в однутаблицу «Работник». В то же время, для уменьшения объёма таблицы «Работник»совокупность значений атрибута «Должность» было выделено в отдельную таблицу«Должность» с полями «Условный номер», «Название» и «Занята». Последнее полеслужит для контроля выполнения бизнес-правил.

Те же действия былипроведены и в отношении типа сущности «Бригада».

Для таблиц «Фирма-клиент»и «Продукция» также были введены суррогатные ключи «Условный номер» и атрибут«Удалён» для повышения скорости выполнения запросов и логического удалениякортежей отношений.

Для таблиц «План работы»,«Делянка» были введены дополнительные атрибуты «Выполнен» и «Выпилена» дляконтроля выполнения бизнес-правил.

В таблице «Древесина»первичный ключ «Порода» был заменён на суррогатный «Условный номер» дляуменьшения объёма дочерних таблиц.

В таблице «Хранение»ввиду своей бесполезности был удалён внешний ключ «Таб. номер зав. складом».


2 Создание таблиц иреализация ограничений

 

Созданиетаблиц и реализация ограничений, в соответствие с ранее определённым наборомотношений, при помощи выбранной СУБД. В качестве СУБД выберем InterBase 6.0.

Скрипты созданиятаблиц

Замечание: различного рода ограниченияреализуются с помощью доменов, триггеров и хранимых процедур.

CREATE TABLE«Brigada» (

 «Usl_nomer»INTEGER NOT NULL,

 «Specialisacia»VARCHAR(20) NOT NULL,

 «Nomer_Ceha»INTEGER,

 «N_Brigada»INTEGER NOT NULL,

 «Uv»«Bool» NOT NULL);

ALTER TABLE«Brigada» ADD CONSTRAINT «FK_Brigada» PRIMARY KEY(«Usl_nomer»);

CREATE TABLE«Delanka» (

 «Numer»«Nomer»,

 «Kvadrat»VARCHAR(5) NOT NULL,

 «Plotschad»DOUBLE PRECISION NOT NULL,

 «NBrigadir»INTEGER,

 «Isp»SMALLINT DEFAULT 0 NOT NULL);

ALTER TABLE«Delanka» ADD CONSTRAINT «FK_Delanka» PRIMARY KEY(«Numer»);


ALTER TABLE«Delanka» ADD CONSTRAINT «FK_N_Brigadir_Delanka» FOREIGNKEY («NBrigadir») REFERENCES «Rabotnik»(«Usl_nomer») ON DELETE CASCADE ON UPDATE CASCADE;

CREATE TABLE«Dolgnost» (

 «Zanata»«Bool»,

 «N_Dolgn»INTEGER NOT NULL,

 «Name_Dolgn»VARCHAR(20) NOT NULL COLLATE PXW_CYRL);

ALTER TABLE«Dolgnost» ADD CONSTRAINT «FK_Dolgnost» PRIMARY KEY(«N_Dolgn»);

CREATE TABLE«Drevesina» (

 «Poroda»VARCHAR(20) NOT NULL,

 «Usl_nomer»INTEGER NOT NULL);

ALTER TABLE«Drevesina» ADD CONSTRAINT «FK_Drevesina» PRIMARY KEY(«Usl_nomer»);

CREATE TABLE«Hranenie» (

 «N_Produkcia»INTEGER NOT NULL,

 «Kolvo»DOUBLE PRECISION NOT NULL);

ALTER TABLE«Hranenie» ADD CONSTRAINT «FK_Hranenie» PRIMARY KEY(«N_Produkcia»);

ALTER TABLE«Hranenie» ADD CONSTRAINT «FK_N_Produkcia_Hranenie» FOREIGNKEY («N_Produkcia») REFERENCES «Produkcia»(«Usl_nomer») ON UPDATE CASCADE;

CREATE TABLE«Klient» (

 «Usl_nomer»INTEGER NOT NULL,

 «Name»FIO COLLATE PXW_CYRL,

 «Adres»«Adress» COLLATE PXW_CYRL,

 «Uvolen»«Bool» NOT NULL);

ALTER TABLE«Klient» ADD CONSTRAINT «FK_Klient» PRIMARY KEY(«Usl_nomer»);

CREATE TABLE«Lesobilet» (

 «Numer»«Nomer»,

 «Data»DATE NOT NULL,

 «N_Zav_Delankami»INTEGER NOT NULL);

ALTER TABLE«Lesobilet» ADD CONSTRAINT «PK_Lesobilet» PRIMARY KEY(«Numer»);

ALTER TABLE«Lesobilet» ADD CONSTRAINT «FK_N_Zav_Del_Lesobilet» FOREIGNKEY («N_Zav_Delankami») REFERENCES «Rabotnik»(«Usl_nomer») ON UPDATE CASCADE;

CREATE TABLE«Naklad_Lesnichestvo» (

 «Numer»«Nomer»,

 «Data»DATE NOT NULL,

 «N_Zav_Delankami»INTEGER NOT NULL);

ALTER TABLE«Naklad_Lesnichestvo» ADD CONSTRAINT«PK_Naklad_Lesnichestvo» PRIMARY KEY («Numer»);

ALTER TABLE«Naklad_Lesnichestvo» ADD CONSTRAINT«FK_N_Zav_Del_Naklad_Lesn» FOREIGN KEY («N_Zav_Delankami»)REFERENCES «Rabotnik» («Usl_nomer») ON UPDATE CASCADE;

CREATE TABLE«Naklad_Prodaga» (

 «Data»DATE NOT NULL,

 «N_Firma»INTEGER NOT NULL,

 «Numer»«Nomer» NOT NULL,

 «N_Zav_Skladom»INTEGER NOT NULL);

ALTER TABLE«Naklad_Prodaga» ADD CONSTRAINT «PK_Naklad_Prodaga» PRIMARYKEY («Numer»);

ALTER TABLE«Naklad_Prodaga» ADD CONSTRAINT «FK_N_Firma_Nakl_Prodaga»FOREIGN KEY («N_Firma») REFERENCES «Klient»(«Usl_nomer») ON UPDATE CASCADE;

ALTER TABLE«Naklad_Prodaga» ADD CONSTRAINT«FK_N_Zav_Skl_Naklad_Prodaga» FOREIGN KEY («N_Zav_Skladom»)REFERENCES «Rabotnik» («Usl_nomer») ON UPDATE CASCADE;

CREATE TABLE«Naklad_Zakaz» (

 «Numer»«Nomer»,

 «Data»DATE NOT NULL,

 «Srok»INTEGER NOT NULL,

 «N_Firma»INTEGER NOT NULL,

 «N_Nach_Sbita»INTEGER NOT NULL);

ALTER TABLE«Naklad_Zakaz» ADD CONSTRAINT «FK_Naklad_Zakaz» PRIMARY KEY(«Numer»);

ALTER TABLE«Naklad_Zakaz» ADD CONSTRAINT «FK_N_Firma_Nakl_Zakaz»FOREIGN KEY («N_Firma») REFERENCES «Klient»(«Usl_nomer») ON UPDATE CASCADE;

ALTER TABLE«Naklad_Zakaz» ADD CONSTRAINT «FK_N_Nach_Sbita_Nakl_Zakaz»FOREIGN KEY («N_Nach_Sbita») REFERENCES «Rabotnik»(«Usl_nomer») ON UPDATE CASCADE;

CREATE TABLE«Nalichie» (

 «N_Brigadir»INTEGER,

 «N_Nach_Baza»INTEGER,

 «N_Drevesina»INTEGER NOT NULL,

 «Kolvo»INTEGER NOT NULL);

ALTER TABLE«Nalichie» ADD CONSTRAINT «FK_N_Brigadir» FOREIGN KEY(«N_Brigadir») REFERENCES «Rabotnik»(«Usl_nomer») ON UPDATE CASCADE;

ALTER TABLE«Nalichie» ADD CONSTRAINT «FK_N_Drevesina_Nalichie» FOREIGNKEY («N_Drevesina») REFERENCES «Drevesina» («Usl_nomer»)ON UPDATE CASCADE;

ALTER TABLE«Nalichie» ADD CONSTRAINT «FK_N_Nach_Bazi» FOREIGN KEY(«N_Nach_Baza») REFERENCES «Rabotnik»(«Usl_nomer») ON UPDATE CASCADE;

CREATE TABLE«Nalichie_Drevesina» (

 «N_Drevesina»INTEGER NOT NULL,

 «N_Delanka»INTEGER NOT NULL,

 «Kolvo»DOUBLE PRECISION NOT NULL);

ALTER TABLE«Nalichie_Drevesina» ADD CONSTRAINT «FK_Nalichie_Drevesina»PRIMARY KEY («N_Drevesina», «N_Delanka»);

ALTER TABLE«Nalichie_Drevesina» ADD CONSTRAINT «FK_N_Delanka_Nal_Drev»FOREIGN KEY («N_Delanka») REFERENCES «Delanka»(«Numer») ON UPDATE CASCADE;

ALTER TABLE«Nalichie_Drevesina» ADD CONSTRAINT«FK_N_Drevesina_Nal_Drev» FOREIGN KEY («N_Drevesina»)REFERENCES «Drevesina» («Usl_nomer») ON UPDATE CASCADE;

CREATE TABLE«Objem» (

 «N_Brigadir»INTEGER NOT NULL,

 «N_Produkcia»INTEGER NOT NULL,

 «Kolvo»DOUBLE PRECISION NOT NULL);

ALTER TABLE«Objem» ADD CONSTRAINT «FK_Objem» PRIMARY KEY(«N_Brigadir», «N_Produkcia»);

ALTER TABLE«Objem» ADD CONSTRAINT «FK_N_Brigadir_Objem» FOREIGN KEY(«N_Brigadir») REFERENCES «Rabotnik»(«Usl_nomer») ON UPDATE CASCADE;

ALTER TABLE«Objem» ADD CONSTRAINT «FK_N_Produkcia_Objem» FOREIGN KEY(«N_Produkcia») REFERENCES «Produkcia»(«Usl_nomer») ON UPDATE CASCADE;

CREATE TABLE«Plan» (

 «Numer»«Nomer»,

 «Data»DATE NOT NULL,

 «Srok»INTEGER NOT NULL,

 «N_Brigada»INTEGER NOT NULL,

 «Objem_Drevesini»DOUBLE PRECISION NOT NULL,

 «Isp»SMALLINT DEFAULT 0 NOT NULL,

 «N_Nach_Sbita»INTEGER NOT NULL);

ALTER TABLE«Plan» ADD CONSTRAINT «FK_Plan» PRIMARY KEY(«Numer»);

ALTER TABLE«Plan» ADD CONSTRAINT «FK_N_Brigada_Plan» FOREIGN KEY(«N_Brigada») REFERENCES «Brigada» («Usl_nomer»)ON UPDATE CASCADE;

ALTER TABLE«Plan» ADD CONSTRAINT «FK_N_Nach_Sbita_Plan» FOREIGN KEY(«N_Nach_Sbita») REFERENCES «Rabotnik»(«Usl_nomer») ON UPDATE CASCADE;

CREATE TABLE«Produkcia» (

 «Usl_nomer»INTEGER NOT NULL,

 «Name»FIO,

 «Cena»DOUBLE PRECISION NOT NULL,

 «Ed_Izm»VARCHAR(10) NOT NULL,

 «Old»SMALLINT DEFAULT 0 NOT NULL);

ALTER TABLE«Produkcia» ADD CONSTRAINT «FK_Produkcia» PRIMARY KEY(«Usl_nomer»);

CREATE TABLE«Rabotnik» (

 «Usl_nomer»INTEGER NOT NULL,

 «Tab_numer»«Tab_nomer»,

 «R_Fio»FIO COLLATE PXW_CYRL,

 «Adres»«Adress» COLLATE PXW_CYRL,

 «Data_Postup»DATE NOT NULL,

 «Data_Nazn»DATE,

 «Dolgnost»INTEGER,

 «N_Brigadi»INTEGER,

 «Uvolen»«Bool» NOT NULL);

ALTER TABLE«Rabotnik» ADD CONSTRAINT «FK_Rabotnik» PRIMARY KEY(«Usl_nomer»);

ALTER TABLE«Rabotnik» ADD CONSTRAINT «FK_N_Brigada» FOREIGN KEY(«N_Brigadi») REFERENCES «Brigada» («Usl_nomer»)ON UPDATE CASCADE;

ALTER TABLE«Rabotnik» ADD CONSTRAINT «FK_N_Dolgnost» FOREIGN KEY(«Dolgnost») REFERENCES «Dolgnost» («N_Dolgn») ONUPDATE CASCADE;

CREATE TABLE«Stroka_Lesn» (

 «N_Naklad_Lesn»INTEGER NOT NULL,

 «N_Delanka»INTEGER NOT NULL);

ALTER TABLE«Stroka_Lesn» ADD CONSTRAINT «FK_Stroka_Lesn» PRIMARY KEY(«N_Naklad_Lesn», «N_Delanka»);

ALTER TABLE«Stroka_Lesn» ADD CONSTRAINT «FK_N_Delanka_Stroka_Lesn»FOREIGN KEY («N_Delanka») REFERENCES «Delanka» («Numer»)ON UPDATE CASCADE;

ALTER TABLE«Stroka_Lesn» ADD CONSTRAINT «FK_N_Nakl_Lesn_Stroka_Lesn»FOREIGN KEY («N_Naklad_Lesn») REFERENCES«Naklad_Lesnichestvo» («Numer») ON UPDATE CASCADE;

CREATE TABLE«Stroka_Lesobilet» (

 «N_Lesobilet»INTEGER NOT NULL,

 «N_Delanka»INTEGER NOT NULL);

ALTER TABLE«Stroka_Lesobilet» ADD CONSTRAINT «FK_Stroka_Lesobilet»PRIMARY KEY («N_Lesobilet», «N_Delanka»);

ALTER TABLE«Stroka_Lesobilet» ADD CONSTRAINT «FK_N_Delanka_Str_Bilet»FOREIGN KEY («N_Delanka») REFERENCES «Delanka»(«Numer») ON UPDATE CASCADE;

ALTER TABLE«Stroka_Lesobilet» ADD CONSTRAINT«FK_N_Lesobilet_Str_Bilet» FOREIGN KEY («N_Lesobilet»)REFERENCES «Lesobilet» («Numer») ON UPDATE CASCADE;

CREATE TABLE«Stroka_Plana» (

 «N_Plan»INTEGER NOT NULL,

 «N_Produkcia»INTEGER NOT NULL,

 «Kolvo»DOUBLE PRECISION NOT NULL);

ALTER TABLE«Stroka_Plana» ADD CONSTRAINT «FK_Stroka_Plana» PRIMARY KEY(«N_Plan», «N_Produkcia»);

ALTER TABLE«Stroka_Plana» ADD CONSTRAINT «FK_N_Plan_Stroka_Plana»FOREIGN KEY («N_Plan») REFERENCES «Plan»(«Numer») ON UPDATE CASCADE;

ALTER TABLE«Stroka_Plana» ADD CONSTRAINT «FK_N_Produkcia_Stroka_Plana»FOREIGN KEY («N_Produkcia») REFERENCES «Produkcia»(«Usl_nomer») ON UPDATE CASCADE;

CREATE TABLE«Stroka_Prodaga» (

 «N_Naklad_Prodaga»INTEGER NOT NULL,

 «N_Produkcia»INTEGER NOT NULL,

 «Kolvo»DOUBLE PRECISION NOT NULL);

ALTER TABLE«Stroka_Prodaga» ADD CONSTRAINT «FK_Stroka_Prodaga» PRIMARYKEY («N_Naklad_Prodaga», «N_Produkcia»);

ALTER TABLE«Stroka_Prodaga» ADD CONSTRAINT «FK_N_Produkcia_Str_Prod»FOREIGN KEY («N_Produkcia») REFERENCES «Produkcia»(«Usl_nomer») ON UPDATE CASCADE;

CREATE TABLE«Stroka_Zakaz» (

 «N_Naklad_Zakaz»INTEGER NOT NULL,

 «N_Produkcia»INTEGER NOT NULL,

 «Kolvo»DOUBLE PRECISION NOT NULL);

ALTER TABLE«Stroka_Zakaz» ADD CONSTRAINT «FK_Stroka_Zakaz» PRIMARY KEY(«N_Naklad_Zakaz», «N_Produkcia»);

ALTER TABLE«Stroka_Zakaz» ADD CONSTRAINT «FK_N_Nakl_Z_Stroka_Zakaz»FOREIGN KEY («N_Naklad_Zakaz») REFERENCES «Naklad_Zakaz»(«Numer») ON UPDATE CASCADE;

ALTER TABLE«Stroka_Zakaz» ADD CONSTRAINT «FK_N_Produkcia_Stroka_Zakaz»FOREIGN KEY («N_Produkcia») REFERENCES «rodukcia»(«Usl_nomer») ON UPDATE CASCADE;

CREATE TABLE«Telefon» (

 «Nomer»«Nomer_Tlf» NOT NULL,

 «N_Firma»INTEGER,

 «N_Rabotnik»INTEGER);

ALTER TABLE«Telefon» ADD CONSTRAINT «PK_Telefon» PRIMARY KEY(«Nomer»);

ALTER TABLE«Telefon» ADD CONSTRAINT «FK_N_Rabotnik_Tlf» FOREIGN KEY(«N_Rabotnik») REFERENCES «Rabotnik»(«Usl_nomer») ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE«Telefon» ADD CONSTRAINT «FK_N_firma_Tlf» FOREIGN KEY(«N_Firma») REFERENCES «Klient» («Usl_nomer») ONDELETE CASCADE ON UPDATE CASCADE;

3 Создание вторичныхиндексов

 

Для повышенияпроизводительности в таблицах «Работник», «Продукция», «Клиент» были созданывторичные индексы.

Скрипты созданиявторичных индексов

CREATE INDEX «Rabotnik_IDX1» ON «Rabotnik» («R_Fio»);

CREATE INDEX«Rabotnik_IDX2» ON «Rabotnik» («Adres»);

CREATE INDEX«Produkcia_IDX1» ON «Produkcia» («Name»);

CREATE INDEX«Produkcia_IDX2» ON «Produkcia» («Cena»);

CREATE UNIQUEINDEX «Klient_IDX1» ON «Klient» («Name»);

CREATE INDEX«Klient_IDX2» ON «Klient» («Adres»);

4 Права доступа

 

Транзакции 1,2 выполняетотдел кадров

Транзакции 3-6 — зав.делянками

Транзакции 9,7 — нач.базы

Транзакции 8,11,12 — нач.сбыта

Транзакции 10,13 — зав.складом

Приведемпримеры таблиц и хранимых процедур.

Листинг процедурыдобавления накладной на заказ товара

procedureTDob_Nakl_Zakaz.Button1Click(Sender: TObject);

vari,j:Integer;

 Ok:Boolean;

begin

 Ok:=False;

 if(notDM4.IBTrans_Write.Active)

 thenDM4.IBTrans_Write.StartTransaction;

 j:=0;

 if((StringReplace(MaskEdit1.EditText,'','',[rfReplaceAll])<>'') and

 (StringReplace(MaskEdit2.EditText,'','',[rfReplaceAll])<>''))

 then

 begin

 DM4.IBSP_Dob_Nakl_Z.ParamByName('Name').AsString:=

 ComboBox1.Text;

 DM4.IBSP_Dob_Nakl_Z.ParamByName('Adres').AsString:=

 Edit2.Text;

 DM4.IBSP_Dob_Nakl_Z.ParamByName('Nomer').AsInteger:=

 StrToInt(StringReplace(MaskEdit1.Text,'','',[rfReplaceAll]));

 DM4.IBSP_Dob_Nakl_Z.ParamByName('Srok').AsInteger:=

 StrToInt(StringReplace(MaskEdit2.Text,'','',[rfReplaceAll]));

 DM4.IBSP_Dob_Nakl_Z.ParamByName('Data').AsDate:=

 DateTimePicker1.Date;

 try

 DM4.IBSP_Dob_Nakl_Z.Prepare;

 DM4.IBSP_Dob_Nakl_Z.ExecProc;

 Ok:=True;

 if(Ok) then

 begin

 for i:=1 toValueListEditor1.RowCount-1 do

 begin

if(StringReplace(StringReplace(ValueListEditor1.Values[ValueListEditor1.Keys[i]],'','',[rfReplaceAll]),'.',',',[rfReplaceAll])<>'')

 then

 begin

 DM4.IBSP_Dob_Str_Nakl_Z.ParamByName('NNakl_Zakaz').AsInteger:=

 StrToInt(StringReplace(MaskEdit1.EditText,'','',[rfReplaceAll]));

 DM4.IBSP_Dob_Str_Nakl_Z.ParamByName('Naimen').AsString:=

 ValueListEditor1.Keys[i];

 DM4.IBSP_Dob_Str_Nakl_Z.ParamByName('Kolvo').AsFloat:=

StrToFloat(StringReplace(StringReplace(ValueListEditor1.Values[ValueListEditor1.Keys[i]],'','',[rfReplaceAll]),'.',',',[rfReplaceAll]));

 DM4.IBSP_Dob_Str_Nakl_Z.ParamByName('Cena').AsFloat:=

 StrToFloat(ListBox1.Items[i-1]);

 DM4.IBSP_Dob_Str_Nakl_Z.Prepare;

 DM4.IBSP_Dob_Str_Nakl_Z.ExecProc;

 j:=j+1;

 end;

 end

 end;

 if((Ok) and(j<>0))

 then

 DM4.IBTrans_Write.Commit

 else ShowMessage('Ошибка добавления накладной !');

 except

 on E:Exception do

 begin

 if(Pos('Накладная с таким номером уже есть !!!',E.Message)<>0) then

 ShowMessage(' Накладная с таким номером уже есть!')

 else

 ShowMessage('Ошибка БД');

 DM4.IBTrans_Write.Rollback;

 end;

 end;

 end

 else ShowMessage('Введите номер накладной или сроквыполнения !');

 end;

Листинг процедурыдобавления лесобилета

procedure TDob_Lesobilet.Button1Click(Sender:TObject);

vari,j:Integer;

begin

 if(notDM1.IBTrans_Write.Active)

 thenDM1.IBTrans_Write.StartTransaction;

 j:=0;

 try

 if(Kol_Del=0)then

 begin

 if(Trim(MaskEdit1.EditText)<>'')then

 begin

 DM1.IBSP_Dob_Lesobilet.ParamByName('Nomer').AsInteger:=

 StrToInt(Trim(MaskEdit1.EditText));

 DM1.IBSP_Dob_Lesobilet.ParamByName('Data').AsDate:=

 DateTimePicker1.Date;

 DM1.IBSP_Dob_Lesobilet.Prepare;

 DM1.IBSP_Dob_Lesobilet.ExecProc;

 Ok:=True;

 MaskEdit1.ReadOnly:=True;

 Kol_Del:=Kol_Del+1;

 end

 else

 begin

 ShowMessage('Введите номер лесобилета !');

 Ok:=False;

 end

 end;

 if((Ok) and(Trim(MaskEdit2.EditText)<>'') and

 (Trim(MaskEdit3.EditText)<>'*')and (Trim(MaskEdit4.EditText)<>','))

 then

 begin

 DM1.IBSP_Dob_Delanki.ParamByName('N_Delanka').AsInteger:=

 StrToInt(Trim(MaskEdit2.EditText));

 DM1.IBSP_Dob_Delanki.ParamByName('Kvadrat').AsString:=

 Trim(MaskEdit3.EditText);

 DM1.IBSP_Dob_Delanki.ParamByName('Plotschad').AsFloat:=

 StrToFloat(Trim(MaskEdit4.EditText));

 DM1.IBSP_Dob_Delanki.Prepare;

 DM1.IBSP_Dob_Delanki.ExecProc;

 DM1.IBSP_Dob_Str_Bilet.ParamByName('NLesobilet').AsInteger:=

 StrToInt(Trim(MaskEdit1.EditText));

 DM1.IBSP_Dob_Str_Bilet.ParamByName('NDelanka').AsInteger:=

 StrToInt(Trim(MaskEdit2.EditText));

 DM1.IBSP_Dob_Str_Bilet.Prepare;

 DM1.IBSP_Dob_Str_Bilet.ExecProc;

 for i:=1 toValueListEditor1.RowCount-1 do

 begin

 if(ValueListEditor1.Values[ValueListEditor1.Keys[i]]<>'')then

 begin

 if(StrToFloat(ValueListEditor1.Values[ValueListEditor1.Keys[i]])>0)

 then

 begin

 DM1.IBSP_Dob_Nal_Drevesini.ParamByName('Kolvo').AsFloat:=

 StrToFloat(ValueListEditor1.Values[ValueListEditor1.Keys[i]]);

 DM1.IBSP_Dob_Nal_Drevesini.ParamByName('Poroda').AsString:=

 ValueListEditor1.Keys[i];

 DM1.IBSP_Dob_Nal_Drevesini.ParamByName('Nomer').AsInteger:=

 StrToInt(Trim(MaskEdit2.EditText));

 DM1.IBSP_Dob_Nal_Drevesini.Prepare;

 DM1.IBSP_Dob_Nal_Drevesini.ExecProc;

 end

 end

 else

 j:=j+1;

 end

 end;

 if((Ok) and(j<i)) then

 DM1.IBTrans_Write.Commit;

 except

 on E:Exception do

 begin

 if(Pos('Лесобилет стаким номером уже существует !!!',E.Message)<>0) then

 ShowMessage(' Лесобилет с таким номером ужесуществует !')

 else if(Pos(‘Делянка стаким номером уже существует !!!',E.Message)<>0) then

 ShowMessage(' Делянка с таким номером ужесуществует !')

 else

 ShowMessage('Ошибка БД !');

 DM1.IBTrans_Write.Rollback;

 end;

 end

end;

/>

еще рефераты
Еще работы по информатике, программированию