Автор работы: Пользователь скрыл имя, 12 Декабря 2013 в 15:26, курсовая работа
Процесс разработки базы данных является одним из ключевых направлений в области автоматизация бизнес-процессов с использованием информационных технологий. Он позволяет решить проблему хранения и систематизации информации согласно потребностям организации.
Введение 3
Постановка задачи 4
1. Проектирование структуры базы данных 5
1.1. Техническое задание 6
1.2. Концептуальное проектирование 8
1.3. Логическое проектирование 13
2. Выбор серверной платформы (СУБД) 18
3. Физическое проектирование. Реализация базы данных на платформе Microsoft SQL Server 21
4. Типовые процедуры администрирования базы данных 26
5. Типовые запросы к базе данных 27
6. Оценка качества базы данных 28
Заключение 30
Список использованной литературы 31
Сущность |
Описание |
Chargeit |
Вид начисления у конкретного работника |
Holdit |
Вид удержания у конкретного работника |
Таблица 5. Новые связи для декомпозиции связей «многие ко многим»
Связь |
Описание |
PhaseChargeit |
Работник имеет конкретный вид начисления |
PhaseHoldit |
Работник имеет конкретный вид удержания |
ChargeChargeit |
Начисление назначено конкретному работнику |
HoldHoldit |
Удержание назначено конкретному работнику |
2. Формирование отношений на основе логической модели данных.
На этом этапе на основе логических моделей данных определяются наборы отношений, необходимые для представления сущностей, связей и атрибутов, входящих в представление отдельных пользователей о предметной области приложения.
Связь между сущностями отображается с помощью механизма «первичный ключ/внешний ключ». Поэтому для каждой подчиненной по связи сущности необходимо перенести в нее атрибуты первичного ключа родительской сущности.
Таблица 6. Внешние ключи
Сущность |
Атрибут |
Описание |
Phase |
WorkerId |
Идентификатор работника |
DivId |
Идентификатор подразделения | |
JobId |
Идентификатор должности | |
RatioId |
Номер разряда | |
Work |
PhaseId |
Идентификатор работника |
Tariff |
RatioId |
Номер разряда |
Chargeit |
PhaseId |
Идентификатор работника |
ChrargeId |
Идентификатор вида начисления | |
WorkId |
Идентификатор работы | |
Holdit |
PhaseId |
Идентификатор работника |
HoldId |
Идентификатор вида удержания | |
Calc |
PhaseId |
Идентификатор работника |
Charging |
ChargeId |
Идентификатор вида начисления |
CalcId |
Идентификатор расчета | |
Holding |
HoldId |
Идентификатор вида удержания |
CalcId |
Идентификатор расчета |
3. Проверка отношений с использованием средств нормализации.
Процесс нормализации включает следующие основные этапы:
1) приведение к 1-й нормальной форме, позволяющее удалить из отношений повторяющиеся группы атрибутов
2) приведение ко 2-й нормальной форме, позволяющее устранить частичную зависимость атрибутов от первичного ключа
3) приведение к 3-й нормальной форме, позволяющее устранить транзитивную зависимость атрибутов от первичного ключа.
4) приведение к нормальной
форме Бойса-Кодда,
4. Проверка применимости
отношений для выполнения
Целью выполнения данного этапа является проверка логической модели данных на предмет того, обеспечивает ли она поддержку всех транзакций, предусмотренных пользовательским представлением.
5. Определение ограничений целостности.
Ограничения целостности данных вводятся с целью предотвратить появление в базе противоречивых данных.
Типы ограничений целостности:
Созданная в результате процесса разработки логическая структура базы данных обсуждается в пользователями и, в случае необходимости выполняется итерационный процесс доработки модели.
Выбор целевой системы управления баз данных (СУБД) представляет собой сложную многопараметрическую задачу и является одним из важных этапов при разработке приложений баз данных. Выбранный программный продукт должен удовлетворять как текущим, так и будущим потребностям предприятия, при этом следует учитывать финансовые затраты на приобретение необходимого оборудования, самой системы, разработку необходимого программного обеспечения на ее основе, а также обучение персонала.
Можно выделить несколько групп критериев выбора СУБД:
1. Моделирование данных
2. Особенности архитектуры и функциональные возможности:
3. Контроль работы системы
4. Особенности разработки приложений
5. Производительность
6. Надежность
7. Требования к рабочей среде
8. Смешанные критерии
Расчет интегрального показателя выбора СУБД по требованиям задачи:
Таблица 7. Интегральные показатели по различным СУБД
Показатель |
Весовой коэффициент |
СУБД | ||
SQL Server 2005 |
MySQL |
Oracle | ||
Моделирование данных |
1 |
7 |
3 |
6 |
Функциональные возможности |
2 |
8 |
6 |
9 |
Контроль |
1,8 |
8 |
5 |
9 |
Разработка приложений |
2,5 |
9 |
5 |
7 |
Производительность |
2 |
8 |
7 |
9 |
Надежность |
2,5 |
8 |
4 |
8 |
Требования к рабочей среде |
2 |
9 |
7 |
7 |
Прочие критерии |
0,5 |
6 |
9 |
5 |
Итого: |
116,9 |
79 |
112,2 |
Для программной реализации базы данных учета зарплаты в поликлинике выбирается система управления базами данных Microsoft SQL Server 2005 в редакции Standard Edition.
Microsoft SQL Server использует в качестве языка запросов Transact-SQL (T-SQL) - процедурное расширение языка SQL.
Физическая реализация базы данных выполняется в виде сценария на языке Transact-SQL:
USE [clinic]
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[Charge](
[ChargeId] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
CONSTRAINT [PK_Charge] PRIMARY KEY CLUSTERED
(
[ChargeId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Division](
[DivId] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
CONSTRAINT [PK_Division] PRIMARY KEY CLUSTERED
(
[DivId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Hold](
[HoldId] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
[Percent] [float] NOT NULL CONSTRAINT [DF_Hold_Percent] DEFAULT ((0)),
[LimitUp] [money] NULL,
[LimitDown] [money] NULL,
CONSTRAINT [PK_Hold] PRIMARY KEY CLUSTERED
(
[HoldId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Job](
[JobId] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
CONSTRAINT [PK_Job] PRIMARY KEY CLUSTERED
(
[JobId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Ratio](
[RatioId] [int] NOT NULL,
CONSTRAINT [PK_Ratio] PRIMARY KEY CLUSTERED
(
[RatioId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Worker](
[WorkerId] [int] IDENTITY(1,1) NOT NULL,
[DOB] [smalldatetime] NOT NULL,
[Sex] [nvarchar](1) NOT NULL CONSTRAINT [DF_Worker_Sex] DEFAULT (N'M'),
CONSTRAINT [PK_Worker] PRIMARY KEY CLUSTERED
(
[WorkerId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Charging](
[ChargingId] [int] IDENTITY(1,1) NOT NULL,
[Summa] [money] NULL,
[ChargeId] [int] NULL,
[WorkId] [int] NULL,
[CalcId] [int] NULL,
CONSTRAINT [PK_Charging] PRIMARY KEY CLUSTERED
(
[ChargingId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Holding](
[HoldingId] [int] IDENTITY(1,1) NOT NULL,
[Summa] [money] NULL,
[HoldId] [int] NULL,
[CalcId] [int] NULL,
CONSTRAINT [PK_Holding] PRIMARY KEY CLUSTERED
(
[HoldingId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[ChargeIt](
[ChargeId] [int] NOT NULL,
[PhaseId] [int] NOT NULL,
CONSTRAINT [PK_ChargeIt] PRIMARY KEY CLUSTERED
(
[ChargeId] ASC,
[PhaseId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Phase](
[PhaseId] [int] IDENTITY(1,1) NOT NULL,
[WorkerId] [int] NULL,
[Surname] [nvarchar](50) NULL,
[Name] [nvarchar](50) NULL,
[Patronymic] [nvarchar](50) NULL,
[Tabel] [nvarchar](12) NULL,
[Child] [tinyint] NULL,
[DivId] [int] NULL,
[JobId] [int] NULL,
[RatioId] [int] NULL,
CONSTRAINT [PK_Phase] PRIMARY KEY CLUSTERED
(
[PhaseId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Holdit](
[HoldId] [int] NOT NULL,
[PhaseId] [int] NOT NULL,
CONSTRAINT [PK_Holdit] PRIMARY KEY CLUSTERED
(
[HoldId] ASC,
[PhaseId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Calc](
[CalcId] [int] IDENTITY(1,1) NOT NULL,
[CalcMonth] [smallint] NULL,
[CalcYear] [smallint] NULL,
[PhaseId] [int] NULL,
CONSTRAINT [PK_Calc] PRIMARY KEY CLUSTERED
(
[CalcId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Work](
[WorkId] [int] IDENTITY(1,1) NOT NULL,
[Start] [datetime] NOT NULL,
[Duration] [smallint] NOT NULL,
[Rate] [int] NOT NULL CONSTRAINT [DF_Work_Rate] DEFAULT ((1)),
[PhaseId] [int] NOT NULL,
CONSTRAINT [PK_Work] PRIMARY KEY CLUSTERED
(
[WorkId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Tariff](
[TariffId] [int] IDENTITY(1,1) NOT NULL,
[Rate] [float] NOT NULL CONSTRAINT [DF_Tariff_Rate] DEFAULT ((1)),
[TariffYear] [smallint] NOT NULL,
[RatioId] [int] NOT NULL,
CONSTRAINT [PK_Tariff] PRIMARY KEY CLUSTERED
(
[TariffId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]