Программирование на SQL | Задание 1. Создать таблицу справочник месторождений

В этом разделе сайта попытаемся разобраться с программированием баз данных. Язык называется SQL. В этом языке нет или почти нет классов, переменных, массивов и циклов. Сравнивать его с языками высокого уровня не имеет смысла. Но без него Вы не сможете написать интерфейс для настольных приложений Windows или интернет сайтов. Для Разработчика надо обязательно надо знать SQL, библиотеки обработки данных на C#, Microsoft Visual Studio, Microsoft SQL Server Management Studio или dbForge Studio for SQL Server

Задание 1. Создать таблицу справочник месторождений

Примеры, начинающиеся со слова Задание, пригодятся вам для проверки знаний на основе 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 

 

Добавить комментарий

Loading