Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Записка БД Курсач.doc
Скачиваний:
29
Добавлен:
16.03.2015
Размер:
746.5 Кб
Скачать

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]