Определение функциональных зависимостей
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Введение

 

Необходимо спроектировать базу данных «Хозяйственный учет футбольного клуба». Также целью данной работы является ознакомление с основными принципами построения, использования и оптимизации реляционных баз данных.

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

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

Данная задача будет решаться с помощью анализа предметной области, ее формализации с помощью функциональных зависимостей. Затем необходимо провести этапы минимизации системы функциональных зависимостей, описывающих предметную область, и на основании полученной редуцированной системы спроектировать требуемую модель базы данных.

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

 


1 Техническое задание

 


Основание для разработки

 

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

 

Назначение разработки

 

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

 

Стандарты

 

Данная работа оформлена в соответствии со стандартом СТУ 04.02.030.-2008.

 

Требования к программе или программному изделию

 

Спроектировать базу данных для спортивной базы футбольного клуба. Описать предметную область, разработать словарь понятий и терминов, построить систему функциональных зависимостей. Синтезировать схему базы данных на основании функциональных зависимостей (построение неизбыточного покрытия, построение леворедуцированного неизбыточного покрытия, построение праворедуцированного неизбыточного покрытия, построение классов эквивалентностей, построение минимального покрытия). Построить уточненную концептуальную модель в виде ER-диаграммы, запросы предметной области. Записать минимизированные запросы на языке SQL.

 

1.4.1 Результирующие компоненты изделия

База данных в визуальной среде разработки систем управления реляционными базами данных Microsoft Visual FoxPro и все сопровождающие файлы.

 

Носители информации

Продукт должен размещаться в виде файлов на CD дисках. В процессе работы могут использоваться Flash, CD-R/-RW, DVD-R/RW или другие носители информации.

 

Требования к составу и параметрам технических средств

Программный комплекс должен корректно работать на компьютере со следующими техническими характеристиками:

− процессор Pentium V 2200 МГц;

− оперативная память объемом 1024 Мб;

− жесткий диск Seagate Barracuda, объемом 120 Гб;

− видеоадаптер SVGA;

− клавиатура;

− манипулятор типа “мышь”;

устройство удаленного доступа к сети: модем или сетевая карта.

 


 


Технический проект

Описание предметной области

 

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

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

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

Для инвентаря и техники хранится информация о фирме-изготовителе и модели товара. Для мебели должна быть отражена информация о фирме-производителе, цвете, габаритных размерах (длина, ширина, высота).

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

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

Инвентарь, техника и мебель могут быть списаны, при этом хранится дата списания.

 

Словарь понятий и терминов

 

Словарь понятий и терминов приведен в таблицах 2.1 – 2.12.

Таблица 2.1 - Общая информация

Атрибут Смысл Пример
sp Серия паспорта 3569
np Номер паспорта  0123654
fam Фамилия Иванов
im Имя Иван
otch Отчество Иванович
pol Пол мужской
dateborn Дата рождения 12.05.1960
datevidachi Дата выдачи паспорта 12.24.2000
kemvidan Кем выдан паспорт Отделом милиции №3 УВД г.Москва
country Страна Россия
city Город Москва
street Улица Первомайская
numstreet Номер улицы 45
numflat Номер квартиры 12
dolgnost Должность главный врач

 

Таблица 2.2 – Игроки

Атрибут Смысл Пример
sp Серия паспорта 3569
np Номер паспорта  0123654
date Дата 12.12.2004
rost Рост 180
ves Вес 79
staff Состав основной
number Номер 12
status Статус нападающий

 

Таблица 2.3 – Помещение

Атрибут Смысл Пример
num_p Номер помещения 15
square Площадь 123
naznachenie Назначение столовая

 


 

Таблица 2.4 - Комната

Атрибут Смысл Пример
num_p Номер помещения 15
room Номер комнаты 3

 

Таблица 2.5 – Спортивный зал

Атрибут Смысл Пример
num_p Номер помещения 15
type_zal Тип зала Тренажерный зал
sp Серия паспорта 1226
np Номер паспорта 456987

 

Таблица 2.6 – Поступление объектов

Атрибут Смысл Пример
code_obj Код объекта 15
Kol Количество 40
date Дата поступления 04.24.2008
balance Балансовая стоимость 450

 

Таблица 2.7 – Спортивный инвентарь

Атрибут Смысл Пример
code_obj Код объекта 15
firm_inv Фирма-изготовитель Mizuno
model_inv Модель GIM12

 

Таблица 2.8 – Техника

Атрибут Смысл Пример значения
code_obj Код объекта 15
firm_tec Фирма-изготовитель Samsung
model_tec Модель SG-125

 

Таблица 2.9 – Мебель

Атрибут Смысл Пример значения
code_obj Код объекта 115
firm_meb Фирма-изготовитель «Мир мебели»
dlina Длина 125
width Ширина 50
height Высота 70
material_meb Материал Дуб
Цвет color_meb Орех

 

Таблица 2.10– Мяч

Атрибут Смысл Пример значения
code_obj Код объекта 15
material_ball Материал кожа

 

Таблица 2.11 – Футбольные ворота

Атрибут Смысл Пример значения
code_obj Код объекта 24
kind Вид ворот стандартные
height Высота 123
shirina Ширина 365

 

Таблица 2.12 – Тренажер

Атрибут Смысл Пример значения
code_obj Код объекта 65
type_tren Тип тренажера беговая дорожка

 

Таблица 2.13 – Телевизор

Атрибут Смысл Пример значения
code_obj Код объекта 65
diagonal Диагональ экрана 54
screen Тип экрана  

 

Таблица 2.14 – Холодильник

Атрибут Смысл Пример значения
code_obj Код объекта 668
height Высота 125
width Ширина 105
depth Глубина 90
sum_sq_polok Площадь полок 126
com_volume Общий объем 368
userful_volume Используемый объем 360

Таблица 2.15 – Пылесос

Атрибут Смысл Пример значения
code_obj Код объекта 268
moshnost Мощность 54

 

Таблица 2.16 – Кровать

Атрибут Смысл Пример значения
code_obj Код объекта 45
Type_bed Тип кровати односпальная

 

Таблица 2.17 – Шкаф

Атрибут Смысл Пример значения
code_obj Код объекта 123
type_shkaf Тип шкафа плательный

 

Таблица 2.18 – Стол

Атрибут Смысл Пример значения
code_obj Код объекта 569
type_table Тип стола письменный

 

Таблица 2.19 – Размещение спортивного инвентаря по залам

Атрибут Смысл Пример значения
Inv_number Инвентарный номер 123654
date Дата 05.15.2010
num_p Номер зала 56

 

Таблица 2.20 – Расселение людей по комнатам

Атрибут Смысл Пример значения
Inv_number Номер помещения 123654
sp Серия паспорта 1236
np Номер паспорта 566002

 

Таблица 2.21 – Инвентарные номера спортивного инвентаря

Атрибут Смысл Пример значения
Inv_number Инвентарный номер 123654
code_obj Код объекта 165

Таблица 2.22 – Инвентарные номера техники

Атрибут Смысл Пример значения
Inv_number Инвентарный номер 333488
code_obj Код объекта 456

 

Таблица 2.23 – Инвентарные номера мебели

Атрибут Смысл Пример значения
Inv_number Инвентарный номер 5699888
code_obj Код объекта 158

 

Таблица 2.24 – Списанный спортивный инвентарь

Атрибут Смысл Пример значения
Inv_number Инвентарный номер 123654
date Дата списания 11.10.2007

 

Таблица 2.25 – Списанная техника

Атрибут Смысл Пример значения
Inv_number Инвентарный номер 123654
date Дата списания 04.05.2007

 

Таблица 2.26 – Списанная мебель

Атрибут Смысл Пример значения
Inv_number Инвентарный номер 123654
date Дата списания 12.03.2004

 


Концептуальная модель

 

Исходная концептуальная модель базы данных представлена на рисунке 2.15.

 


 

Рисунок 2.15 - Концептуальная модель (ER-диаграмма) базы данных

 

После проведения всех этапов минимизации концептуальная модель не изменилась.

 


 

2.6 Построение запросов

 

2.6.1 Построение первого запроса

 

2.6.1.1 Исходный запрос

Первый запрос формулируется следующим образом: «Вывести коды партий футбольных ворот типа «юниорские», которые производятся фирмой Star, относятся к модели K325, поступили не раньше 2007 года и находятся в спортивных залах «Общей физической подготовки» ».

Текст первого запроса на языке SQL представлен на рисунке 2.16.

Риунок 2.16 - Текст первого запроса на языке SQL

 

Исходное операционное дерево для первого запроса представлено на рисунке 2.17.

 


 

Рисунок 2.17 - Исходное операционное дерево для первого запроса

 

Оценка стоимости исходного запроса представлена на рисунке 2.18.

 


 

Рисунок 2.18 – Оценка стоимости исходного запроса

 

2.6.1.2 Минимизированный запрос

Текст минимизированного первого запроса на SQL представлен на рисунке 2.19.

SELECT code_obj from gate WHERE gate.kind="Стандартные"
         INTO CURSOR C1
SELECT code_obj FROM inventar WHERE 
                   (ALLTRIM(inventar.firm)="Mizuno" AND    
                   ALLTRIM(inventar.model)="K235") INTO CURSOR C2         
SELECT code_obj from arrival_object WHERE
                      ((arrival_object.date)>={^2007-01-01}) INTO CURSOR d5
SELECT * FROM c1 INNER JOIN c2 ON c1.code_obj=c2.code_obj
                        INTO CURSOR C3
SELECT * FROM c3 INNER JOIN d5 ON d5.code_obj=c3.code_obj_a
                       INTO CURSOR C6
SELECT code_obj_a,inv_number from invnum_inv INNER JOIN C6
ON ALLTRIM(code_obj_a)==ALLTRIM(invnum_inv.code_obj)
           INTO CURSOR C7
SELECT code_obj_a,num_p from inv_in_zal INNER JOIN C7 ON inv_in_zal.inv_number=c7.inv_number INTO CURSOR C9
SELECT num_p from zal WHERE
        ALLTRIM(zal.type_zal)="Общей физической подготовки"
                   INTO CURSOR C10
SELECT DISTINCT code_obj_a from C9 INNER JOIN C10
                  ON C9.num_p=C10.num_p

Рисунок 2.19 – Текст минимизированного первого запроса

 

Минимизированное операционное дерево для первого запроса представлено на рисунке 2.20.

 


 

(18)

Рисунок 2.20 - Операционное дерево для минимизированного первого запроса

 

Оценка стоимости минимизированного запроса представлена на рисунке 2.21.

 


 

 

 


 

 

Рисунок 2.21- Оценка стоимости минимизированного первого запроса

 


 

2.6.2 Построение второго запроса

Словесная формулировка запроса следующая: «Вывести номера спортивных залов, в которых хранится инвентарь, принадлежащий обеим партиям: 522715, 413998».

Текст запроса на языке SQL представлен на рисунке 2.22.

 

SELECT num_p FROM zal WHERE ALLTRIM(zal.type_zal)=''
INTO CURSOR CR1
 SELECT num_p,code_del FROM del,CR1 INTO CURSOR CR4 
SELECT CR1.num_p,inv_number FROM CR1 INNER JOIN inv_in_zal
        ON CR1.num_p==inv_in_zal.num_p INTO CURSOR CR2
SELECT num_p,code_obj FROM CR2 INNER JOIN invnum_inv
   ON (invnum_inv.inv_number==CR2.inv_number) DISTINCT
INTO CURSOR CR3
SELECT DISTINCT num_p from CR4 WHERE NOT EXISTS
    (SELECT CR3.num_p FROM CR3 WHERE (CR4.num_p==CR3.num_p       
    AND CR4.code_del==CR3.code_obj))into CURSOR CR5
SELECT CR1.num_p,CR5.num_p FROM CR1 LEFT JOIN CR5 ON
   CR1.num_p=CR5.num_p INTO CURSOR CR6
SELECT DISTINCT num_p FROM CR1 WHERE NOT EXISTS (Select CR6.num_p_b from CR6 WHERE CR1.num_p=CR6.num_p_b)

Рисунок 2.22 - Текст запроса на языке SQL   

 

Операционное дерево для второго запроса представлено на рисунке 2.23.

 


 

Рисунок 2.23 - Операционное дерево для второго запроса

 


 

3 Рабочий проект

 

3.1 Структура проекта

 

3.1.1 Связь таблиц

Схема связей таблиц представлена на рисунке 3.1

 

Рисунок 3.1– Схема связей таблиц

 

3.1.2 Перечень форм

Формы, входящие в состав проекта приведенны в таблице 3.1.

 


 

Таблица 3.1 – Перечень форм

Название формы Окружение данных
Инвентарные номера спортивного инвентаря Invnum_inv, Inventar
Спортивный инвентарь Inventar
Универсальный запрос Arrival_object,Gate, Inventar,Invnum_inv
Запросы -

 

3.2 Описание формы

 

На рисунке 3.2. изображена форма «Инвентарные номера инвентаря»

 

                                                                                        Command

TextBox
Grid

Рисунок 3.2 – Форма «Инвентарные номера инвентаря»

 

При создании формы использовались компоненты: TextBox, Command, Grid Каждая кнопка Command имеет событие Сlick. Обработчики событий Click для кнопок представлены в Приложении А.

 


 













Заключение

 

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

Для достижения цели был решен ряд задач: составление описания предметной области; составление словаря понятий и терминов; построение исходной модели (ER-диаграммы) базы данных; определение функциональных зависимостей; синтез схемы базы данных на основании функциональных зависимостей; построение оптимизированной концептуальной модели; построение запросов на выборку.

 


 


Приложение А

 

Текст обработчиков событий, связанных с компонентами формы «Инвентарные номера инвентаря»

 

А.1 Код, связанный с событием Click кнопок «След.» и «Пред.»

 

* Next IF NOT EOF()

SKIP

IF EOF()

GO BOTTOM

ЕNDIF

ENDIF

THISFORM.Refresh

THISFORM.Buttons

* Previous IF NOT BOF()

SKIP - 1

IF BОF()

G0 TOP

EHDIF

ЕNDIF

THISFORM.Refresh:

THISFORM.Buttons

 

А.2 Код, связанный с событием Click кнопки «Найти»

 

IF NOT USED([Invnum_inv])

 USE Invnum_inv IN 0

ENDIF

IF thisform.container1.text1.Value=" "

ELSE

SELECT Invnum_inv

SET ORDER TO inv_number

LOCATE FOR

(ALLTRIM(inv_number))=ALLTRIM(thisform.container1.text1.value)

IF FOUND()

SEEK inv_number

ENDIF

thisform.refresh

ENDIF

 

А.3 Код, связанный с событием Click кнопки «Новая запись»

 

IF NOT USED([inventar])

USE inventar IN 0

ENDIF

IF NOT USED([Invnum_inv])

USE Invnum_inv IN 0

ENDIF

IF NOT USED([Arrival_object])

USE Arrival_object IN 0

ENDIF

thisform.Visible= .F.

SET RELATION TO

SET SKIP TO

SELECT Inventar

SET ORDER TO code_obj

SELECT Invnum_inv

SET RELATION TO code_obj INTO Inventar

SET SKIP TO Inventar

DO FORM "c:\documents and settings\yla\мои документы\visual foxpro projects\my_football_new\f_inventar.scx"

 

А.4 Код, связанный с событием Click кнопки «Сохранить»

 

thisform.container2.command1.Enabled=.T.

SELECT invnum_inv

GO RECCOUNT()

IF (invnum_inv.inv_number!=' ')

thisform.Command1.Enabled=.T.

ELSE

MESSAGEBOX("Введите все данные!!!",16, "Ошибка")

ENDIF

 

А.5 Код, связанный с событием Click кнопки «Отмена»

 

thisform.Height= 260

thisform.container1.command3.Enabled=.t.

thisform.container2.command1.Enabled=.t.

thisform.container2.command2.Enabled=.t.

thisform.container2.command5.Enabled=.t.

thisform.container3.command4.Enabled=.t.

thisform.container3.command3.Enabled=.t.

thisform.container3.command6.Enabled=.f.

 

А.6 Код, связанный с событием Click кнопки «Удалить»

 

IF MESSAGEBOX ("Удалить эту запись", 4 + 32 + 256 ) = 6

DELETE NEXT 1

BLANK

SET DELETED ON

GO TOP

THISFORM.Refresh

ENDIF

 

А.7 Код, связанный с событием Click кнопки «Просмотр»

 

IF NOT USED([Arrival_object])

USE Arrival_object IN 0

ENDIF

IF NOT USED([inventar])

USE inventar IN 0

ENDIF

IF NOT USED([Invnum_inv])

USE Invnum_inv IN 0

ENDIF

thisform.Height= 454

thisform.container3.command6.Enabled=.t.

thisform.container1.command3.Enabled=.f.

thisform.container2.command1.Enabled=.f.

thisform.container2.command2.Enabled=.f.

thisform.container2.command5.Enabled=.f.

thisform.container3.command4.Enabled=.f.

thisform.container3.command3.Enabled=.f.

 


Приложение Б

 

Текст программы обработчика событий «Запрос» на форме «Универсальный запрос»

 

IF NOT USED([arrival_object])

USE arrival_object IN 0

ENDIF

IF NOT USED([inventar])

USE inventar IN 0

ENDIF

IF NOT USED([invnum_inv])

USE invnum_inv IN 0

ENDIF

IF NOT USED([gate])

USE gate IN 0

ENDIF

IF thisform.container2.txt_height_gate.Value=" "

thisform.container2.txt_height_gate.Value=""

ENDIF

str="(2<>1)"

out_fields="gate.code_obj"

IF thisform.ch_code.Value = 1

 out_fields ="gate.code_obj"

ENDIF

IF thisform.ch_date_arrival.Value= 1

out_fields = out_fields +", arrival_object.date"

ENDIF

IF thisform.ch_balance.Value = 1

out_fields = out_fields +", arrival_object.balance"

ENDIF

IF thisform.ch_kol.Value = 1

 out_fields = out_fields +", arrival_object.kol"

ENDIF

IF thisform.ch_firm.Value = 1

out_fields = out_fields +", inventar.firm"

ENDIF

IF thisform.ch_model.Value = 1

 out_fields = out_fields +", inventar.model"

ENDIF

IF thisform.ch_inv_number.Value = 1

out_fields = out_fields +", invnum_inv.inv_number"

ENDIF

IF thisform.container2.ch_height_gate.Value = 1

out_fields = out_fields +", gate.height_gate"

ENDIF

IF thisform.container2.ch_kind_gate.Value = 1

out_fields = out_fields +", gate.kind"

ENDIF

IF thisform.container2.Ch_shirina_gate.Value = 1

out_fields = out_fields +", gate.shirina"

ENDIF

IF ALLTRIM(thisform.txt_code_obj.Value) == ""

ELSE

str = str +" AND "+

"((ALLTRIM(gate.code_obj))=ALLTRIM(thisform.txt_code_obj.Value))"

ENDIF

IF ALLTRIM(thisform.txt_date_arrival.Value) == ""

ELSE

str = str +" AND "+

"((ALLTRIM(DTOC(arrival_object.date)))=ALLTRIM(thisform.txt_date_arrival.Value))"

ENDIF

IF ALLTRIM(thisform.txt_balance.Value) == ""

ELSE

str = str +" AND "+

"((ALLTRIM(STR(arrival_object.balance)))=ALLTRIM(thisform.txt_balance.Value))"

ENDIF

IF ALLTRIM(thisform.txt_kol.Value) == ""

ELSE

str = str +" AND "+

((ALLTRIM(STR(arrival_object.kol)))=ALLTRIM(thisform.txt_kol.Value))

ENDIF

IF ALLTRIM(thisform.txt_firm.Value )== ""

ELSE

str = str +" AND "+

((ALLTRIM(inventar.firm))=ALLTRIM(thisform.txt_firm.Value))

ENDIF

IF ALLTRIM(thisform.txt_model.Value) == ""

ELSE

str = str +" AND "+

"((ALLTRIM(inventar.model))=ALLTRIM(thisform.txt_model.Value))"

ENDIF

IF ALLTRIM(thisform.container2.txt_kind_gate.Value) == ""

 ELSE

 str = str +" AND "+

"((ALLTRIM(gate.kind))=ALLTRIM(thisform.container2.txt_kind_gate.Value))"

ENDIF

IF ALLTRIM(thisform.container2.txt_height_gate.Value) == ""

ELSE

str = str +" AND "+ "((ALLTRIM(STR(gate.height_gate)))

=thisform.container2.txt_height_gate.Value)"

ENDIF

IF ALLTRIM(thisform.container2.txt_shirina_gate.Value)== ""

ELSE

 str = str +" AND "+ "((ALLTRIM(STR(gate.shirina)))=

=ALLTRIM(thisform.container2.txt_shirina_gate.Value))"

ENDIF

IF out_fields="NULL"

out_fields ="*"

ENDIF

SELECT &out_fields;

FROM(((gate INNER JOIN inventar ON

ALLTRIM(inventar.code_obj)==ALLTRIM(gate.code_obj));

INNER JOIN arrival_object ON

ALLTRIM(arrival_object.code_obj)==ALLTRIM(gate.code_obj));

INNER JOIN invnum_inv ON

ALLTRIM(invnum_inv.code_obj)==ALLTRIM(gate.code_obj));

WHERE &str INTO TABLE My_tab

objExcel=CreateObject("Excel.Application")

objExcel.Visible=.T.

objExcel.Workbooks.add

nstol = 0

IF thisform.ch_code.Value = 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value="Код партии"

objExcel.Columns[nstol].ColumnWidth = 12

ENDIF

IF thisform.ch_date_arrival.Value= 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value="Дата поступления"

objExcel.Columns[nstol].ColumnWidth = 18

ENDIF

IF thisform.ch_balance.Value = 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value="Балансовая стоимость"

objExcel.Columns[nstol].ColumnWidth = 25

ENDIF

IF thisform.ch_kol.Value = 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value="Количество"

objExcel.Columns[nstol].ColumnWidth = 12

ENDIF

IF thisform.ch_firm.Value = 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value="Фирма-производитель"

objExcel.Columns[nstol].ColumnWidth = 25

ENDIF

IF thisform.ch_model.Value = 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value="Модель"

objExcel.Columns[nstol].ColumnWidth = 10

ENDIF

IF thisform.ch_inv_number.Value = 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value="Инвентарный номер"

objExcel.Columns[nstol].ColumnWidth = 25

ENDIF

IF thisform.container2.ch_height_gate.Value = 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value="Высота ворот"

objExcel.Columns[nstol].ColumnWidth = 15

ENDIF

IF thisform.container2.ch_kind_gate.Value = 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value="Вид ворот"

objExcel.Columns[nstol].ColumnWidth = 20

ENDIF

IF thisform.container2.Ch_shirina_gate.Value = 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value="Ширина ворот"

objExcel.Columns[nstol].ColumnWidth = 15

ENDIF

IF nstol>0

tt1 = ""+CHRTRAN(objExcel.Cells(1,1).Address,"$","")

tt2 = ""+CHRTRAN(objExcel.Cells(1,nstol).Address,"$","")

WITH objExcel&&cel

WITH .Range(tt1+":"+tt2)

WITH .Font

Name = "Arial Cyr"

FontStyle = "полужирный"

Size = 14

ENDWITH

HorizontalAlignment = 3

VerticalAlignment = 1

WrapText = .F.

Orientation = 0

AddIndent = .F.

IndentLevel = 0

ShrinkToFit = .F.

MergeCells = .F.

Merge

ENDWITH

Range("A1").Value = "Данные о партиях футбольных ворот"

ENDWITH

ENDIF

stroka=3

stolbic=1

SELECT my_tab

SCAN

stroka=stroka+1

temp_j = stolbic

IF thisform.ch_code.Value = 1

objExcel.Cells(stroka,temp_j ).select

objExcel.Cells(stroka,temp_j ).Value = my_tab.code_obj

temp_j = temp_j +1

ENDIF

IF thisform.ch_date_arrival.Value= 1

objExcel.Cells(stroka,temp_j ).select

objExcel.Cells(stroka,temp_j ).Value = my_tab.date

temp_j = temp_j +1

ENDIF

IF thisform.ch_balance.Value = 1

objExcel.Cells(stroka,temp_j ).select

objExcel.Cells(stroka,temp_j ).Value = my_tab.balance

temp_j = temp_j +1

ENDIF

IF thisform.ch_kol.Value = 1

objExcel.Cells(stroka,temp_j ).select

objExcel.Cells(stroka,temp_j ).Value =my_tab.kol

temp_j = temp_j +1

ENDIF

IF thisform.ch_firm.Value = 1

objExcel.Cells(stroka,temp_j ).select

objExcel.Cells(stroka,temp_j ).Value = my_tab.firm

temp_j = temp_j +1

ENDIF

IF thisform.ch_model.Value = 1

objExcel.Cells(stroka,temp_j ).select

objExcel.Cells(stroka,temp_j ).Value = my_tab.model

temp_j = temp_j +1

ENDIF

IF thisform.ch_inv_number.Value = 1

objExcel.Cells(stroka,temp_j ).select

objExcel.Cells(stroka,temp_j ).Value = my_tab.inv_number

temp_j = temp_j +1

ENDIF

IF thisform.container2.ch_height_gate.Value = 1

objExcel.Cells(stroka,temp_j ).select

objExcel.Cells(stroka,temp_j ).Value = STR(my_tab.height_gate)

temp_j = temp_j +1

ENDIF

IF thisform.container2.ch_kind_gate.Value = 1

objExcel.Cells(stroka,temp_j ).select

objExcel.Cells(stroka,temp_j ).Value =my_tab.kind

temp_j = temp_j +1

ENDIF

IF thisform.container2.Ch_shirina_gate.Value = 1

objExcel.Cells(stroka,temp_j ).select

objExcel.Cells(stroka,temp_j ).Value =STR(my_tab.shirina)

temp_j = temp_j +1

ENDIF

ENDSCAN

IF nstol>0

tt1 = ""+CHRTRAN(objExcel.Cells(3,1).Address,"$","")

tt2 = ""+CHRTRAN(objExcel.Cells(stroka,nstol).Address,"$","")

WITH objExcel

WITH .Range(tt1+":"+tt2)

WITH .Font

.Name = "Arial Cyr"

Size = 10

ENDWITH

HorizontalAlignment = 3

ENDWITH

ENDWITH

ENDIF

With objExcel.Range(tt1+":"+tt2)

Borders(1).LineStyle = 0

Borders(2).LineStyle = 0

With .Borders(1)

LineStyle = 1

Weight = 2

ENDWITH

With .Borders(2)

Weight = 2

ENDWITH

With .Borders(3)

LineStyle = 1

Weight = 2

ENDWITH

With .Borders(4)

LineStyle = 1

Weight = 2

ENDWITH

ENDWITH

 


Приложение В

 

Текст программы для заполнения таблиц записями

 

IF NOT USED([Arrival_object])

USE Arrival_object IN 0

ENDIF

IF NOT USED([inventar])

USE inventar IN 0

ENDIF

IF NOT USED([out_inventar])

USE out_inventar IN 0

ENDIF

IF NOT USED([techno])

USE techno IN 0

ENDIF

IF NOT USED([firm_techno])

 USE firm_techno IN 0

ENDIF

IF NOT USED([firm_inv])

USE firm_inv IN 0

ENDIF

IF NOT USED([techno_model])

USE techno_model IN 0

ENDIF

IF NOT USED([Mebel])

USE Mebel IN 0

ENDIF

IF NOT USED([invnum_inv])

USE invnum_inv IN 0

ENDIF

IF NOT USED([invnum_tec])

USE invnum_tec IN 0

ENDIF

IF NOT USED([invnum_meb])

USE invnum_meb IN 0

ENDIF

IF NOT USED([datevidachi_table])

USE datevidachi_table IN 0

ENDIF

IF NOT USED([balls])

USE balls IN 0

ENDIF

IF NOT USED([gate])

USE gate IN 0

ENDIF

IF NOT USED([kind_gate])

USE kind_gate IN 0

ENDIF

IF NOT USED([shir_and_height_gate])

USE shir_and_height_gate IN 0

ENDIF

IF NOT USED([trenager])

USE trenager IN 0

ENDIF

IF NOT USED([TV])

USE TV IN 0

ENDIF

IF NOT USED([refrigerator])

USE refrigerator IN 0

ENDIF

IF NOT USED([vacuum_cleaner])

USE vacuum_cleaner IN 0

ENDIF

IF NOT USED([bed])

USE bed IN 0

ENDIF

IF NOT USED([shkaf])

USE shkaf IN 0

ENDIF

IF NOT USED([table])

USE table IN 0

ENDIF

IF NOT USED([tumbochka])

USE tumbochka IN 0

ENDIF

j=0

k=0

SELECT arrival_object

FOR i=1 TO 1200000

APPEND BLANK

replace code_obj WITH ALLTRIM(STR(i))

k=k+1

IF(k<10)

k = k+1

ELSE

k =5

ENDIF

replace kol WITH k

replace balance WITH k*5.8

SELECT datevidachi_table

IF NOT EOF()

replace arrival_object.date WITH date_v

SKIP

ELSE

SKIP -(RECNO())

replace arrival_object.date WITH date_v

SKIP

ENDIF

SELECT arrival_object

ENDFOR

**************************************

kol=0

j=1

SELECT arrival_object

GO 1

DO WHILE NOT EOF()

SELECT inventar

APPEND BLANK

replace code_obj WITH arrival_object.code_obj

kol = arrival_object.kol

SELECT invnum_inv

DO WHILE (kol!=0)

APPEND BLANK

replace inv_number WITH STR(j)

replace code_obj WITH arrival_object.code_obj

j=j+1

kol=kol-1

ENDDO

SELECT firm_inv

IF NOT EOF()

replace inventar.firm WITH firm_inv

SKIP

ELSE

GO 1

replace inventar.firm WITH firm_inv

SKIP

ENDIF

SELECT techno_model

IF NOT EOF()

replace inventar.model WITH model

SKIP

ELSE

GO 1

replace inventar.model WITH model

SKIP

ENDIF

********

SELECT Arrival_object

SKIP

IF NOT EOF()

SELECT Techno

APPEND BLANK

replace code_obj WITH arrival_object.code_obj

SELECT firm_techno

IF NOT EOF()

replace Techno.firm_marka WITH firm_marka

SKIP

ELSE

GO 1

replace Techno.firm_marka WITH firm_marka

SKIP

ENDIF

SELECT techno_model

IF NOT EOF()

replace Techno.model WITH model

SKIP

ELSE

GO 1

replace Techno.model WITH model

SKIP

ENDIF

*********

SELECT Arrival_object

SKIP

IF NOT EOF()

SELECT Mebel

APPEND BLANK

replace code_obj WITH arrival_object.code_obj

********

SELECT Arrival_object

SKIP

ENDIF

ENDIF

ENDDO

&&заполнение таблиц "Спортивный инвентарь"

SELECT inventar

GO 1

DO WHILE NOT EOF()

SELECT balls

APPEND BLANK

replace code_obj WITH inventar.code_obj

********

SELECT inventar

SKIP

IF NOT EOF()

SELECT gate

APPEND BLANK

replace code_obj WITH inventar.code_obj

SELECT kind_gate

IF NOT EOF()

replace gate.kind WITH kind_gate

SKIP

ELSE

GO 1

replace gate.kind WITH kind_gate

SKIP

ENDIF

SELECT shir_and_height_gate

IF NOT EOF()

replace gate.height_gate WITH height

replace gate.shirina WITH shirina

SKIP

ELSE

GO 1

replace gate.height_gate WITH height

replace gate.shirina WITH shirina

SKIP

ENDIF

*********

SELECT inventar

SKIP

IF NOT EOF()

SELECT trenager

APPEND BLANK

replace code_obj WITH inventar.code_obj

SELECT inventar

SKIP

ENDIF

ENDIF

ENDDO

&&заполнение таблиц "Техника"

SELECT techno

GO 1

DO WHILE NOT EOF()

SELECT TV

APPEND BLANK

replace code_obj WITH techno.code_obj

********

SELECT techno

SKIP

IF NOT EOF()

SELECT refrigerator

APPEND BLANK

replace code_obj WITH techno.code_obj

*********

SELECT Techno

SKIP

IF NOT EOF()

SELECT vacuum_cleaner

APPEND BLANK

replace code_obj WITH techno.code_obj

********

SELECT techno

SKIP

ENDIF

ENDIF

ENDDO

&&заполнение таблиц "Мебель"

SELECT Mebel

GO 1

DO WHILE NOT EOF()

SELECT bed

APPEND BLANK

replace code_obj WITH Mebel.code_obj

********

SELECT Mebel

SKIP

IF NOT EOF()

SELECT shkaf

APPEND BLANK

replace code_obj WITH mebel.code_obj

*********

SELECT Mebel

SKIP

IF NOT EOF()

SELECT table

APPEND BLANK

replace code_obj WITH mebel.code_obj

********

SELECT Mebel

SKIP

IF NOT EOF()

SELECT tumbochka

APPEND BLANK

replace code_obj WITH mebel.code_obj

SELECT Mebel

SKIP

ENDIF

ENDIF

ENDIF

ENDDO

&&Заполнение таблиц "инвентарный номер"

kol=0

SELECT inventar

GO 1

SELECT invnum_inv

GO 1

SELECT techno

GO 1

SELECT mebel

GO 1

SELECT arrival_object

GO 1

&&Заполнение таблиц списанных "объектов"

SELECT invnum_inv

DO WHILE NOT EOF()

SELECT out_inventar

APPEND BLANK

replace inv_number WITH invnum_inv.inv_number

SELECT invnum_inv

SKIP 10

ENDDO

IF NOT USED([invnum_inv])

USE invnum_inv IN 0

ENDIF

IF NOT USED([inv_in_zal])

USE inv_in_zal IN 0

ENDIF

IF NOT USED([type_zal])

USE type_zal IN 0

ENDIF

IF NOT USED([pomeshenie])

USE pomeshenie IN 0

ENDIF

IF NOT USED([zal])

USE zal IN 0

ENDIF

IF NOT USED([pomeshenie_naznach])

USE pomeshenie_naznach IN 0

ENDIF

IF NOT USED([datevidachi_table])

USE datevidachi_table IN 0

ENDIF

SELECT pomeshenie

DELETE ALL

PACK

SELECT zal

DELETE ALL

PACK

SELECT inv_in_zal

DELETE ALL

PACK

SELECT pomeshenie_naznach

GO 1

SELECT pomeshenie

FOR i=1 TO 2000

APPEND BLANK

replace pomeshenie.num_p WITH i

SELECT pomeshenie_naznach

IF NOT EOF()

replace pomeshenie.naznach WITH naznach

SKIP

ELSE

SKIP -(RECNO())

replace pomeshenie.naznach WITH naznach

SKIP

ENDIF

*******************

IF ALLTRIM(pomeshenie.naznach)="Спортивный зал"

SELECT zal

APPEND BLANK

replace num_p WITH pomeshenie.num_p

SELECT type_zal

IF NOT EOF()

replace zal.type_zal WITH type_zal

SKIP

ELSE

SKIP -(RECNO())

replace zal.type_zal WITH type_zal

SKIP

ENDIF

ENDIF

**************

SELECT pomeshenie

ENDFOR

SELECT invnum_inv

GO 1

DO WHILE NOT EOF()

SELECT inv_in_zal

APPEND blank

replace inv_number WITH invnum_inv.inv_number

SELECT invnum_inv

SKIP

SELECT zal

IF NOT EOF()

replace inv_in_zal.num_p WITH num_p

SKIP

ELSE

SKIP -(RECNO())

replace inv_in_zal.num_p WITH num_p

SKIP

ENDIF

SELECT datevidachi_table

IF NOT EOF()

replace inv_in_zal.date WITH date_v

SKIP

ELSE

SKIP -(RECNO())

replace inv_in_zal.date WITH date_v

SKIP

ENDIF

SELECT invnum _ inv

ENDDO

В3. Заполнение таблиц «Общая информация и игроки»

IF NOT USED([Person])

USE Person IN 0

ENDIF

IF NOT USED([fam_table])

USE fam_table IN 0

ENDIF

IF NOT USED([im_table])

USE im_table IN 0

ENDIF

IF NOT USED([otch_table])

USE otch_table IN 0

ENDIF

IF NOT USED([datevidachi_table])

USE datevidachi_table IN 0

ENDIF

IF NOT USED([dateborn])

USE dateborn IN 0

ENDIF

IF NOT USED([Country])

USE Country IN 0

ENDIF

IF NOT used([street])

USE street IN 0

ENDIF

SELECT Person

*GO 1

FOR i=1000 TO 1010

FOR j=100000 TO 100010

APPEND BLANK

replace sp WITH i

replace np WITH j

replace numstreet WITH i-990

replace numflat WITH j-99990

SELECT Fam_table

IF EOF()

SKIP -(RECNO())

replace Person.fam WITH fam

SKIP

ELSE

replace Person.fam WITH fam

SKIP

ENDIF

SELECT Im_table

IF EOF()

SKIP -(RECNO())

replace Person.im WITH im

skip

ELSE

replace Person.im WITH im

SKIP

ENDIF

SELECT Otch_table

IF EOF()

SKIP -(RECNO())

replace Person.otch WITH otch

skip

ELSE

replace Person.otch WITH otch

SKIP

ENDIF

SELECT Datevidachi_table

IF EOF()

SKIP -(RECNO())

replace Person.datevidachi WITH date_v

skip

ELSE

replace Person.datevidachi WITH date_v

SKIP

ENDIF

SELECT Country

IF EOF()

SKIP -(RECNO())

replace Person.country WITH country

replace Person.city WITH city

ELSE

replace Person.country WITH country

replace Person.city WITH city

SKIP

ENDIF

SELECT Street

IF EOF()

SKIP -(RECNO())

replace Person.Street WITH Street

ELSE

replace Person.Street WITH Street

SKIP

ENDIF

SELECT Dateborn

IF EOF()

SKIP -(RECNO())

replace Person.dateborn WITH date_b

skip

ELSE

replace Person.dateborn WITH date_b

SKIP

ENDIF

SELECT Person

ENDFOR

ENDFOR

browse



Введение

 

Необходимо спроектировать базу данных «Хозяйственный учет футбольного клуба». Также целью данной работы является ознакомление с основными принципами построения, использования и оптимизации реляционных баз данных.

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

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

Данная задача будет решаться с помощью анализа предметной области, ее формализации с помощью функциональных зависимостей. Затем необходимо провести этапы минимизации системы функциональных зависимостей, описывающих предметную область, и на основании полученной редуцированной системы спроектировать требуемую модель базы данных.

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

 


1 Техническое задание

 


Основание для разработки

 

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

 

Назначение разработки

 

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

 

Стандарты

 

Данная работа оформлена в соответствии со стандартом СТУ 04.02.030.-2008.

 

Требования к программе или программному изделию

 

Спроектировать базу данных для спортивной базы футбольного клуба. Описать предметную область, разработать словарь понятий и терминов, построить систему функциональных зависимостей. Синтезировать схему базы данных на основании функциональных зависимостей (построение неизбыточного покрытия, построение леворедуцированного неизбыточного покрытия, построение праворедуцированного неизбыточного покрытия, построение классов эквивалентностей, построение минимального покрытия). Построить уточненную концептуальную модель в виде ER-диаграммы, запросы предметной области. Записать минимизированные запросы на языке SQL.

 

1.4.1 Результирующие компоненты изделия

База данных в визуальной среде разработки систем управления реляционными базами данных Microsoft Visual FoxPro и все сопровождающие файлы.

 

Носители информации

Продукт должен размещаться в виде файлов на CD дисках. В процессе работы могут использоваться Flash, CD-R/-RW, DVD-R/RW или другие носители информации.

 

Требования к составу и параметрам технических средств

Программный комплекс должен корректно работать на компьютере со следующими техническими характеристиками:

− процессор Pentium V 2200 МГц;

− оперативная память объемом 1024 Мб;

− жесткий диск Seagate Barracuda, объемом 120 Гб;

− видеоадаптер SVGA;

− клавиатура;

− манипулятор типа “мышь”;

устройство удаленного доступа к сети: модем или сетевая карта.

 


 


Технический проект

Описание предметной области

 

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

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

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

Для инвентаря и техники хранится информация о фирме-изготовителе и модели товара. Для мебели должна быть отражена информация о фирме-производителе, цвете, габаритных размерах (длина, ширина, высота).

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

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

Инвентарь, техника и мебель могут быть списаны, при этом хранится дата списания.

 

Словарь понятий и терминов

 

Словарь понятий и терминов приведен в таблицах 2.1 – 2.12.

Таблица 2.1 - Общая информация

Атрибут Смысл Пример
sp Серия паспорта 3569
np Номер паспорта  0123654
fam Фамилия Иванов
im Имя Иван
otch Отчество Иванович
pol Пол мужской
dateborn Дата рождения 12.05.1960
datevidachi Дата выдачи паспорта 12.24.2000
kemvidan Кем выдан паспорт Отделом милиции №3 УВД г.Москва
country Страна Россия
city Город Москва
street Улица Первомайская
numstreet Номер улицы 45
numflat Номер квартиры 12
dolgnost Должность главный врач

 

Таблица 2.2 – Игроки

Атрибут Смысл Пример
sp Серия паспорта 3569
np Номер паспорта  0123654
date Дата 12.12.2004
rost Рост 180
ves Вес 79
staff Состав основной
number Номер 12
status Статус нападающий

 

Таблица 2.3 – Помещение

Атрибут Смысл Пример
num_p Номер помещения 15
square Площадь 123
naznachenie Назначение столовая

 


 

Таблица 2.4 - Комната

Атрибут Смысл Пример
num_p Номер помещения 15
room Номер комнаты 3

 

Таблица 2.5 – Спортивный зал

Атрибут Смысл Пример
num_p Номер помещения 15
type_zal Тип зала Тренажерный зал
sp Серия паспорта 1226
np Номер паспорта 456987

 

Таблица 2.6 – Поступление объектов

Атрибут Смысл Пример
code_obj Код объекта 15
Kol Количество 40
date Дата поступления 04.24.2008
balance Балансовая стоимость 450

 

Таблица 2.7 – Спортивный инвентарь

Атрибут Смысл Пример
code_obj Код объекта 15
firm_inv Фирма-изготовитель Mizuno
model_inv Модель GIM12

 

Таблица 2.8 – Техника

Атрибут Смысл Пример значения
code_obj Код объекта 15
firm_tec Фирма-изготовитель Samsung
model_tec Модель SG-125

 

Таблица 2.9 – Мебель

Атрибут Смысл Пример значения
code_obj Код объекта 115
firm_meb Фирма-изготовитель «Мир мебели»
dlina Длина 125
width Ширина 50
height Высота 70
material_meb Материал Дуб
Цвет color_meb Орех

 

Таблица 2.10– Мяч

Атрибут Смысл Пример значения
code_obj Код объекта 15
material_ball Материал кожа

 

Таблица 2.11 – Футбольные ворота

Атрибут Смысл Пример значения
code_obj Код объекта 24
kind Вид ворот стандартные
height Высота 123
shirina Ширина 365

 

Таблица 2.12 – Тренажер

Атрибут Смысл Пример значения
code_obj Код объекта 65
type_tren Тип тренажера беговая дорожка

 

Таблица 2.13 – Телевизор

Атрибут Смысл Пример значения
code_obj Код объекта 65
diagonal Диагональ экрана 54
screen Тип экрана  

 

Таблица 2.14 – Холодильник

Атрибут Смысл Пример значения
code_obj Код объекта 668
height Высота 125
width Ширина 105
depth Глубина 90
sum_sq_polok Площадь полок 126
com_volume Общий объем 368
userful_volume Используемый объем 360

Таблица 2.15 – Пылесос

Атрибут Смысл Пример значения
code_obj Код объекта 268
moshnost Мощность 54

 

Таблица 2.16 – Кровать

Атрибут Смысл Пример значения
code_obj Код объекта 45
Type_bed Тип кровати односпальная

 

Таблица 2.17 – Шкаф

Атрибут Смысл Пример значения
code_obj Код объекта 123
type_shkaf Тип шкафа плательный

 

Таблица 2.18 – Стол

Атрибут Смысл Пример значения
code_obj Код объекта 569
type_table Тип стола письменный

 

Таблица 2.19 – Размещение спортивного инвентаря по залам

Атрибут Смысл Пример значения
Inv_number Инвентарный номер 123654
date Дата 05.15.2010
num_p Номер зала 56

 

Таблица 2.20 – Расселение людей по комнатам

Атрибут Смысл Пример значения
Inv_number Номер помещения 123654
sp Серия паспорта 1236
np Номер паспорта 566002

 

Таблица 2.21 – Инвентарные номера спортивного инвентаря

Атрибут Смысл Пример значения
Inv_number Инвентарный номер 123654
code_obj Код объекта 165

Таблица 2.22 – Инвентарные номера техники

Атрибут Смысл Пример значения
Inv_number Инвентарный номер 333488
code_obj Код объекта 456

 

Таблица 2.23 – Инвентарные номера мебели

Атрибут Смысл Пример значения
Inv_number Инвентарный номер 5699888
code_obj Код объекта 158

 

Таблица 2.24 – Списанный спортивный инвентарь

Атрибут Смысл Пример значения
Inv_number Инвентарный номер 123654
date Дата списания 11.10.2007

 

Таблица 2.25 – Списанная техника

Атрибут Смысл Пример значения
Inv_number Инвентарный номер 123654
date Дата списания 04.05.2007

 

Таблица 2.26 – Списанная мебель

Атрибут Смысл Пример значения
Inv_number Инвентарный номер 123654
date Дата списания 12.03.2004

 


Определение функциональных зависимостей

 

У двух и более людей серия и номер паспорта не могут быть одинаковыми.

Fam, Im, Otch, pol, dateborn, datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost -> sp, np.

Один человек не может иметь два разных паспорта.

sp_pl, np_pl -> sp, np -> date, rost, ves, staff, number, status -> Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat.

Футболист не может играть в команде определенного состава одновременно под разными номерами в разном качестве.

 sp_pl, np_pl -> date, staff, number, status.

В определенном составе под одним номером не могут играть два футболиста.

sp_pl, np_pl -> staff, number, status.

Один человек не может одновременно жить в двух комнатах.

num_room -> sp, np.

Помещение не может иметь разные площади и назначения.

square, naznachenie -> num_p.

Номер помещения однозначно определяет номер комнаты.

room -> num_room.

Спортивный зал не может одновременно относиться к разным типам. type_zal -> num_zal.

Объект в одно и то же время поступает в определенном количестве по определенной цене. kol, date, balance -> code_obj.

Инвентарь производится определенной фирмой и относится к определенной модели. firm_inv, model_inv -> code_inv.

Техника производится определенной фирмой и относится к определенной модели, потребляет определенную мощность. firm_tec, model_tec -> code_tec.

Мебель изготавливается из определенного материала, определенной длины, ширины, высоты, цвета. firm_meb, dlina, width, height, color -> code_meb.

Единица спортивного инвентаря не может относиться к двум объектам. code_inv-> inv_number_INV .

Единица техники не может относиться к двум объектам. code_tec -> . inv_number_TEC.

Единица мебели не может относиться к двум объектам. code_meb -> inv_number_MEB.

Единица спортивного инвентаря не может быть списана дважды. date_out_inv -> inv_number_INV_out.

Единица техники не может быть списана дважды. date_out_tec -> inv_number_TEC_out.

Единица мебели не может быть списана дважды date_out_meb -> . inv_number_MEB_out.

Единица спортивного инвентаря не может одновременно находиться в нескольких спортивных залах. num_zal -> inv_number_INV, date_IinZal.

Единица техники не может одновременно находиться в нескольких помещениях. num_р -> inv_number_TEC, date_TecInP.

Единица мебели не может одновременно находиться в нескольких помещениях. num_р -> inv_number_MEB, date_MebInP.

Мяч не может иметь разные характеристики. material -> code_balls.

Одни и те же ворота не могут иметь разные характеристики. height_gate, shirina, kind -> code_gate.

Тренажер не может быть одновременно двух видов. type -> code_trenager.

Телевизор не может иметь разные характеристики. diagonal, screen -> code_TV.

Холодильник не может иметь разные характеристики. height_ref, widht_ref, depht_ref, sum_sq_polok, com_volume, user_volume -> code_refreg.

Пылесос не может иметь разные характеристики. moshnost_v -> code_vacuum.

Кровать не может иметь разные характеристики. type_bed -> code_bed.

Стол не может иметь разные характеристики. type_table, material_table > code_table.

Шкаф не может иметь разные характеристики. type_shkaf -> code_shkaf.

Исходные функциональные зависимости представлены на рисунке 2.1

 


 

Рисунок 2.1 – Исходные функциональные зависимости

 

2.3.2 Функциональные зависимости сохраняющие иерархию

В данном множестве есть следующие зависимости, которые сохраняют иерархию:

Спортивным залом не может быть несуществующее помещение. num_zal -> num_p.

Не поступавшая партия объектов не может быть зарегистрирована как инвентарь. code_inv -> code_obj.

Не поступавшая партия объектов не может быть зарегистрирована как техника. code_tec -> code_obj.

Не поступавшая партия объектов не может быть зарегистрирована как мебель. code_meb -> code_obj.

Незарегистрированная единица инвентаря не может быть списана. inv_number_INV_out -> inv_number_INV.

Незарегистрированная единица техники не может быть списана.

inv_number_TEC _out -> inv_number_TEC.

Незарегистрированная единица мебели не может быть списана. inv_number_MEB_out -> inv_number_MEB.

Незарегистрированная партия инвентаря инвентаря не может быть партией мячей.

code_balls -> code_inv.

Одна и та же партия ворот не может поступить дважды.

code_gate -> code_inv.

Одна и та же партия тренажеров не может поступить дважды.

code_trenager -> type.

Одна и та же партия телевизоров не может поступить дважды.

code_TV -> diagonal, screen.

Одна и та же партия холодильников не может поступить дважды.

code_refreg -> height_ref, widht_ref, depht_ref, sum_sq_polok, com_volume, user_volume.

Функциональные зависимости сохраняющие иерархию представлены на рисунке 2.2.

 


 

Рисунок 2.2 - Функциональные зависимости, сохраняющие иерархию

 



Дата: 2019-05-28, просмотров: 191.