Приложение "Providers"

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



ariffs.Affiliate_id INNER JOIN.Technology ON dbo.Tariffs.Technology_id = dbo.Technology.id ON dbo.Regions.id = dbo.Affiliates.Region_id(dbo.Technology.Name LIKE '%DSL')

2.Выборка тарифов с высокой скоростью (более 512 Мбит/сек)

SELECT DISTINCT .Regions.Name AS Регион, dbo.Providers.Name AS Провайдер, dbo.Tariffs.Name AS Тариф, dbo.Tariffs.MonthFee, .Technology.Name AS Технология, dbo.Tariffs.Speeddbo.Regions INNER JOIN.Affiliates INNER JOIN.Providers ON dbo.Affiliates.Provider_id = dbo.Providers.id INNER JOIN dbo.Tariffs ON dbo.Affiliates.id = dbo.Tariffs.Affiliate_id INNER JOIN.Technology ON dbo.Tariffs.Technology_id = dbo.Technology.id ON dbo.Regions.id = dbo.Affiliates.Region_id

WHERE (dbo.Tariffs.Speed > 512)

Выбор услуг, предоставляемых провайдером RosTelecom в различных регионах

SELECT DISTINCT dbo.Regions.Name AS Регион, dbo.Services.Name AS Услугаdbo.Regions INNER JOIN.Affiliates INNER JOIN.Providers ON dbo.Affiliates.Provider_id = dbo.Providers.id ON dbo.Regions.id = dbo.Affiliates.Region_id INNER JOIN.AffiliateServices ON dbo.Affiliates.id = dbo.AffiliateServices.Affiliate_id INNER JOIN.Services ON dbo.AffiliateServices.Service_id = dbo.Services.id(dbo.Providers.Name = 'RosTelecom')

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

SELECT DISTINCT TOP (100) PERCENT Regions_1.Name AS Регион, Providers_1.Name AS Провайдер,

(SELECT COUNT(*) AS Expr1dbo.Affiliates(Region_id = Regions_1.id) AND (Provider_id = Providers_1.id)) AS [Количество филиалов],

(SELECT STR(SUM(Users)) AS Expr1dbo.Affiliates AS Affiliates_2(Region_id = Regions_1.id) AND (Provider_id = Providers_1.id)) + '/' +

(SELECT STR(SUM(Users)) AS Expr1dbo.Affiliates AS Affiliates_2(Region_id = Regions_1.id)) AS [Доля пользователей в регионе]dbo.Providers AS Providers_1 INNER JOIN.Affiliates AS Affiliates_1 ON Providers_1.id = Affiliates_1.Provider_id INNER JOIN.Regions AS Regions_1 ON Regions_1.id = Affiliates_1.Region_id

4.Выборка, показывающая интернетификацию регионов (отношение пользователей интернета к населению)

SELECT DISTINCT TOP (100) PERCENT Name AS Регион,

(SELECT SUM(Users) AS Expr1dbo.Affiliates AS Affiliates_2(Region_id = Regions_1.id)) AS [Пользователей в регионе], Population * 1000 AS Население,

(SELECT CAST(SUM(Users) AS float) AS Expr1dbo.Affiliates AS Affiliates_2(Region_id = Regions_1.id)) / (Population * 1000) AS [Кол. Интернетов]dbo.Regions AS Regions_1BY [Кол. Интернетов]

5.Выборка безлимитных тарифов

SELECT DISTINCT .Regions.Name AS Регион, dbo.Providers.Name AS Провайдер, dbo.Tariffs.Name AS Тариф, dbo.Tariffs.MonthFee,

dbo.Technology.Name AS Технологияdbo.Regions INNER JOIN.Affiliates INNER JOIN.Providers ON dbo.Affiliates.Provider_id = dbo.Providers.id INNER JOIN.Tariffs ON dbo.Affiliates.id = dbo.Tariffs.Affiliate_id INNER JOIN.Technology ON dbo.Tariffs.Technology_id = dbo.Technology.id ON dbo.Regions.id = dbo.Affiliates.Region_id

WHERE (dbo.Tariffs.TrafficPrice = 0)

6.Выборка тарифов по беспроводным технологиям

SELECT DISTINCT .Regions.Name AS Регион, dbo.Providers.Name AS Провайдер, dbo.Tariffs.Name AS Тариф, dbo.Tariffs.MonthFee,

dbo.Technology.Name AS Технологияdbo.Regions INNER JOIN.Affiliates INNER JOIN.Providers ON dbo.Affiliates.Provider_id = dbo.Providers.id INNER JOIN.Tariffs ON dbo.Affiliates.id = dbo.Tariffs.Affiliate_id INNER JOIN.Technology ON dbo.Tariffs.Technology_id = dbo.Technology.id ON dbo.Regions.id = dbo.Affiliates.Region_id(dbo.Technology.Wire = 'False')

4. Разработка представлений для отображения результатов выборки

Для каждого запроса было создано представление. Результаты выборок приведены ниже.

5. Проектирование хранимых процедур

В данном проекте были созданы две хранимые процедуры:

1. Для определения интернетификации региона:

PROCEDURE [dbo].[GET_INTERNETS] @REGION varchar(50)NOCOUNT ON;CAST(SUM(Users) AS float) / (SELECT Population * 1000 FROM REGIONS WHERE Name =@REGION) AS InternetsAffiliatesRegion_id = (SELECT id FROM REGIONS WHERE Name =@REGION)

. Для увеличения (или уменьшения) населения региона:

PROCEDURE [dbo].[INCREASE_POPULATION]

@REGION varchar(50),

@NUM intNOCOUNT ON;REGIONS POPULATION=POPULATION+@NUM RTRIM(LTRIM(NAME))=@REGION

END

6. Разработка механизмов управления данными в базе при помощи триггеров

.1 Триггер для добавления данных

1. Триггер для вставки и обновления данных в таблице Providers, недопускающий повторения названий провайдеров

CREATE TRIGGER [dbo].[CINSERTION_CHECK][dbo].[Providers]INSERT, UPDATENOCOUNT ON;(SELECT Count(*) FROM [dbo].[Providers], [inserted][dbo].[Providers].[Name] = [inserted].[Name])> 1 'Такой провайдер уже есть' ROLLBACK TRAN@@ERROR != 0 'Error occurred during related tables' ROLLBACK TRAN

2. Тригер, проверяющий правильность формата e-mail

CREATE TRIGGER [dbo].[INSERTION_CHECK][dbo].[Affiliates]INSERT, UPDATENOCOUNT ON;(SELECT Count(*) FROM [inserted] WHERE [Email] LIKE '%@%.%' AND NOT ([Email] IS NULL ) ) = 0 'Неверный формат e-mail' ROLLBACK TRAN@@ERROR != 0 'Error occurred during related tables' ROLLBACK TRAN

END

6.2 Триггер для удаления данных

Триггер для каскадного удаления данных из таблицы Affiliates при удалении записи из таблицы Providers

CREATE TRIGGER [dbo].[CASCADE_DEL][dbo].[Providers]DELETENOCOUNT ON;AffiliatesAffiliates a, deleted d WHERE a.Provider_id = d.id@@ERROR != 0 'Error occurred during related tables' ROLLBACK TRAN

6.3 Триггер для обновления данных

провайдер база данные приложение

Тригер запрещает изменение названия организации

CREATE TRIGGER [dbo].[UPDATE_CHECK] [dbo].[Providers]UPDATE AS NOCOUNT ON;(NOT ( (SELECT [Name] FROM [inserted]) = (SELECT [Name] FROM [deleted]) ) )

BEGIN'Нельзя поменять название' ROLLBACK TRAN

END@@ERROR != 0

PRINT 'Error occurred during related tables' ROLLBACK TRAN

RETURN

END

7. Разработка технологий доступа к базе данных

.1 Выбор пользователей базы данных

В данном случае было выбрано 2 группы пользователей: администраторы и пользователи.

7.2 Выбор пользователей базы данных

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

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

8. Организация обмена данными между серверной частью и клиентским приложением

Клиентское приложение осуществляет через экранные формы взаимодействие пользователя с таблицами данных и управляющим сервером по технологии ADO.NET. Экранные формы приложения показаны в Приложении 1.

9. Организация обмена данными между серверной частью и клиентским приложением

В данном проекте обмен данными с другими БД не использовался, однако в случае н