База данных для хранения информации о перевозках пассажиров и грузов

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
  • Формат файла:
    MS Word
  • Опубликовано:
    2014-08-13
  • Размер файла:
    23,95 Кб
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

База данных для хранения информации о перевозках пассажиров и грузов

Оглавление

Введение

Системный анализ предметной области

Инфологическое проектирование

Выявление сущностей инфологической модели

Даталогическое проектирование

Схема базы данных

Построение таблиц базы данных

Заполнение таблиц

Создание запросов

Заключение

Список использованной литературы

Приложение А

Листинг 1

Листинг 2

Листинг 3


Введение

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

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

Автоматизация управленческого учета.

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

Автоматизация естественного планирования ресурсов (трудовых, материальных).

Автоматизация бюджетирования и финансового планирования.

Автоматизация всего предприятия в комплексе.

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

База данных - совокупность данных, организованных в соответствии с концептуальной структурой, описывающей характеристики этих данных и взаимоотношения между ними, причем такое собрание данных, которое поддерживает одну или более областей применения. Для создания, ведения и использования базы данных многочисленными пользователями существует комплекс программных и языковых средств, называемый СУБД («Система управления базами данных»). Выделяют следующие основные функции СУБД:

управление данными во внешней памяти (на дисках);

управление данными в оперативной памяти с использованием дискового кэша;

журнализация изменений, резервное копирование и восстановление базы данных после сбоев;

поддержка языков БД (DDL (Data Definition Language) - язык определения данных, DML (Data Manipulation Language) - язык манипулирования данными).

Цель данной курсовой работы: реализовать базу данных для учета работников угледобывающего предприятия.

Задачами, которые следует решить для раскрытия выбранной темы, являются:

сбор документов для описания предметной области;

отбор документов - источников для создания базы данных (этап системного анализа предметной области);

выявление сущностей инфологической модели и моделирование связей между ними (этап инфологического моделирования);

построение набора таблиц базы данных и нормализация базы данных (этап даталогического проектирования);

описание внешних моделей в терминах выбранной СУБД;

реализация базы данных и организация запросов в выбранной СУБД (этап реализации базы данных).

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

Системный анализ предметной области

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

Важно понимать, что информационная и функциональная модели предметной области создаются на этапе анализа требований к базе данных и не содержат предположений о технологии реализации базы данных. Они строятся независимо от выбираемой модели данных (сетевой, иерархической, реляционной, объектно-ориентированной, многомерной и т.д.), поддерживаемой СУБД, модели вычислений, программно-аппаратной платформы для базы данных. Информационная и функциональная модели предметной области являются входными данными для процесса проектирования базы данных.

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

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

Функциональный подход реализует принцип движения «от задач» и применяется тогда, когда заранее известны функции некоторой группы лиц и комплексов задач, для обслуживания информационных потребностей. В этом случае можно четко выделить минимальный необходимый набор объектов предметной области, которые должны быть описаны.

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

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

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

базовую информацию о каждом работнике предприятия (анкетные данные);

данные о подразделениях предприятия;

данные об участках (отделах, службах);

данные о карьерных движениях работников.

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

Инфологическое проектирование

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

Инфологическое проектирование - построение семантической модели предметной области, т.е. информационной модели наиболее высокого уровня абстракции. Такая модель создается без ориентации на какую-либо конкретную СУБД и модель данных. Термины «семантическая модель», «концептуальная модель» и «инфологическая модель» являются синонимами. Кроме того, равноправно могут использоваться слова «модель базы данных», «модель предметной области», поскольку такая модель является как образом реальности, так и образом проектируемой базы данных для этой реальности. Описание объектов предметной области проведем в терминах модели «сущность-связь», или ER - модели (Entity Relationship).

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

Между сущностями могут быть установлены связи - бинарные ассоциации, показывающие, каким образом сущности соотносятся или взаимодействуют между собой. Связь может существовать между двумя разными сущностями или между сущностью и ей же самой (рекурсивная связь). Связи делятся на три типа по множественности:

один-к-одному (1:1)

один-ко-многим (1:М)

многие-ко-многим (М: М)

Связь «один-к-одному» (1:1) означает, что один экземпляр одной сущности связан только с одним экземпляром другой сущности, а связь «многие-ко-многим» (М: М) означает, что один экземпляр первой сущности может быть связан с несколькими экземплярами второй сущности, и наоборот, один экземпляр второй сущности может быть связан с несколькими экземплярами первой сущности. Связь «один-ко-многим» (1:М) означает, что один экземпляр сущности, расположенный слева по связи, может быть связан с несколькими экземплярами сущности, расположенными справа по связи.

Выявление сущностей инфологической модели

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

На основании изучения предметной области выделим следующие основные сущности модели «сущность-связь»:

Работники

Участки (Отделы)

Профессия

Карьерные движения работников

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

УчастокНаименование_участкаПодразделениеОписаниеРисунок 2 - Определение сущности «Участки»

ПрофессияНаименованиеУчастокДолжностной_разрядСтавка/Должностной_окладСтатусРисунок 3 - Определение сущности «Профессии»

Карьерные_движения_работниковРаботникПризнак_движенияПрофессияДата_движенияПриказКомментарииРисунок 4 - Определение сущности «Карьерные движения»

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

Даталогическое проектирование

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

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

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

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

Переменная отношения находится в первой нормальной форме (1НФ) тогда и только тогда <#"justify">Схема базы данных

Рисунок 5 - Схема базы данных

Построение таблиц базы данных

На предыдущем этапе мы построили схему базы данных, воспользовавшись общими правилами перехода к реляционной модели данных. Она является корректной, поскольку в ней отсутствуют нежелательные отношения. Ставится вопрос, а какую же СУБД использовать? Выбор остановим на реляционной СУБД MS SQL Server.SQL Server - система управления реляционными базами данных, разработанная корпорацией Microsoft, основной используемый язык запросов - Transact-SQL, создан совместно Microsoft и Sybase, который является реализацией стандарта ANSI/ISO (American National Standards Institute/International Organization for Standardization) по структурированному языку запросов SQL с расширениями.

Язык SQL был первоначально разработан компанией IBM, а в настоящее время поддерживается большинством коммерческих СУБД, представленных на рынке, и является официальным стандартом языка для работы с реляционными базами данных. Само, название SQL, является аббревиатурой, образованной от Structured Query Language (язык структурированных запросов).

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

Далее представлены все таблицы, в режиме Design (Конструктор).

Рисунок 6/1 - Таблица tb_worker

Рисунок 6/2 - Таблица tb_uchastok

Рисунок 6/3 - Таблица tb_podrazdeleniye

Рисунок 6/4 - Таблица tb_dvizeniye

Рисунок 6/5 - Таблица tb_occupation

Рисунок 6/6 - Таблица tb_pas_department

Рисунок 6/7 - Таблица tb_passport

Рисунок 6/8 - Таблица tb_prikaz

Итак, мы привели основные таблицы с приведением типов полей. Ключевые поля имеют тип int, и в параметрах имеют свойство IdentitySpecification=Yes, что позволяет СУБД, автоматически, по мере добавления записей в таблицу, наращивать идентификатор.

Заполнение таблиц

Работники:

база данные учет

Рисунок 7/1 - Заполнение таблицы tb_worker

Таблица, в которой содержится список паспортных столов:

Рисунок 7/2 - Заполнение таблицы tb_pas_department

Паспортные данные работников:

Рисунок 7/3 - Заполнение таблицы tb_passport

Страны, области, города, районы:

Рисунок 7/4 - Заполнение таблиц: «tb_country, tb_region, tb_city, tb_district»

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

Рисунок 7/5 - Заполнение таблицы «tb_podrazdeleniye»

Рисунок 7/6 - Заполнение таблицы «tb_uchastok»

Согласно Законодательной базе Украины, указание национальности в анкете работники не является обязательным условием, но, тем не менее, была создана таблица, в которой хранится список национальностей, на случай модификации законов:

Рисунок 7/7 - Заполнение таблиц: «tb_nationality, tb_gender»

Список профессий:

Рисунок 7/7 - Заполнение таблицы «tb_occupation»

Признаки карьерного движения:

Рисунок 7/8 - Заполнение таблицы «tb_priznak»

Журнал карьерного движения:

Рисунок 7/9 - Заполнение таблицы «tb_dvizeniye»

Список приказов, которые сопровождают любое карьерное движение работника:

Рисунок 7/10 - Заполнение таблицы «tb_prikaz»

Создание запросов

.NET Framework - программная платформа <#"241" src="doc_zip22.jpg" />

Запрос №2. Выведем на экран основные данные о работниках предприятия. Код представлен в Листинге 2. Результатом работы запроса будет:


Запрос №3. В данном запросе выведем полную информацию о работнике «Пронякин Дмитрий Богданович», нам известен его табельный номер «8508». Нас интересует базовая информация, указанная в анкете, должность, карьерные движения:


Заключение

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

Основные данные о работнике (ТН, ФИО, место прописки и т.д.);

Список подразделений на предприятии;

Список участков по каждому подразделению на предприятии;

Журнал карьерных движений работников.

Следующими этапами на пути развития данной информационной системы будут:

доработка схемы базы данных;

создание приложения клиент/сервер;

разработка графического интерфейса;

разработка системы автоматического учета работников.

Основной задачей системы автоматического учета (САУР - комплекс считывающих устройств) будет, отслеживание спуска/подъема работников в шахту, учета ламп. Эти параметры позволят: рассчитать время проведенное работником на рабочем месте, а затем и заработную плату с учетом почасовой ставки, либо должностного оклада, составить табель выходов.

Приложение клиент/сервер, опираясь на информацию, получаемую от САУР, свяжет различные отделы поверхностной группы предприятия, с целью автоматического расчета заработной платы работников.

Список использованной литературы

1. Браун С. Visual Basic: Учебный курс. - СПб.: «Питер», 2012. - 576 с.

. Голицина О.Л. Базы данных: Учебное пособие. - М.: «ФОРУМ: ИНФРА-М», 2011. - 352 с.

. Дейт К. Дж. Введение в системы баз данных. - СПб.: Издательский дом «Вильямс», 2009. - 848 с.

. Карпова Т.С. Базы данных: модели, разработка, реализация. - СПб.: «Питер», 2012. - 304 с.

. Хомоненко А.Д. Базы данных: Учебник для вузов. - М.: «Корона», 2008. - 421 с.

6. Кузнецов С. Д. Основы баз данных. - 2-е изд. - М.: Интернет-университет информационных технологий; БИНОМ. Лаборатория знаний, 2009. - 484 с. - ISBN 978-5-94774-736-2 <#"justify">Приложение А

Листинг 1

@{db = Database.Open("Worker");

var selectQueryString = "SELECT" +

" id_profession ID, tb_podrazdeleniye.Name PODR,tb_uchastok.Name NAMEU,tb_occupation.Name NAMEPROF,kategori,stavka," +

" Status" +

" FROM [Worker].[dbo].[tb_occupation]" +

" JOIN tb_uchastok ON tb_occupation.id_uchastok = tb_uchastok.id_uchastok" +

" JOIN tb_podrazdeleniye ON tb_uchastok.id_podrazdeleniye = tb_podrazdeleniye.id_podrazdeleniye";data = db.Query(selectQueryString);grid = new WebGrid(source: data, defaultSort: "ID", rowsPerPage: 14);

}

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8" />

<title>Отображение данных при помощи WebGrid</title>

<style type="text/css">

.grid { margin: 4px; border-collapse: collapse; width: auto;}

.head {background-color: #E8E8E8; font-weight: bold; color: #FFF;}

.grid th,.grid td { border: 1px solid #C0C0C0; padding: 5px;}

.alt { background-color: #E8E8E8; color: #000;}

.product { width: auto; font-weight:bold;text-align: center; }

.stav { width: auto;text-align: right; }

</style>

</head>

<body>

<h1>GridOccupation List</h1>

<div id="grid">

@grid.GetHtml(: "grid",: "head",: "alt",: grid.Columns(.Column("ID","№", style:"product"),.Column("PODR","Подразделение",format:@<text>@item.PODR</text>),.Column("NAMEU","Участок",format:@<text>@item.NAMEU</text>),.Column("NAMEPROF","Должность",format:@<text>@item.NAMEPROF</text>),.Column("kategori","Разряд",style:"product"),.Column("stavka","Ставка",format:@<text>₴@item.stavka</text>,style:"stav"),.Column("Status","Статус",format:@<text>@item.Status</text>)

)

)

</div>

</body>

</html>

Листинг 2

@{db = Database.Open("Worker");selectQueryString = "SELECT id_worker ID, tableNumber TN, FirstName FN, MiddleName MN," +

" LastName LN, convert(char(10),date_of_birth,102) as date, tb_gender.value GN,series, pasnumber,INN, INNsafe, phoneNumber" +

" FROM tb_worker LEFT JOIN tb_passport ON tb_worker.id_passport=tb_passport.id_passport" +

" JOIN tb_gender ON tb_passport.id_gender=tb_gender.id_gender";

}

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8" />

<title>Worker List</title>

<style>, th, td {: solid 1px #bbbbbb;collapse: collapse;: 2px;

}

</head>

<body>

<h1>Worker List</h1>

<h2>tb_worker</h2>

<table><thead><tr>

<th>Id</th>

<th>TN</th>

<th>Фамилия</th>

<th>Имя</th>

<th>Отчество</th>

<th>Пол</th>

<th>Дата рождения</th>

<th>Серия</th>

<th>Номер</th>

<th>ИНН</th>

<th>Код соц. страхования</th>

<th>Телефонный номер</th></tr></thead>

<tbody>@foreach(var row in db.Query(selectQueryString))

{<tr> <td>@row.ID</td>

<td>@row.TN</td>

<td>@row.FN</td>

<td>@row.MN</td>

<td>@row.LN</td>

<td>@row.GN</td>

<td>@row.date</td>

<td>@row.series</td>

<td>@row.pasnumber</td>

<td>@row.INN</td>

<td>@row.INNsafe</td>

<td>@row.phoneNumber</td></tr>}

</tbody>

</table>

</body>

</html>

Листинг 3

@{db = Database.Open("Worker");tn="8508";selectQueryString = "SELECT id_worker, tableNumber, FirstName, MiddleName, LastName," +

" tb_worker.id_passport IDPAS,series,pasnumber,CONVERT(char(10),date_of_birth,102) as date1,tb_gender.value GV,TBPD.Name IDPD, tb_country.value IDCN," +

" tb_region.value IDRN, tb_city.value IDCCN, CONVERT(char(10),date,102) as date2 FROM tb_worker " +

" JOIN tb_passport ON tb_worker.id_passport=tb_passport.id_passport" +

" JOIN tb_pas_department AS TBPD ON tb_passport.id_pas_department=TBPD.id_pas_department" +

" JOIN tb_country ON tb_country.id_country=TBPD.id_country" +

" JOIN tb_region ON tb_region.id_region=TBPD.id_region" +

" JOIN tb_city ON tb_city.id_city=TBPD.id_city" +

" JOIN tb_gender ON tb_passport.id_gender=tb_gender.id_gender" +

" WHERE tableNumber=" + tn;selectQueryString2 = "SELECT phoneNumber,tb_country.value TBCV,tb_region.value TBRV, tb_city.value TBCCV," +

" tb_district.value TBDV, zipCode, street, house_number, flat_number FROM tb_worker" +

" JOIN tb_passport ON tb_worker.id_passport=tb_passport.id_passport" +

" JOIN tb_country ON tb_country.id_country=tb_passport.id_country" +

" JOIN tb_region ON tb_region.id_region=tb_passport.id_region" +

" JOIN tb_city ON tb_city.id_city=tb_passport.id_city" +

" JOIN tb_district ON tb_district.id_district=tb_passport.id_district" +

" WHERE tableNumber=" + tn;selectQueryString3 = "SELECT tableNumber, tb_priznak.Value TBV,"+

" tb_occupation.Name TOPO, CONVERT(char(10),date_dvizeniya,102) as date,"+

" tb_uchastok.Name NU,tb_podrazdeleniye.Name NP FROM tb_worker" +

" RIGHT JOIN tb_dvizeniye ON tb_dvizeniye.id_worker=tb_worker.id_worker" +

" JOIN tb_priznak ON tb_priznak.id_priznak=tb_dvizeniye.id_priznak" +

" JOIN tb_occupation ON tb_occupation.id_profession=tb_dvizeniye.id_profession" +

" JOIN tb_uchastok ON tb_uchastok.id_uchastok=tb_occupation.id_uchastok" +

" JOIN tb_podrazdeleniye ON tb_podrazdeleniye.id_podrazdeleniye=tb_uchastok.id_podrazdeleniye" +

" WHERE tableNumber=" + tn;

}

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8" />

<title>Worker info</title>

<style>, th, td {: solid 1px #bbbbbb;collapse: collapse;: 2px;

}

</style>

</head>

<h1>Worker info</h1>

<h2>Работник</h2>

<table>

<thead>

<tr>

<th>ID</th>

<th>TN</th>

<th>Фамилия</th>

<th>Имя</th>

<th>Отчество</th>

<th>Дата рождения</th>

<th>Пол</th>

</tr>

</thead>

<tbody>

@foreach(var row in db.Query(selectQueryString))

{

<tr>

<td>@row.id_worker</td>

<td>@row.tableNumber</td>

<td>@row.FirstName</td>

<td>@row.MiddleName</td>

<td>@row.LastName</td>

<td>@row.date1</td>

<td>@row.GV</td>

</tr>

}

</tbody>

</table>

<h3>Пасспортные данные</h3>

<table>

<thead>

<tr>

<th>Серия</th>

<th>Номер</th>

<th colspan="4">Место получения</th>

<th>Дата получения</th>

</tr>

</thead>

<tbody>

@foreach(var row in db.Query(selectQueryString))

{

<tr>

<td>@row.series</td>

<td>@row.pasnumber</td>

<td>@row.IDCN</td>

<td>@row.IDRN</td>

<td>@row.IDCCN</td>

<td>@row.IDPD</td>

<td>@row.date2</td>

</tr>

}

</tbody>

</table>

<h3>Данные о прописке</h3>

<table>

<thead>

<tr>

<th colspan="8">Место прописки</th>

<th>Телефон</th>

</tr>

</thead>

<tbody>

@foreach(var row in db.Query(selectQueryString2))

{

<tr>

<td>@row.TBCV</td>

<td>@row.TBRV</td>

<td>@row.TBCCV</td>

<td>@row.TBDV</td>

<td>@row.street</td>

<td>@row.house_number</td>

<td>@row.flat_number</td>

<td>@row.phoneNumber</td>

</tr>

}

</tbody>

</table>

<h3>Движения</h3>

<table>

<thead>

<tr>

<th>TN</th>

<th>Признак</th>

<th>Подразделение</th>

<th>Участок</th>

<th>Должность</th>

<th>Дата движения</th>

</tr>

</thead>

<tbody>

@foreach(var row in db.Query(selectQueryString3))

{

<tr>

<td>@row.tableNumber</td>

<td>@row.TBV</td>

<td>@row.NP</td>

<td>@row.NU</td>

<td>@row.TOPO</td>

<td>@row.date</td>

</tr>

}

</tbody>

</table>

</body>

</html>

Похожие работы на - База данных для хранения информации о перевозках пассажиров и грузов

 

Не нашел материал для своей работы?
Поможем написать качественную работу
Без плагиата!