You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.9 KiB
119 lines
3.9 KiB
|
1 month ago
|
-- ==========================================================
|
||
|
|
-- 양산형 테스트 기기 모니터링 시스템 MSSQL 2012 DB 구성 스크립트
|
||
|
|
-- 작성일: 2026-06-22
|
||
|
|
-- 호환 버전: Microsoft SQL Server 2012 이상
|
||
|
|
-- ==========================================================
|
||
|
|
|
||
|
|
USE [master];
|
||
|
|
GO
|
||
|
|
|
||
|
|
-- 데이터베이스 생성 (존재하지 않을 경우에만 생성)
|
||
|
|
IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = N'MarkingDb')
|
||
|
|
BEGIN
|
||
|
|
CREATE DATABASE [MarkingDb];
|
||
|
|
END
|
||
|
|
GO
|
||
|
|
|
||
|
|
USE [MarkingDb];
|
||
|
|
GO
|
||
|
|
|
||
|
|
-- ==========================================
|
||
|
|
-- 1. [Users] 테이블 생성 (작업자 정보 및 비밀번호 관리)
|
||
|
|
-- ==========================================
|
||
|
|
IF OBJECT_ID(N'[dbo].[Users]', N'U') IS NULL
|
||
|
|
BEGIN
|
||
|
|
CREATE TABLE [dbo].[Users] (
|
||
|
|
[Id] INT IDENTITY(1,1) NOT NULL,
|
||
|
|
[OperatorId] VARCHAR(50) NOT NULL,
|
||
|
|
[Password] VARCHAR(50) NOT NULL,
|
||
|
|
[Name] NVARCHAR(50) NULL,
|
||
|
|
[IsActive] BIT DEFAULT 1 NOT NULL,
|
||
|
|
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED ([Id] ASC),
|
||
|
|
CONSTRAINT [UQ_Users_OperatorId] UNIQUE ([OperatorId])
|
||
|
|
);
|
||
|
|
END
|
||
|
|
GO
|
||
|
|
|
||
|
|
-- 기본 테스트 계정 데이터 적재
|
||
|
|
IF NOT EXISTS (SELECT 1 FROM [dbo].[Users] WHERE [OperatorId] = 'test')
|
||
|
|
BEGIN
|
||
|
|
INSERT INTO [dbo].[Users] ([OperatorId], [Password], [Name], [IsActive])
|
||
|
|
VALUES ('test', 'test', '테스트작업자', 1);
|
||
|
|
END
|
||
|
|
GO
|
||
|
|
|
||
|
|
IF NOT EXISTS (SELECT 1 FROM [dbo].[Users] WHERE [OperatorId] = 'admin')
|
||
|
|
BEGIN
|
||
|
|
INSERT INTO [dbo].[Users] ([OperatorId], [Password], [Name], [IsActive])
|
||
|
|
VALUES ('admin', 'admin', '시스템관리자', 1);
|
||
|
|
END
|
||
|
|
GO
|
||
|
|
|
||
|
|
IF NOT EXISTS (SELECT 1 FROM [dbo].[Users] WHERE [OperatorId] = 'su')
|
||
|
|
BEGIN
|
||
|
|
INSERT INTO [dbo].[Users] ([OperatorId], [Password], [Name], [IsActive])
|
||
|
|
VALUES ('su', 'su', '최고권한자', 1);
|
||
|
|
END
|
||
|
|
GO
|
||
|
|
|
||
|
|
|
||
|
|
-- ==========================================
|
||
|
|
-- 2. [Marking] 테이블 생성 (성능 측정 결과 적재)
|
||
|
|
-- ==========================================
|
||
|
|
IF OBJECT_ID(N'[dbo].[Marking]', N'U') IS NULL
|
||
|
|
BEGIN
|
||
|
|
CREATE TABLE [dbo].[Marking] (
|
||
|
|
[IC_SN] VARCHAR(50) NOT NULL,
|
||
|
|
[Marking_QR] NVARCHAR(100) NOT NULL,
|
||
|
|
[Maker] NVARCHAR(10) NOT NULL,
|
||
|
|
[Model] NVARCHAR(10) NOT NULL,
|
||
|
|
[Variant_1] NVARCHAR(10) NOT NULL,
|
||
|
|
[Variant_2] NVARCHAR(10) NOT NULL,
|
||
|
|
[Operator] NVARCHAR(10) NOT NULL,
|
||
|
|
[Production_Date] DATETIME2(0) NOT NULL,
|
||
|
2 weeks ago
|
[Line] NVARCHAR(10) NOT NULL,
|
||
|
1 month ago
|
[Lot_No] NVARCHAR(8) NOT NULL,
|
||
|
|
[Jig_No] NVARCHAR(10) NOT NULL,
|
||
|
2 weeks ago
|
[PT_Vol_1] DECIMAL(4, 2) NOT NULL,
|
||
|
|
[PT_Current_1] DECIMAL(4, 2) NOT NULL,
|
||
|
|
[PT_Resistance_1] DECIMAL(5, 3) NOT NULL,
|
||
|
1 month ago
|
[Result] NVARCHAR(5) NOT NULL,
|
||
|
|
[Spare_1] NVARCHAR(30) NULL,
|
||
|
|
[Spare_2] NVARCHAR(30) NULL,
|
||
|
|
[Spare_3] NVARCHAR(30) NULL,
|
||
|
|
[Spare_4] NVARCHAR(30) NULL,
|
||
|
|
CONSTRAINT [PK_Marking] PRIMARY KEY CLUSTERED ([IC_SN] ASC),
|
||
|
|
CONSTRAINT [UQ_Marking_Marking_QR] UNIQUE ([Marking_QR])
|
||
|
|
);
|
||
|
|
|
||
|
|
-- 시리얼 번호(IC_SN) 조회용 인덱스는 클러스터드 기본키로 지정되었으므로 생략 또는 추가 필요 시 생성
|
||
|
|
END
|
||
|
|
GO
|
||
|
|
|
||
|
|
|
||
|
|
-- ==========================================
|
||
|
|
-- 3. [CheckOperator] 로그인 검증용 저장 프로시저 생성
|
||
|
|
-- ==========================================
|
||
|
|
IF OBJECT_ID(N'[dbo].[CheckOperator]', N'P') IS NOT NULL
|
||
|
|
BEGIN
|
||
|
|
DROP PROCEDURE [dbo].[CheckOperator];
|
||
|
|
END
|
||
|
|
GO
|
||
|
|
|
||
|
|
CREATE PROCEDURE [dbo].[CheckOperator]
|
||
|
|
@Operator VARCHAR(50),
|
||
|
|
@Password VARCHAR(50),
|
||
|
|
@ProcessName VARCHAR(50) = NULL
|
||
|
|
AS
|
||
|
|
BEGIN
|
||
|
|
SET NOCOUNT ON;
|
||
|
|
|
||
|
|
-- 대소문자 구분 없이 입력 ID와 비밀번호 매칭 여부를 카운트(0 또는 1)로 리턴
|
||
|
|
SELECT COUNT(*)
|
||
|
|
FROM [dbo].[Users]
|
||
|
|
WHERE UPPER([OperatorId]) = UPPER(@Operator)
|
||
|
|
AND [Password] = @Password
|
||
|
|
AND [IsActive] = 1;
|
||
|
|
END;
|
||
|
|
GO
|