курсач / Наволоцкий_1302_v2
.pdf); GO
USE CircuitDB;
GO
/* =============================================
2. СОЗДАНИЕ СХЕМ (LOGICAL SEPARATION) Ref - Справочные данные (Reference)
Stock - Складские данные (Components)
============================================= */
PRINT 'Создание схем Ref и Stock... ' + CONVERT(VARCHAR(30), GETDATE(), 120);
GO
CREATE SCHEMA [Ref] AUTHORIZATION [dbo];
GO
CREATE SCHEMA [Stock] AUTHORIZATION [dbo];
GO
/* =============================================
3. СОЗДАНИЕ СПРАВОЧНИКОВ (Схема Ref)
============================================= */ PRINT 'Создание таблиц справочников... ' + CONVERT(VARCHAR(30), GETDATE(), 120);
GO
-- Производители
61
CREATE TABLE [Ref].[Manufacturers] (
ManufacturerID INT IDENTITY(1,1) NOT NULL,
Name NVARCHAR(100) NOT NULL,
Website NVARCHAR(255) NULL,
CONSTRAINT PK_Manufacturers PRIMARY KEY (ManufacturerID)
);
-- Категории
CREATE TABLE [Ref].[Categories] (
CategoryID INT IDENTITY(1,1) NOT NULL,
Name NVARCHAR(100) NOT NULL,
Description NVARCHAR(500) NULL,
CONSTRAINT PK_Categories PRIMARY KEY (CategoryID)
);
-- Типы корпусов
CREATE TABLE [Ref].[PackageTypes] (
PackageID INT IDENTITY(1,1) NOT NULL,
Name NVARCHAR(50) NOT NULL,
MountType NVARCHAR(50) NOT NULL,
CONSTRAINT PK_PackageTypes PRIMARY KEY (PackageID)
);
-- Типы симуляции
CREATE TABLE [Ref].[SimulationTypes] (
SimTypeID INT IDENTITY(1,1) NOT NULL,
Name NVARCHAR(50) NOT NULL,
Engine NVARCHAR(50) NULL,
CONSTRAINT PK_SimulationTypes PRIMARY KEY (SimTypeID)
62
); GO
/* =============================================
4. СОЗДАНИЕ ОСНОВНЫХ ТАБЛИЦ (Схема Stock)
============================================= */ PRINT 'Создание таблиц данных (Components)... ' + CONVERT(VARCHAR(30), GETDATE(), 120);
GO
CREATE TABLE [Stock].[Components] (
ComponentID INT IDENTITY(1,1) NOT NULL,
PartNumber NVARCHAR(100) NOT NULL,
-- Ссылки на справочники из схемы Ref
ManufacturerID INT NOT NULL,
CategoryID INT NOT NULL,
PackageID INT NOT NULL,
Description NVARCHAR(1000) NULL,
IsActive BIT DEFAULT 1 NOT NULL,
CONSTRAINT PK_Components PRIMARY KEY (ComponentID),
-- FK Constraints с указанием схемы
CONSTRAINT FK_Components_Manufacturers FOREIGN KEY (ManufacturerID)
REFERENCES [Ref].[Manufacturers] (ManufacturerID),
63
CONSTRAINT FK_Components_Categories FOREIGN KEY (CategoryID)
REFERENCES [Ref].[Categories] (CategoryID),
CONSTRAINT FK_Components_PackageTypes FOREIGN KEY (PackageID)
REFERENCES [Ref].[PackageTypes] (PackageID)
); GO
/* =============================================
5. СОЗДАНИЕ ДЕТАЛИЗАЦИИ (Схема Stock)
============================================= */ PRINT 'Создание таблиц параметров и моделей... ' + CONVERT(VARCHAR(30), GETDATE(), 120);
GO
-- Параметры
CREATE TABLE [Stock].[ComponentParams] (
ParamID INT IDENTITY(1,1) NOT NULL,
ComponentID INT NOT NULL,
ParamName NVARCHAR(100) NOT NULL,
ParamValue NVARCHAR(100) NOT NULL,
Unit NVARCHAR(20) NULL,
CONSTRAINT PK_ComponentParams PRIMARY KEY (ParamID),
CONSTRAINT FK_ComponentParams_Components FOREIGN KEY (ComponentID)
64
REFERENCES [Stock].[Components] (ComponentID)
ON DELETE CASCADE
);
-- Модели
CREATE TABLE [Stock].[ComponentModels] (
ModelID INT IDENTITY(1,1) NOT NULL,
ComponentID INT NOT NULL,
SimTypeID INT NOT NULL, -- Ссылка на Ref
ModelCode NVARCHAR(MAX) NULL,
FilePath NVARCHAR(255) NULL,
CONSTRAINT PK_ComponentModels PRIMARY KEY (ModelID),
CONSTRAINT FK_ComponentModels_Components FOREIGN KEY (ComponentID)
REFERENCES [Stock].[Components] (ComponentID)
ON DELETE CASCADE,
CONSTRAINT FK_ComponentModels_SimulationTypes FOREIGN
KEY (SimTypeID)
REFERENCES [Ref].[SimulationTypes] (SimTypeID)
); GO
PRINT '=========================================================== ==';
PRINT 'Скрипт 01 выполнен успешно.';
65
PRINT 'Время завершения: ' + CONVERT(VARCHAR(30), GETDATE(),
120);
'===========================================================
==';
GO
66
02_InsertData.sql
/*
============================================================
=====================
СКРИПТ 02: НАПОЛНЕНИЕ ДАННЫМИ (INSERT DATA)
Логика: Загрузка справочников (Ref) и данных (Stock)
Объем: Расширенный набор данных (20+ компонентов) для демонстрации отчетов
============================================================
===================== */
USE CircuitDB;
GO
PRINT '=========================================================== ==';
PRINT 'Начало наполнения базы данными.';
PRINT 'Время запуска: ' + CONVERT(VARCHAR(30), GETDATE(), 120);
PRINT '=========================================================== ==';
GO
/* =============================================
1. ОЧИСТКА ТАБЛИЦ (CLEANUP)
============================================= */
67
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);
68
-- Включаем ограничения
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. Категории
69
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
70
