на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Разработка программного обеспечения по управлению базой данных "График учета рабочего времени на шахте"
p align="left">

Логическая модель данных отражает логические связи между сущностями базы данных. Ниже представлена логическая модель базы данных «График учета рабочего времени на шахте им. Т. Кузембаева в цехе «Автоматика» ».

Информацию о рабочих цеха содержит таблица «Рабочие», содержащая следующие атрибуты:

1. «ID» - уникальный идентификатор рабочего, выполняющий роль первичного ключа (счетчик);

2. «WokerName» - ФИО рабочего (текстовый);

3. «TabNumber» - табельный номар рабочего (числовой)

4. «LinkProfession» - код профессии рабочего (числовой), является вторичным ключом поля «ID» таблицы «Профессия»;

5. «LinkStatus» - код статуса рабочего (числовой), является вторичным ключом поля «ID» таблицы «Статус»;

Информацию о профессии рабочего хранится в таблице «Профессия», содержащая следующие атрибуты:

1. «ID» - уникальный идентификатор профессии, выполняющий роль первичного ключа (счетчик);

2. «NameProfession» - название профессии (текстовый);

Информацию о статусе рабочего хранится в таблице «Статус», содержащая следующие атрибуты:

1. «ID» - уникальный идентификатор статуса, выполняющий роль первичного ключа (счетчик);

2. «NameStatus» - название статуса (текстовый);

Информацию об отпусках рабочих содержит таблица «Отпуски», содержащая следующие атрибуты:

1. «ID» - уникальный идентификатор рабочего, выполняющий роль первичного ключа (счетчик);

2. «LinkWoker» - код ФИО рабочего (числовой), является вторичным ключом поля «ID» таблицы «Рабочие»;

3. «DateBegin» - дата начала отпуска (дата/время)

4. «Length» - продолжительность отпуска (числовой);

Информацию о сохраненных графиках содержит таблица «Сохраненные_ графики», содержащая следующие атрибуты:

1. «ID» - уникальный идентификатор сохранения, выполняющий роль первичного ключа (счетчик);

2. «NameGraphic» - название сохраненного графика (текстовый);

3. «DateOfSave» - дата сохранения графика (дата/время);

4. «LinkMonthNum» - код месяца сохраненного графика (числовой), является вторичным ключом поля «ID» таблицы «Месяцы»;

5. «YearNum» - год сохраненного графика (числовой);

Информацию о графиках содержит таблица «Графики», содержащая следующие атрибуты:

1. «ID» - уникальный идентификатор графика, выполняющий роль первичного ключа (счетчик);

2. «LinkSaveID» - код номера сохранения графика (числовой), является вторичным ключом поля «ID» таблицы «Сохраненные графики»;

3. «DateOfCell» - дата ячейки (дата/время);

4. «LinkWoker» - код ФИО рабочего (числовой), является вторичным ключом поля «ID» таблицы «Рабочие»;

5. «LinkTypeOfDay» - код типа дня (числовой), является вторичным ключом поля «ID» таблицы «Типы_дней»;

Информацию о месяце сохраненного графика хранится в таблице «Месяцы», содержащая следующие атрибуты:

1. «ID» - уникальный идентификатор месяца, выполняющий роль первичного ключа (счетчик);

2. «MonthName» - название месяца (текстовый);

Информацию выходных днях в связи с государственными праздниками хранится в таблице «Выходные», содержащая следующие атрибуты:

1. «ID» - уникальный идентификатор выходного дня, выполняющий роль первичного ключа (счетчик);

2. «DateCelebrate» - дата выходного дня (дата/время);

3. «LinkName» - код названия выходного дня в связи с праздником (числовой), является вторичным ключом поля «ID» таблицы «Праздники»;

Информацию названии государственных праздниках хранится в таблице «Праздники», содержащая следующие атрибуты:

1. «ID» - уникальный идентификатор праздника, выполняющий роль первичного ключа (счетчик);

2. «Title» - название государственного праздника (текстовый);

Наглядно связь между таблицами изображена на Рисунке 3.1

Рисунок 3.1 - Связи между таблицами БД «График учета рабочего времени на шахте им. Т. Кузембаева в цехе «Автоматика» »

4. Нормализация отношений

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

Каждая нормальная форма представляет собой определённое условие, которому должна соответствовать таблица базы данных. Если таблица не соответствует нормальной форме, она может быть приведена к ней (нормализована) за счёт декомпозиции, то есть разбиения на несколько таблиц, связанных между собой. Теоретически, в результате нормализации объём БД должен уменьшиться. Принципиальным здесь является то, что нормализация -- обратимый процесс, из группы таблиц, получившихся при декомпозиции, всегда можно получить в точности исходную таблицу. Таким образом, нормализация не сокращает объём информации, хранимой в БД, а лишь устраняет информацию, которая может быть вычислена.

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

· Таблица содержит нуль или более записей.

· Все записи таблицы имеют одно и то же множество полей, причём одноимённые поля относятся к одинаковым типам данных.

· Таблица не может содержать двух полностью идентичных записей.

Обычно выделяют шесть нормальных форм:

Первая нормальная форма (1NF). Таблица находится в первой нормальной форме, если каждый её атрибут атомарен и все строки различны. Под выражением "атрибут атомарен" понимается, что атрибут может содержать только одно значение. Таким образом, не соответствуют 1NF таблицы, в полях которых могут храниться списки значений. Для приведения таблицы к 1NF обычно требуется разбить таблицу на несколько отдельных таблиц.

Вторая нормальная форма (2NF). Таблица находится во второй нормальной форме, если она находится в первой нормальной форме, и при этом любой её атрибут, не входящий в состав первичного ключа, функционально полно зависит от первичного ключа. Функционально полная зависимость означает, что атрибут функционально зависит от всего первичного ключа, но при этом не находится в функциональной зависимости от какой-либо его части.

Третья нормальная форма (3NF). Таблица находится в третьей нормальной форме, если она находится во второй нормальной форме, и при этом любой её неключевой атрибут функционально зависит только от первичного ключа.

Нормальная форма Бойса-Кодда (BCNF)Таблица находится в BCNF, если она находится в третьей нормальной форме, и при этом отсутствуют функциональные зависимости атрибутов первичного ключа от неключевых атрибутов. Данная нормальная форма -- это модификация третьей нормальной формы. Таблица может находиться в 3NF, но не в BCNF, только в одном случае: если она имеет, помимо первичного ключа, ещё по крайней мере один составной возможный ключ, и по крайней мере один из атрибутов таблицы входит и в первичный, и в возможный ключи. Такое бывает достаточно редко, в остальном 3NF и BCNF эквивалентны.

Четвёртая нормальная форма (4NF).Таблица находится в 4NF, если она находится в BCNF и не содержит нетривиальных многозначных зависимостей. Многозначная зависимость не является функциональной, она существует в том случае, когда из факта, что в таблице содержится некоторая строка X, следует, что в таблице обязательно существует некоторая определённая строка Y.

Пятая нормальная форма (5NF).Таблица находится в 5NF, если она находится в 4NF и любая многозначная зависимость соединения в ней является тривиальной.

Основываясь на концептуальной модели, создаем следующие сущности: Рабочие, Праздники, Отпуска, Статус, Выходные, Профессия, Сохраненные графики, Месяцы, Графики, Типы дней.

Сущность «Сохраненные_графики» имеет следующие атрибуты:

ID, NameGraphic, DateOfSave, LinkMonthNum, YearNum.

Сущность «Рабочие» имеет следующие атрибуты: ID, WokerName, TabNumber, LinkProfession, LinkStatus.

Сущность «Выходные» имеет атрибуты: ID, DateCelebrate, LinkName.

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

5. Основная часть

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

6. SQL запросы

Для базы данных «График учета рабочего времени на шахте им. Т. Кузембаева в цехе «Автоматика» » выполнены следующие запросы:

· Подсчет количества записей в таблице

Function SQL_CountRows(table:string;Connection:TADOConnection):integer;

var

str:_Recordset;

request:string;

begin

request := 'SELECT COUNT(ID) FROM ' + table;

STR := Connection.Execute(request);

result := integer(str.Fields.Item[0].Value);

end;

где table - передаваемый в функцию параметр - название таблицы;

· Получение значений атрибутов из таблицы «Отпуски», для заполнения массива, хранящего эти значения для последующих вычислений.

request := 'SELECT LinkWoker, DateBegin, Length FROM ОТПУСКИ';

STR := ADOConnection1.Execute(request);

· Получение значений атрибутов из таблицы «Рабочие», для заполнения массива, хранящего эти значения для последующих вычислений

request := 'SELECT WokerName, LinkStatus, TabNumber FROM РАБОЧИЕ';

STR := ADOConnection1.Execute(request);

· Пометка выходных дней в массиве дней месяца из таблицы, в которой хранятся данные о выходных днях «Выходные».

with sql_CreateQuery(ADOConnection1) do begin

SQL.Text := 'SELECT DateCelebrate FROM Выходные WHERE DateCelebrate BETWEEN :Date1 and :Date2';

with Parameters do begin

ParseSQL(SQL.Text, true);

ParamValues['Date1'] := Date1;

ParamValues['Date2'] := Date2;

end;

Open;

while not(EOF) do begin

MonthInfo[DayOfTheMonth(TDateTime(FieldValues['DateCelebrate']))] := DayCelebrate;

next;

end;

Close;

Free;

end;

· Сохранение названия сохраненного графика, даты сохранения в таблицу «Сохраненные_графики».

procedure SaveToSavedGraphic(NameBD:string; DateOfSave:TDateTime; MonthNum, YearNum:integer);

begin

with sql_CreateQuery(ADOConnection1) do begin

SQL.Text := 'INSERT INTO Сохраненные_графики (NameGraphic, DateOfSave, LinkMonthNum, YearNum) VALUES(:p1, :p2, :p3, :p4)';

with parameters do begin

ParseSQL(SQL.Text, true);

ParamValues['p1'] := NameBD;

ParamValues['p2'] := DateOfSave;

ParamValues['p3'] := MonthNum;

ParamValues['p4'] := YearNum;

end;

ExecSQL();

Close;

Free;

end;

end;

· Процедура сохранения самого графика в таблицу «Графики», с указанием ID сохранения в таблице «Сохраненные_графики».

procedure SaveToGraphic(IDNum, LinkWoker, LinkTypeOfDay:integer; DateOfCell:TDateTime);

begin

with sql_CreateQuery(ADOConnection1) do begin

SQL.Text := 'INSERT INTO Графики (LinkSaveId, LinkWoker, LinkTypeOfDay, DateOfCell) VALUES(:p1, :p2, :p3, :p4)';

with parameters do begin

ParseSQL(SQL.Text, true);

ParamValues['p1'] := IDNum;

ParamValues['p2'] := LinkWoker + 1;

ParamValues['p3'] := LinkTypeOfDay;

ParamValues['p4'] := DateOfCell;

end;

ExecSQL();

Close;

Free;

end;

· Получение ID последней добавленной в таблицу строки.

function GetLastID(conn:TADOConnection):integer;

begin

result := 0;

with sql_CreateQuery(conn) do begin

Страницы: 1, 2, 3



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.