Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

курсач / 02_InsertData

.sql
Скачиваний:
0
Добавлен:
27.12.2025
Размер:
12.68 Кб
Скачать
/* =================================================================================
СКРИПТ 02: НАПОЛНЕНИЕ ДАННЫМИ (INSERT DATA)
Логика: Загрузка справочников (Ref) и данных (Stock)
Объем: Расширенный набор данных (20+ компонентов) для демонстрации отчетов
================================================================================= */

USE CircuitDB;
GO

PRINT '=============================================================';
PRINT 'Начало наполнения базы данными.';
PRINT 'Время запуска: ' + CONVERT(VARCHAR(30), GETDATE(), 120);
PRINT '=============================================================';
GO

/* =============================================
1. ОЧИСТКА ТАБЛИЦ (CLEANUP)
============================================= */
PRINT 'Очистка старых данных... ' + CONVERT(VARCHAR(30), GETDATE(), 120);
GO

-- Отключаем ограничения
ALTER TABLE [Stock].[ComponentModels] NOCHECK CONSTRAINT ALL;
ALTER TABLE [Stock].[ComponentParams] NOCHECK CONSTRAINT ALL;
ALTER TABLE [Stock].[Components] NOCHECK CONSTRAINT ALL;

-- Удаляем данные
DELETE FROM [Stock].[ComponentModels];
DELETE FROM [Stock].[ComponentParams];
DELETE FROM [Stock].[Components];

DELETE FROM [Ref].[SimulationTypes];
DELETE FROM [Ref].[PackageTypes];
DELETE FROM [Ref].[Categories];
DELETE FROM [Ref].[Manufacturers];

-- Сброс счетчиков ID
DBCC CHECKIDENT ('[Stock].ComponentModels', RESEED, 0);
DBCC CHECKIDENT ('[Stock].ComponentParams', RESEED, 0);
DBCC CHECKIDENT ('[Stock].Components', RESEED, 0);
DBCC CHECKIDENT ('[Ref].SimulationTypes', RESEED, 0);
DBCC CHECKIDENT ('[Ref].PackageTypes', RESEED, 0);
DBCC CHECKIDENT ('[Ref].Categories', RESEED, 0);
DBCC CHECKIDENT ('[Ref].Manufacturers', RESEED, 0);

-- Включаем ограничения
ALTER TABLE [Stock].[ComponentModels] WITH CHECK CHECK CONSTRAINT ALL;
ALTER TABLE [Stock].[ComponentParams] WITH CHECK CHECK CONSTRAINT ALL;
ALTER TABLE [Stock].[Components] WITH CHECK CHECK CONSTRAINT ALL;
GO

/* =============================================
2. ЗАПОЛНЕНИЕ СПРАВОЧНИКОВ (Схема Ref)
============================================= */
PRINT 'Заполнение справочников (Schema Ref)... ' + CONVERT(VARCHAR(30), GETDATE(), 120);
GO

-- 2.1. Производители
INSERT INTO [Ref].[Manufacturers] (Name, Website) VALUES
(N'Texas Instruments', N'https://www.ti.com'),
(N'Vishay', N'https://www.vishay.com'),
(N'Microchip Technology', N'https://www.microchip.com'),
(N'Analog Devices', N'https://www.analog.com'),
(N'STMicroelectronics', N'https://www.st.com'),
(N'NXP Semiconductors', N'https://www.nxp.com'),
(N'Murata', N'https://www.murata.com'),
(N'ON Semiconductor', N'https://www.onsemi.com');

-- 2.2. Категории
INSERT INTO [Ref].[Categories] (Name, Description) VALUES
(N'Операционные усилители', N'Аналоговые усилители'),
(N'Резисторы', N'Пассивные компоненты'),
(N'Микроконтроллеры', N'Программируемые ИС'),
(N'Конденсаторы', N'Накопители заряда'),
(N'Транзисторы', N'Биполярные и полевые транзисторы'),
(N'Диоды', N'Полупроводниковые диоды'),
(N'Стабилизаторы', N'LDO и DC-DC преобразователи');

-- 2.3. Корпуса
INSERT INTO [Ref].[PackageTypes] (Name, MountType) VALUES
(N'DIP-8', N'THT'),
(N'SOIC-8', N'SMD'),
(N'0603', N'SMD'),
(N'TQFP-32', N'SMD'),
(N'SOT-23', N'SMD'),
(N'TO-220', N'THT'),
(N'0805', N'SMD'),
(N'LQFP-48', N'SMD'),
(N'SMA', N'SMD'),
(N'SOT-223', N'SMD'),
(N'SOD-123', N'SMD');

-- 2.4. Типы симуляции
INSERT INTO [Ref].[SimulationTypes] (Name, Engine) VALUES
(N'SPICE', N'LTSpice'),
(N'IBIS', N'Signal Integrity');
GO

/* =============================================
3. ЗАПОЛНЕНИЕ КОМПОНЕНТОВ (Схема Stock)
ЧАСТЬ А: Детальное добавление через переменные
============================================= */
PRINT 'Добавление базовых компонентов... ' + CONVERT(VARCHAR(30), GETDATE(), 120);
GO

DECLARE @ManufID int, @CatID int, @PackID int, @CompID int, @SimID int;

-- --- 1. LM358 ---
SELECT @ManufID = ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = N'Texas Instruments';
SELECT @CatID = CategoryID FROM [Ref].[Categories] WHERE Name = N'Операционные усилители';
SELECT @PackID = PackageID FROM [Ref].[PackageTypes] WHERE Name = N'DIP-8';

INSERT INTO [Stock].[Components] (PartNumber, ManufacturerID, CategoryID, PackageID, Description, IsActive)
VALUES (N'LM358P', @ManufID, @CatID, @PackID, N'Двухканальный ОУ', 1);
SET @CompID = SCOPE_IDENTITY();

INSERT INTO [Stock].[ComponentParams] (ComponentID, ParamName, ParamValue, Unit) VALUES
(@CompID, N'Channels', N'2', N'pcs'),
(@CompID, N'Vcc Max', N'32', N'V');

SELECT @SimID = SimTypeID FROM [Ref].[SimulationTypes] WHERE Name = N'SPICE';
INSERT INTO [Stock].[ComponentModels] (ComponentID, SimTypeID, ModelCode) VALUES
(@CompID, @SimID, N'.SUBCKT LM358 ... end');


-- --- 2. NE555 ---
SELECT @PackID = PackageID FROM [Ref].[PackageTypes] WHERE Name = N'SOIC-8';

INSERT INTO [Stock].[Components] (PartNumber, ManufacturerID, CategoryID, PackageID, Description, IsActive)
VALUES (N'NE555D', @ManufID, @CatID, @PackID, N'Легендарный таймер', 1);
SET @CompID = SCOPE_IDENTITY();

INSERT INTO [Stock].[ComponentParams] (ComponentID, ParamName, ParamValue, Unit) VALUES
(@CompID, N'Frequency', N'500', N'kHz');


-- --- 3. Resistor ---
SELECT @ManufID = ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = N'Vishay';
SELECT @CatID = CategoryID FROM [Ref].[Categories] WHERE Name = N'Резисторы';
SELECT @PackID = PackageID FROM [Ref].[PackageTypes] WHERE Name = N'0603';

INSERT INTO [Stock].[Components] (PartNumber, ManufacturerID, CategoryID, PackageID, Description, IsActive)
VALUES (N'CRCW0603', @ManufID, @CatID, @PackID, N'Резистор 10кОм 1%', 1);
SET @CompID = SCOPE_IDENTITY();

INSERT INTO [Stock].[ComponentParams] (ComponentID, ParamName, ParamValue, Unit) VALUES
(@CompID, N'Resistance', N'10', N'kOhm');


-- --- 4. ATmega328 ---
SELECT @ManufID = ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = N'Microchip Technology';
SELECT @CatID = CategoryID FROM [Ref].[Categories] WHERE Name = N'Микроконтроллеры';
SELECT @PackID = PackageID FROM [Ref].[PackageTypes] WHERE Name = N'TQFP-32';

INSERT INTO [Stock].[Components] (PartNumber, ManufacturerID, CategoryID, PackageID, Description, IsActive)
VALUES (N'ATmega328P-AU', @ManufID, @CatID, @PackID, N'Микроконтроллер AVR 8-bit', 1);
SET @CompID = SCOPE_IDENTITY();

INSERT INTO [Stock].[ComponentParams] (ComponentID, ParamName, ParamValue, Unit) VALUES
(@CompID, N'Flash', N'32', N'KB'),
(@CompID, N'Clock', N'20', N'MHz');

SELECT @SimID = SimTypeID FROM [Ref].[SimulationTypes] WHERE Name = N'IBIS';
INSERT INTO [Stock].[ComponentModels] (ComponentID, SimTypeID, FilePath) VALUES
(@CompID, @SimID, N'C:\Libs\atmega328.ibs');
GO

/* =============================================
ЧАСТЬ Б: МАССОВАЯ ВСТАВКА (BULK INSERT)
Для наполнения базы "объемом"
============================================= */
PRINT 'Добавление расширенного набора данных... ' + CONVERT(VARCHAR(30), GETDATE(), 120);
GO

INSERT INTO [Stock].[Components] (PartNumber, ManufacturerID, CategoryID, PackageID, Description, IsActive)
VALUES
-- --- Микроконтроллеры ---
(N'STM32F103C8T6',
(SELECT ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = 'STMicroelectronics'),
(SELECT CategoryID FROM [Ref].[Categories] WHERE Name = 'Микроконтроллеры'),
(SELECT PackageID FROM [Ref].[PackageTypes] WHERE Name = 'LQFP-48'),
N'Популярный ARM Cortex-M3 MCU', 1),

(N'STM32F407VGT6',
(SELECT ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = 'STMicroelectronics'),
(SELECT CategoryID FROM [Ref].[Categories] WHERE Name = 'Микроконтроллеры'),
(SELECT PackageID FROM [Ref].[PackageTypes] WHERE Name = 'LQFP-48'),
N'Высокопроизводительный DSP MCU', 1),

(N'LPC1768',
(SELECT ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = 'NXP Semiconductors'),
(SELECT CategoryID FROM [Ref].[Categories] WHERE Name = 'Микроконтроллеры'),
(SELECT PackageID FROM [Ref].[PackageTypes] WHERE Name = 'LQFP-48'),
N'Cortex-M3 100MHz', 0),

-- --- Операционные усилители ---
(N'AD8605ARTZ',
(SELECT ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = 'Analog Devices'),
(SELECT CategoryID FROM [Ref].[Categories] WHERE Name = 'Операционные усилители'),
(SELECT PackageID FROM [Ref].[PackageTypes] WHERE Name = 'SOT-23'),
N'Precision Low Noise OpAmp', 1),

(N'OP07CP',
(SELECT ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = 'Texas Instruments'),
(SELECT CategoryID FROM [Ref].[Categories] WHERE Name = 'Операционные усилители'),
(SELECT PackageID FROM [Ref].[PackageTypes] WHERE Name = 'DIP-8'),
N'Ultra-Low Offset Voltage', 1),

-- --- Транзисторы ---
(N'BC847',
(SELECT ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = 'NXP Semiconductors'),
(SELECT CategoryID FROM [Ref].[Categories] WHERE Name = 'Транзисторы'),
(SELECT PackageID FROM [Ref].[PackageTypes] WHERE Name = 'SOT-23'),
N'NPN General Purpose', 1),

(N'2N7002',
(SELECT ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = 'Vishay'),
(SELECT CategoryID FROM [Ref].[Categories] WHERE Name = 'Транзисторы'),
(SELECT PackageID FROM [Ref].[PackageTypes] WHERE Name = 'SOT-23'),
N'N-Channel MOSFET 60V', 1),

(N'IRFZ44N',
(SELECT ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = 'Vishay'),
(SELECT CategoryID FROM [Ref].[Categories] WHERE Name = 'Транзисторы'),
(SELECT PackageID FROM [Ref].[PackageTypes] WHERE Name = 'TO-220'),
N'Power MOSFET 55V 49A', 1),

-- --- Конденсаторы ---
(N'GRM188R61A106K',
(SELECT ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = 'Murata'),
(SELECT CategoryID FROM [Ref].[Categories] WHERE Name = 'Конденсаторы'),
(SELECT PackageID FROM [Ref].[PackageTypes] WHERE Name = '0603'),
N'Ceramic Cap 10uF 10V', 1),

(N'CC0805KRX7R9BB104',
(SELECT ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = 'Vishay'),
(SELECT CategoryID FROM [Ref].[Categories] WHERE Name = 'Конденсаторы'),
(SELECT PackageID FROM [Ref].[PackageTypes] WHERE Name = '0805'),
N'Ceramic Cap 100nF 50V', 1),

-- --- Диоды ---
(N'1N4148W',
(SELECT ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = 'Vishay'),
(SELECT CategoryID FROM [Ref].[Categories] WHERE Name = 'Диоды'),
(SELECT PackageID FROM [Ref].[PackageTypes] WHERE Name = 'SOD-123'),
N'Switching Diode', 1),

(N'M7',
(SELECT ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = 'Microchip Technology'),
(SELECT CategoryID FROM [Ref].[Categories] WHERE Name = 'Диоды'),
(SELECT PackageID FROM [Ref].[PackageTypes] WHERE Name = 'SMA'),
N'SMD версия 1N4007 1000V', 1),

-- --- Стабилизаторы ---
(N'LM7805',
(SELECT ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = 'STMicroelectronics'),
(SELECT CategoryID FROM [Ref].[Categories] WHERE Name = 'Стабилизаторы'),
(SELECT PackageID FROM [Ref].[PackageTypes] WHERE Name = 'TO-220'),
N'Linear Regulator 5V 1A', 1),

(N'AMS1117-3.3',
(SELECT ManufacturerID FROM [Ref].[Manufacturers] WHERE Name = 'Analog Devices'),
(SELECT CategoryID FROM [Ref].[Categories] WHERE Name = 'Стабилизаторы'),
(SELECT PackageID FROM [Ref].[PackageTypes] WHERE Name = 'SOT-223'),
N'LDO 3.3V 800mA', 1);
GO

/* =============================================
ЧАСТЬ В: ПАРАМЕТРЫ ДЛЯ МАССОВЫХ ДАННЫХ
============================================= */
INSERT INTO [Stock].[ComponentParams] (ComponentID, ParamName, ParamValue, Unit)
SELECT ComponentID, 'Flash', '64', 'KB' FROM [Stock].[Components] WHERE PartNumber = 'STM32F103C8T6';

INSERT INTO [Stock].[ComponentParams] (ComponentID, ParamName, ParamValue, Unit)
SELECT ComponentID, 'Core', 'Cortex-M3', '' FROM [Stock].[Components] WHERE PartNumber = 'STM32F103C8T6';

INSERT INTO [Stock].[ComponentParams] (ComponentID, ParamName, ParamValue, Unit)
SELECT ComponentID, 'Capacitance', '10', 'uF' FROM [Stock].[Components] WHERE PartNumber = 'GRM188R61A106K';

INSERT INTO [Stock].[ComponentParams] (ComponentID, ParamName, ParamValue, Unit)
SELECT ComponentID, 'Vds', '60', 'V' FROM [Stock].[Components] WHERE PartNumber = '2N7002';

INSERT INTO [Stock].[ComponentParams] (ComponentID, ParamName, ParamValue, Unit)
SELECT ComponentID, 'Output', '5', 'V' FROM [Stock].[Components] WHERE PartNumber = 'LM7805';
GO

PRINT '=============================================================';
PRINT 'Скрипт 02 выполнен успешно. Данные загружены.';
PRINT 'Время завершения: ' + CONVERT(VARCHAR(30), GETDATE(), 120);
PRINT '=============================================================';
GO
Соседние файлы в папке курсач