- •Содержание
- •1 Описание предметной области
- •1.1 Исходные данные
- •1.2 Постановка задачи
- •2 Описание логической модели базы данных
- •3 Анализ на нормальные формы отношений
- •4 Выбор средства реализации базы данных
- •4.1 Общие сведения о субд
- •4.2 Обоснование выбора субд
- •5 Описание физической модели базы данных
- •6 Описание программного обеспечения системы
- •6.1 Описание пользовательского интерфейса
- •6.2 Реализация ограничений целостности и контроль ввода данных
- •6.3 Схемы основных алгоритмов
- •6.4 Описание основных программных модулей
4.2 Обоснование выбора субд
В качестве средства реализации БД была выбрана система MS SQL Server 2008 Express.
Microsoft SQL Server 2008 Express – это мощная и надежная система управления данными, обеспечивающая множество функций, защиту данных и высокую производительность для внедренных приложений-клиентов, «легких» веб-приложений и локальных хранилищ данных. SQL Server 2008 Express предназначен для упрощенного развертывания и быстрого создания прототипов; его можно получить бесплатно и свободно распространять вместе с приложениями.
SQL Server 2008 упрощает развёртывание, управление и оптимизацию данных предприятия и аналитических приложений. Как платформа управления данными предприятия, он предоставляет единую консоль управления, которая позволяет администраторам данных, находящимся в любом месте вашей организации, отслеживать, управлять и настраивать все базы данных и связанные службы по всему предприятию. Он предоставляет расширяемую инфраструктуру управления, которая может быть легко запрограммирована при помощи SQL Management Objects (SMO), позволяя пользователям переделывать и расширять их среду управления и независимым поставщикам программных продуктов (ISV) создавать дополнительные инструменты и функциональность для дальнейшего расширения возможностей, поставляемых по умолчанию.
5 Описание физической модели базы данных
Перейдем от логической модели базы данных к физической модели (рисунок 2). По физической модели сгенерируем схему базы данных в СУБД MSSQL Server. Схема БД показана на рисунке 3.
Рисунок 2 – Физическая модель данных
На основании полученной схемы отношений с учетом особенностей реализации и типа полей была получена структура таблиц базы данных:
Таблица «Собственность учреждения»:
CREATE TABLE [dbo].[tblAgency](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
CONSTRAINT [PK_tblAgency] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [U_tblAgency_Name] UNIQUE NONCLUSTERED
(
[Name] 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].[tblBuilding](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
CONSTRAINT [PK_tblBuilding] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [U_tblBuilding_Name] UNIQUE NONCLUSTERED
(
[Name] 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].[tblEnterpriseStructure](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
[Career] [varchar](50) NOT NULL,
[DirectorFIO] [varchar](50) NOT NULL,
[Phone] [int] NOT NULL,
CONSTRAINT [PK_tblEnterpriseStructure] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [U_tblEnterpriseStructure_Name] UNIQUE NONCLUSTERED
(
[Name] 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].[tblProfitability](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
CONSTRAINT [PK_tblProfitability] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [U_Profitability_Name] UNIQUE NONCLUSTERED
(
[Name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Рисунок 3 – Схема описания базы данных в MS SQL Server
Таблица «Специализация»:
CREATE TABLE [dbo].[tblSpecialization](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
CONSTRAINT [PK_tblSpecialization] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [U_tblSpecialization_Name] UNIQUE NONCLUSTERED
(
[Name] 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].[tblSquare](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
[Type] [varchar](50) NOT NULL,
CONSTRAINT [PK_tblSquare] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [U_tblSquare_Name] UNIQUE NONCLUSTERED
(
[Name] 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].[tblTransport](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
[Type] [varchar](50) NOT NULL,
CONSTRAINT [PK_tblTransport] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [U_tblTransport_Name] UNIQUE NONCLUSTERED
(
[Name] 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].[tblPtu](
[RegNumber] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
[Address] [varchar](150) NULL,
[Telephone] [int] NOT NULL,
[Agency_Id] [bigint] NOT NULL,
[Building_Id] [bigint] NOT NULL,
[Square] [decimal](8, 2) NOT NULL,
[Profitability_Id] [bigint] NOT NULL,
CONSTRAINT [PK_tblPTU] PRIMARY KEY CLUSTERED
(
[RegNumber] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [U_tblPtu_Name] UNIQUE NONCLUSTERED
(
[Name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Связь с табицей «Собственность учреждения»:
ALTER TABLE [dbo].[tblPtu] WITH CHECK ADD CONSTRAINT [FK_tblPtu_tblAgency] FOREIGN KEY([Agency_Id])
REFERENCES [dbo].[tblAgency] ([Id])
Связь с табицей «Собственность здания»:
ALTER TABLE [dbo].[tblPtu] WITH CHECK ADD CONSTRAINT [FK_tblPtu_tblBuilding] FOREIGN KEY([Building_Id])
REFERENCES [dbo].[tblBuilding] ([Id])
Связь с табицей «Рентабельность»:
ALTER TABLE [dbo].[tblPtu] WITH CHECK ADD CONSTRAINT [FK_tblPtu_tblProfitability] FOREIGN KEY([Profitability_Id])
REFERENCES [dbo].[tblProfitability] ([Id])
Таблица для связи таблиц «Предпринимательские структуры» и «Учебное заведение»:
CREATE TABLE [dbo].[tblPtuEnterpriseStructure](
[Ptu_RegNumber] [bigint] NOT NULL,
[EnterpriseStructure_Id] [bigint] NOT NULL,
CONSTRAINT [PK_tblPtuEnterpriseStructure] PRIMARY KEY CLUSTERED
(
[Ptu_RegNumber] ASC,
[EnterpriseStructure_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Связь с таблицей «Предпринимательские структуры»:
ALTER TABLE [dbo].[tblPtuEnterpriseStructure] WITH CHECK ADD CONSTRAINT [FK_tblPtuEnterpriseStructure_tblEnterpriseStructure] FOREIGN KEY([EnterpriseStructure_Id])
REFERENCES [dbo].[tblEnterpriseStructure] ([Id])
Связь с таблицей «Учебное заведение»:
ALTER TABLE [dbo].[tblPtuEnterpriseStructure] WITH CHECK ADD CONSTRAINT [FK_tblPtuEnterpriseStructure_tblPtu] FOREIGN KEY([Ptu_RegNumber])
REFERENCES [dbo].[tblPtu] ([RegNumber])
Таблица для связи таблиц «Специализация» и «Учебное заведение»:
CREATE TABLE [dbo].[tblPtuSpec](
[Spec_Id] [bigint] NOT NULL,
[Ptu_RegNumber] [bigint] NOT NULL,
[Groups_Count] [int] NOT NULL,
[Students_Count] [int] NOT NULL,
CONSTRAINT [PK_tblPtuSpec] PRIMARY KEY NONCLUSTERED
(
[Spec_Id] ASC,
[Ptu_RegNumber] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Связь с таблицей «Учебное заведение»:
ALTER TABLE [dbo].[tblPtuSpec] WITH CHECK ADD CONSTRAINT [FK_tblPtuSpec_tblPtu] FOREIGN KEY([Ptu_RegNumber])
REFERENCES [dbo].[tblPtu] ([RegNumber])
ON UPDATE CASCADE
ON DELETE CASCADE
Связь с таблицей «Специализация»:
ALTER TABLE [dbo].[tblPtuSpec] WITH CHECK ADD CONSTRAINT [FK_tblPtuSpec_tblSpecialization] FOREIGN KEY([Spec_Id])
REFERENCES [dbo].[tblSpecialization] ([Id])
Реализация значения по умолчанию для поля «Количество групп»:
ALTER TABLE [dbo].[tblPtuSpec] ADD DEFAULT ((0)) FOR [Groups_Count]
Реализация значения по умолчанию для поля «Количество учащихся»:
ALTER TABLE [dbo].[tblPtuSpec] ADD DEFAULT ((0)) FOR [Students_Count]
Таблица для связи таблиц «Занимаемые площади» и «Учебное заведение»:
CREATE TABLE [dbo].[tblPtuSquare](
[Ptu_RegName] [bigint] NOT NULL,
[Square_Id] [bigint] NOT NULL,
[Square] [decimal](6, 2) NOT NULL,
CONSTRAINT [PK_tblPtuSquare] PRIMARY KEY CLUSTERED
(
[Ptu_RegName] ASC,
[Square_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Связь с таблицей «Учебное заведение»:
ALTER TABLE [dbo].[tblPtuSquare] WITH CHECK ADD CONSTRAINT [FK_tblPtuSquare_tblPtu] FOREIGN KEY([Ptu_RegName])
REFERENCES [dbo].[tblPtu] ([RegNumber])
Связь с таблицей «Занимаемые площади»:
ALTER TABLE [dbo].[tblPtuSquare] WITH CHECK ADD CONSTRAINT [FK_tblPtuSquare_tblSquare] FOREIGN KEY([Square_Id])
REFERENCES [dbo].[tblSquare] ([Id])
Таблица для связи таблиц «Транспорт» и «Учебное заведение»:
CREATE TABLE [dbo].[tblPtuTransport](
[Transport_Id] [bigint] NOT NULL,
[Ptu_RegNumber] [bigint] NOT NULL,
[Amount] [int] NOT NULL,
CONSTRAINT [PK_tblPtuTransport_2] PRIMARY KEY CLUSTERED
(
[Transport_Id] ASC,
[Ptu_RegNumber] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Связь с таблицей «Учебное заведение»:
ALTER TABLE [dbo].[tblPtuTransport] WITH CHECK ADD CONSTRAINT [FK_tblPtuTransport_tblPtu] FOREIGN KEY([Ptu_RegNumber])
REFERENCES [dbo].[tblPtu] ([RegNumber])
Связь с таблицей «Транспорт»:
ALTER TABLE [dbo].[tblPtuTransport] WITH CHECK ADD CONSTRAINT [FK_tblPtuTransport_tblTransport] FOREIGN KEY([Transport_Id])
REFERENCES [dbo].[tblTransport] ([Id])
В таблицах реализованы ограничения уникальности полей по полю «Name», указаны ключевые поля и соединения таблиц между собой при помощи связей 1:N и N:M. Также в некоторых таблицах имеются поля в которых описаны значения по умолчанию и реализованы ограничения целостности Cascade.