Приложение "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. Организация обмена данными между серверной частью и клиентским приложением
В данном проекте обмен данными с другими БД не использовался, однако в случае н