-- 3.5.45 Power
-- Добавляем справочник видов стоек опор ЛЭП
CREATE TABLE Справочник_видов_стоек (
	Код_вида_стойки		int IDENTITY(1,1),
	Условное_обозначение	nvarchar(30)	NOT NULL,
	Материал_стойки		nvarchar(50)	NULL,
	Высота			float		NULL,
	Описание		nvarchar(150)	NULL,
	Скрытое			bit		NULL,
	PRIMARY KEY (Код_вида_стойки)
 )
exec sp_addextendedproperty 'MS_Description', N'Виды стоек опор ЛЭП', 'user', 'dbo', 'Table', 'Справочник_видов_стоек'
exec sp_addextendedproperty 'MS_Description', N'Уникальный идентификатор вида стойки', 'user', 'dbo', 'Table', 'Справочник_видов_стоек', 'Column', 'Код_вида_стойки'
exec sp_addextendedproperty 'MS_Description', N'Условное обозначение стойки (например, СВ 105-3,6)', 'user', 'dbo', 'Table', 'Справочник_видов_стоек', 'Column', 'Условное_обозначение'
exec sp_addextendedproperty 'MS_Description', N'Материал стойки', 'user', 'dbo', 'Table', 'Справочник_видов_стоек', 'Column', 'Материал_стойки'
exec sp_addextendedproperty 'MS_Description', N'Высота стойки в метрах', 'user', 'dbo', 'Table', 'Справочник_видов_стоек', 'Column', 'Высота'
exec sp_addextendedproperty 'MS_Description', N'Произвольное описание стойки', 'user', 'dbo', 'Table', 'Справочник_видов_стоек', 'Column', 'Описание'
GO
-- Заполняем справочник видов стоек опор ЛЭП
SET IDENTITY_INSERT Справочник_видов_стоек ON
INSERT INTO Справочник_видов_стоек (Код_вида_стойки, Условное_обозначение, Материал_стойки, Высота) VALUES (1,'СВ 105-3,6', 'железобетон', 205)
INSERT INTO Справочник_видов_стоек (Код_вида_стойки, Условное_обозначение, Материал_стойки, Высота) VALUES (2,'СВ 110-3,5', 'железобетон', 280)
INSERT INTO Справочник_видов_стоек (Код_вида_стойки, Условное_обозначение, Материал_стойки, Высота) VALUES (3,'СВ 164-12', 'железобетон', 380)
INSERT INTO Справочник_видов_стоек (Код_вида_стойки, Условное_обозначение, Материал_стойки, Высота) VALUES (4,'СВ 7-13', 'железобетон', 310)
SET IDENTITY_INSERT Справочник_видов_стоек OFF
GO
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-- Добавляем справочник анкерных плит опор ЛЭП
CREATE TABLE Справочник_анкерных_плит (
        Код_вида_плиты		int IDENTITY(1,1),
        Наименование		nvarchar(50) NOT NULL,
        Масса			float	NULL,
        Высота			float	NULL,
        Длина			float	NULL,
        Ширина			float	NULL,
	Скрытое			bit	NULL,
        PRIMARY KEY (Код_вида_плиты)
 )
GO
exec sp_addextendedproperty 'MS_Description', N'Виды анкерных плит опор ЛЭП', 'user', 'dbo', 'Table', 'Справочник_анкерных_плит'
exec sp_addextendedproperty 'MS_Description', N'Уникальный идентификатор вида анкерной плиты', 'user', 'dbo', 'Table', 'Справочник_анкерных_плит', 'Column', 'Код_вида_плиты'
exec sp_addextendedproperty 'MS_Description', N'Наименование анкерной плиты (например, ПА1-1)', 'user', 'dbo', 'Table', 'Справочник_анкерных_плит', 'Column', 'Наименование'
exec sp_addextendedproperty 'MS_Description', N'Масса анкерной плиты в килограммах', 'user', 'dbo', 'Table', 'Справочник_анкерных_плит', 'Column', 'Масса'
exec sp_addextendedproperty 'MS_Description', N'Высота анкерной плиты в метрах', 'user', 'dbo', 'Table', 'Справочник_анкерных_плит', 'Column', 'Высота'
exec sp_addextendedproperty 'MS_Description', N'Длина анкерной плиты в метрах', 'user', 'dbo', 'Table', 'Справочник_анкерных_плит', 'Column', 'Длина'
exec sp_addextendedproperty 'MS_Description', N'Ширина анкерной плиты в метрах', 'user', 'dbo', 'Table', 'Справочник_анкерных_плит', 'Column', 'Ширина'
GO
-- Заполняем справочник анкерных плит опор ЛЭП
SET IDENTITY_INSERT Справочник_анкерных_плит ON
INSERT INTO Справочник_анкерных_плит (Код_вида_плиты, Наименование, Масса, Высота, Длина, Ширина) VALUES (1,'ПА1-1', 500, 0.45, 1, 1)
INSERT INTO Справочник_анкерных_плит (Код_вида_плиты, Наименование, Масса, Высота, Длина, Ширина) VALUES (2,'ПА1-2', 700, 0.45, 1.5, 1)
INSERT INTO Справочник_анкерных_плит (Код_вида_плиты, Наименование, Масса, Высота, Длина, Ширина) VALUES (3,'ПА2-1', 1600, 0.6, 2, 1.5)
INSERT INTO Справочник_анкерных_плит (Код_вида_плиты, Наименование, Масса, Высота, Длина, Ширина) VALUES (4,'ПА2-2', 2200, 0.6, 3, 1.5)
INSERT INTO Справочник_анкерных_плит (Код_вида_плиты, Наименование, Масса, Высота, Длина, Ширина) VALUES (5,'ПА3-1', 2800, 0.6, 3, 2)
INSERT INTO Справочник_анкерных_плит (Код_вида_плиты, Наименование, Масса, Высота, Длина, Ширина) VALUES (6,'ПА3-2', 2800, 0.6, 4, 2)
SET IDENTITY_INSERT Справочник_анкерных_плит OFF
GO
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-- Добавляем справочник ригелей опор ЛЭП
CREATE TABLE Справочник_ригелей (
	Код_вида_ригеля		int IDENTITY(1,1),
	Условное_обозначение	nvarchar(30)	NOT NULL,
	Масса			float		NULL,
	Высота			float		NULL,
	Длина			float		NULL,
	Ширина			float		NULL,
	Скрытое			bit		NULL,
	PRIMARY KEY (Код_вида_ригеля)
 )
GO
exec sp_addextendedproperty 'MS_Description', N'Виды ригелей опор ЛЭП', 'user', 'dbo', 'Table', 'Справочник_ригелей'
exec sp_addextendedproperty 'MS_Description', N'Уникальный идентификатор вида ригеля', 'user', 'dbo', 'Table', 'Справочник_ригелей', 'Column', 'Код_вида_ригеля'
exec sp_addextendedproperty 'MS_Description', N'Наименование ригеля (например, Р1A)', 'user', 'dbo', 'Table', 'Справочник_ригелей', 'Column', 'Условное_обозначение'
exec sp_addextendedproperty 'MS_Description', N'Масса ригеля в килограммах', 'user', 'dbo', 'Table', 'Справочник_ригелей', 'Column', 'Масса'
exec sp_addextendedproperty 'MS_Description', N'Высота ригеля в метрах', 'user', 'dbo', 'Table', 'Справочник_ригелей', 'Column', 'Высота'
exec sp_addextendedproperty 'MS_Description', N'Длина ригеля в метрах', 'user', 'dbo', 'Table', 'Справочник_ригелей', 'Column', 'Длина'
exec sp_addextendedproperty 'MS_Description', N'Ширина ригеля в метрах', 'user', 'dbo', 'Table', 'Справочник_ригелей', 'Column', 'Ширина'
GO
-- Заполняем справочник ригелей опор ЛЭП
SET IDENTITY_INSERT Справочник_ригелей ON
INSERT INTO Справочник_ригелей (Код_вида_ригеля, Условное_обозначение, Масса, Высота, Длина, Ширина) VALUES (1,'Р1', 200, 0.14, 1.5, 0.5)
INSERT INTO Справочник_ригелей (Код_вида_ригеля, Условное_обозначение, Масса, Высота, Длина, Ширина) VALUES (2,'Р1A', 500, 0.2, 3, 0.4)
INSERT INTO Справочник_ригелей (Код_вида_ригеля, Условное_обозначение, Масса, Высота, Длина, Ширина) VALUES (3,'AР5', 500, 0.2, 3, 0.4)
INSERT INTO Справочник_ригелей (Код_вида_ригеля, Условное_обозначение, Масса, Высота, Длина, Ширина) VALUES (4,'AР6', 760, 0.2, 3.5, 0.5)
INSERT INTO Справочник_ригелей (Код_вида_ригеля, Условное_обозначение, Масса, Высота, Длина, Ширина) VALUES (5,'AР7', 230, 0.2, 2, 0.3)
INSERT INTO Справочник_ригелей (Код_вида_ригеля, Условное_обозначение, Масса, Высота, Длина, Ширина) VALUES (6,'AР8', 2600, 0.35, 6, 0.64)
SET IDENTITY_INSERT Справочник_ригелей OFF
GO

-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-- Изменяем справочник видов опор ЛЭП
-- ALTER TABLE Справочник_видов_опор
-- DROP COLUMN Материал_ригеля
-- GO
-- ALTER TABLE Справочник_видов_опор
-- DROP COLUMN Материал
-- GO
ALTER TABLE Справочник_видов_опор ADD 
Код_типа_анкерной_плиты int NULL,
Код_вида_стойки int NULL,
Код_типа_ригеля int NULL,
Код_марки_троса_оттяжек int NULL
GO
ALTER TABLE Справочник_видов_опор
        ADD FOREIGN KEY (Код_типа_анкерной_плиты)
                              REFERENCES Справочник_анкерных_плит
GO
ALTER TABLE Справочник_видов_опор
        ADD FOREIGN KEY (Код_вида_стойки)
                              REFERENCES Справочник_видов_стоек
GO
ALTER TABLE Справочник_видов_опор
        ADD FOREIGN KEY (Код_типа_ригеля)
                              REFERENCES Справочник_ригелей
GO
ALTER TABLE Справочник_видов_опор
	ADD FOREIGN KEY(Код_марки_троса_оттяжек)
		REFERENCES Справочник_марок_тросов(Код_марки_троса)
GO

-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-- Изменяем таблицу 'Опора'
ALTER TABLE Опора ADD 
Код_типа_анкерной_плиты int NULL,
Код_типа_стойки int NULL,
Код_типа_ригеля int NULL,
Количество_оттяжек int NULL,
Количество_фундаментных_стоек int NULL,
Наличие_анкерной_плиты bit NULL
GO
ALTER TABLE Опора
        ADD FOREIGN KEY (Код_типа_анкерной_плиты)
                              REFERENCES Справочник_анкерных_плит
GO
ALTER TABLE Опора
        ADD FOREIGN KEY (Код_типа_стойки)
                              REFERENCES Справочник_видов_стоек
GO
ALTER TABLE Опора
        ADD FOREIGN KEY (Код_типа_ригеля)
                              REFERENCES Справочник_ригелей
GO
-- Установим поле 'Количество_оттяжек' в таблице 'Опора' в значение, равное полю 'Количество_оттяжек' в таблице 'Справочник_видов_опор'
exec('UPDATE Опора SET Количество_оттяжек = (SELECT Количество_оттяжек FROM Справочник_видов_опор WHERE Опора.Код_вида_опоры = Справочник_видов_опор.Код_вида_опоры)')
GO
-- Установим поле 'Количество_фундаментных_стоек' в таблице 'Опора' в значение, равное полю 'Количество_фундаментных_стоек' в таблице 'Справочник_видов_опор'
exec('UPDATE Опора SET Количество_фундаментных_стоек = (SELECT Количество_фундаментных_стоек FROM Справочник_видов_опор WHERE Опора.Количество_фундаментных_стоек = Справочник_видов_опор.Количество_фундаментных_стоек)')
GO

-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-- Добавим 'Справочник анкерных плит', 'Справочник видов стоек', 'Справочник ригелей' в список отображаемых справочников
INSERT INTO Dicts(DictID,Description,TableName,KeyField,DescField) 
VALUES (134,'Типы анкерных плит','Справочник_анкерных_плит','Код_вида_плиты','Наименование')

INSERT INTO Dicts(DictID,Description,TableName,KeyField,DescField) 
VALUES (135,'Типы стоек опор','Справочник_видов_стоек','Код_вида_стойки','Условное_обозначение')

INSERT INTO Dicts(DictID,Description,TableName,KeyField,DescField) 
VALUES (136,'Типы ригелей','Справочник_ригелей','Код_вида_ригеля','Условное_обозначение')
GO

-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-- SET IDENTITY_INSERT Характеристики_полей ON
-- Устанавливаем параметры отображения полей 'справочника анкерных плит'
INSERT INTO Характеристики_полей(Имя_таблицы,Имя_поля,Используемое_поле,Используемая_таблица,Обозначение,Описание,Единица_измерения)
        VALUES ('Справочник_анкерных_плит','Масса',NULL,NULL,'m','Масса','кг')
INSERT INTO Характеристики_полей(Имя_таблицы,Имя_поля,Используемое_поле,Используемая_таблица,Обозначение,Описание,Единица_измерения)
        VALUES ('Справочник_анкерных_плит','Высота',NULL,NULL,'h','Высота','м')
INSERT INTO Характеристики_полей(Имя_таблицы,Имя_поля,Используемое_поле,Используемая_таблица,Обозначение,Описание,Единица_измерения)
        VALUES ('Справочник_анкерных_плит','Длина',NULL,NULL,'L','Длина','м')
INSERT INTO Характеристики_полей(Имя_таблицы,Имя_поля,Используемое_поле,Используемая_таблица,Обозначение,Описание,Единица_измерения)
        VALUES ('Справочник_анкерных_плит','Ширина',NULL,NULL,'W','Ширина','м')

-- Устанавливаем параметры отображения полей 'справочника видов опор'
INSERT INTO Характеристики_полей(Имя_таблицы,Имя_поля,Используемое_поле,Используемая_таблица,Обозначение,Описание,Единица_измерения)
VALUES ('Справочник_видов_опор','Код_типа_анкерной_плиты','Наименование','Справочник_анкерных_плит','Анкерная плита',NULL,NULL)
INSERT INTO Характеристики_полей(Имя_таблицы,Имя_поля,Используемое_поле,Используемая_таблица,Обозначение,Описание,Единица_измерения)
VALUES ('Справочник_видов_опор','Код_вида_стойки','Условное_обозначение','Справочник_видов_стоек','Тип стойки',NULL,NULL)
INSERT INTO Характеристики_полей(Имя_таблицы,Имя_поля,Используемое_поле,Используемая_таблица,Обозначение,Описание,Единица_измерения)
VALUES ('Справочник_видов_опор','Код_типа_ригеля','Условное_обозначение','Справочник_ригелей','Тип ригеля',NULL,NULL)
INSERT INTO Характеристики_полей(Имя_таблицы,Имя_поля,Используемое_поле,Используемая_таблица,Обозначение,Описание,Единица_измерения)
VALUES ('Справочник_видов_опор','Код_марки_троса_оттяжек','Описание','Справочник_марок_тросов','Тип троса оттяжек',NULL,NULL)
-- исправляем багу; Справочник_видов_опор показывал типы из "Справочника типов фундаментов", а нужно из "Справочника фундаментов опор"
INSERT INTO Характеристики_полей(Имя_таблицы,Имя_поля,Используемое_поле,Используемая_таблица,Обозначение,Описание,Единица_измерения)
VALUES ('Справочник_видов_опор','Код_типа_фундамента','Описание','Справочник_фундаментов_опор','Тип фундамента',NULL,NULL)

-- Устанавливаем параметры отображения полей 'справочника ригелей'
INSERT INTO Характеристики_полей(Имя_таблицы,Имя_поля,Используемое_поле,Используемая_таблица,Обозначение,Описание,Единица_измерения)
        VALUES ('Справочник_ригелей','Масса',NULL,NULL,'m','Масса','кг')
INSERT INTO Характеристики_полей(Имя_таблицы,Имя_поля,Используемое_поле,Используемая_таблица,Обозначение,Описание,Единица_измерения)
        VALUES ('Справочник_ригелей','Высота',NULL,NULL,'h','Высота','м')
INSERT INTO Характеристики_полей(Имя_таблицы,Имя_поля,Используемое_поле,Используемая_таблица,Обозначение,Описание,Единица_измерения)
        VALUES ('Справочник_ригелей','Длина',NULL,NULL,'L','Длина','м')
INSERT INTO Характеристики_полей(Имя_таблицы,Имя_поля,Используемое_поле,Используемая_таблица,Обозначение,Описание,Единица_измерения)
        VALUES ('Справочник_ригелей','Ширина',NULL,NULL,'W','Ширина','м')

-- SET IDENTITY_INSERT Характеристики_полей OFF