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

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

Задание 4. Создать таблицу результатов химических анализов

Это задание тоже относится к одной и той же теме, работы со скважинами

Поля таблицы следующие

  • Код скважины (должен обязательно присутствовать в таблице описания скважины)
  • Глубина (число до двух знаков после запятой, не может быть больше фактической глубины скважины из таблицы описания, проверять в триггере при вводе и редактировании)
  • содержание Ni (null или 0.00001-100%, число до 5 знаков после запятой)
  • содержание Cu (null или 0.00001-100%, число до 5 знаков после запятой)
  • содержание Pt (null или 0.00001-100%, число до 5 знаков после запятой)
  • содержание Pd (null или 0.00001-100%, число до 5 знаков после запятой)

Примечание. Первые два поля уникальны, т.е. для одной скважины может быть несколько глубин с разными результатами анализов. (предоставить скрипт создания таблицы, триггера  и заполнения)

Решение задачи может выглядеть так.

GO
	-- Создаем таблицу
	CREATE TABLE [dbo].[ХимическиеАнализы](
		[Код скважины] [nvarchar](20) NOT NULL,
		[Глубина] [decimal](8, 2) NOT NULL,
		[СодержаниеNI] [decimal](8, 5) NULL,
		[СодержаниеCu] [decimal](8, 5) NULL,
		[СодержаниеPt] [decimal](8, 5) NULL,
		[СодержаниеPd] [decimal](8, 5) NULL,
	 CONSTRAINT [PK_ХимическиеАнализы] PRIMARY KEY CLUSTERED 
	(
		[Код скважины] ASC,
		[Глубина] 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
	CREATE TRIGGER [dbo].[ХимическиеАнализы_INS_UPD]
	ON [dbo].[ХимическиеАнализы]
	FOR INSERT, UPDATE
	AS
	BEGIN
	  UPDATE [dbo].[ХимическиеАнализы]
	  SET 
		[СодержаниеNI] = 1.0,
		[СодержаниеCu] = 1.2,
		[СодержаниеPt] = 3.2,
		[СодержаниеPd] = 1.2,
		[Глубина] = 200
	  FROM [ХимическиеАнализы] s
	  INNER JOIN Inserted i
		ON s.[Код скважины] = i.[Код скважины] AND s.[Глубина] = i.Глубина
END
GO

На заключительном этапе необходимо заполнить таблицу данными.

GO
	-- Заполняем ее данными
	INSERT INTO [ХимическиеАнализы] ([Код скважины], [Глубина], [СодержаниеNI], [СодержаниеCu], [СодержаниеPt], [СодержаниеPd])
		VALUES
			('ББ-0005A',930.0,70.0,20.0,10.0,0.005)
			,('ББ-0005A',920.0,0.007,1.0,2.0,15.0)
			,('ББ-0005A',910.0,4.0,0.58,0.21,90.0)
			,('ББ-0005A',900.0,32.0,21.0,0.5,0.235)
			,('ББ-0005A',850.0,25.01,12.05,18.06,10.0)
			,('ББ-0005A',800.0,85.01,17.05,17.06,14.0)
			,('ББ-0005A',750.0,86.01,15.05,17.06,14.0)
			,('ББ-0005A',700.0,82.01,12.05,17.06,14.0)
GO

 Полное решение дано по этой ссылке Набор квалификационных решений SQL Server 

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

Loading