Примеры, начинающиеся со слова Задание, пригодятся вам для проверки знаний на основе Microsoft SQL Server. Это нужно, например, для прохождения тестов на вакансию, связанную с программированием T-SQL Server. Срок выполнения таких задач не может быть более 1-2 дней. Иначе интерес к вам как специалисту будет потерян.
Вам предлагается создать таблицу справочник месторождений.
- Код месторождения (целый числовой)
- Широта (десятичные градусы, -pi/2 >= широта <= pi/2)
- Долгота (десятичные градусы, 0 >= долгота <= 2*pi)
- Зона (целый числовой, вычисляемые поле, Зона = div(Долгота/6) + 1)
- Наименование месторождения (уникальное текстовое, до 50 знаков)
- Система координат (Талнахская, Норильская; необязательное поле, предусмотреть возможность добавление новых систем координат)
- Дата ввода \ обновления
- Компьютер пользователя, выполнившего операцию
Примечание. Последние 2 поля должны обновляться в триггере с использованием системных функций (предоставить скрипт создания таблицы, триггера). Заполнить таблицу данными (предоставить скрипт с командами ввода данных)
Задача может быть решена как с помощью пакетного файла, как и в виде отдельной базы данных. Подумайте, прежде чем смотреть решение. Возможно даже лучше в качестве тренировки, самому набрать скрипт. Текст скрипта приводится не полностью, а частично. Главное показать логику решения таких задач
1 часть решения. На этом этапе нам нужно создать таблицу. Скрипт выглядит так.
GO
-- Создаем таблицу СправочникМесторождений
CREATE TABLE [dbo].[СправочникМесторождений](
[Код месторождения] [int] NOT NULL,
[Широта] [decimal](10, 5) NULL,
[Долгота] [decimal](10, 5) NULL,
[Зона] AS (CONVERT([int],[Долгота]/(6))+(1)),
[Наименование месторождения] [nvarchar](50) NOT NULL,
[Система координат] [nvarchar](256) NULL,
[Дата ввода \ Обновления] [datetime] NULL,
[Компьютер пользователя] [nvarchar](128) NULL,
CONSTRAINT [PK_СправочникМесторождений] PRIMARY KEY CLUSTERED
(
[Код месторождения] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_СправочникМесторождений] UNIQUE NONCLUSTERED
(
[Наименование месторождения] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Далее нужно создать триггер для проверки данных и назначения служебным полям данных.
GO
CREATE TRIGGER [dbo].[СправочникМесторождений_UPD_INS]
ON [dbo].[СправочникМесторождений]
AFTER INSERT, UPDATE
AS
BEGIN
UPDATE [dbo].[СправочникМесторождений]
SET [Дата ввода \ Обновления] = GETDATE()
,[Компьютер пользователя] = 'Компьютер 1'
,[Широта] = PI()/2
,[Долгота] = PI()
,[Система координат] = N'Талнахская'
FROM СправочникМесторождений s
INNER JOIN Inserted i
ON s.[Код месторождения] = i.[Код месторождения]
END
На третьем этапе вам потребуется заполнить данными таблицу месторождений.
GO
-- Заполняем таблицу справочник месторождений
DECLARE @I int
SET @I = 0
WHILE @I < 10
BEGIN
-- -pi/2 >= широта <= pi/2, 0 >= долгота <= 2*pi)
INSERT INTO СправочникМесторождений ([Код месторождения],[Широта],[Долгота],[Наименование месторождения],[Система координат])
VALUES (100 + @I, -180.0 + 18.0*@I, 360.0-18.0*@I, 'Месторождение ' + Convert(nvarchar(10),100 + @I),'Норильская') ;
SET @I = @I + 1
END
GO
Практически задача решена, но ее надо доработать, чтобы подтвердить свой класс разработчика Microsoft SQL Server.
Полное решение дано по этой ссылке Набор квалификационных решений SQL Server