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

курсач / 02_InsertData

.sql
Скачиваний:
0
Добавлен:
27.12.2025
Размер:
13 Кб
Скачать
/* =================================================================================
   СКРИПТ 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
Соседние файлы в папке курсач