C#과 SQL Server를 활용한 데이터베이스 구축 및 연동
1. 서론
최근 제조업체들은 효율성과 생산성을 높이기 위해 스마트 팩토리 및 MES(Manufacturing Execution System) 솔루션을 도입하고 있습니다. 본 글에서는 C#과 SQL Server를 기반으로 한 생산 관리 데이터베이스의 설계 및 구축 과정을 상세히 설명합니다. C# 언어의 강력한 기능과 SQL Server의 데이터베이스 관리 시스템으로 신뢰성 높은 MES 시스템을 구축할 수 있습니다.
2. 데이터베이스 설계
2.1. 요구사항 분석
데이터베이스 설계는 첫 단계에서 시스템의 요구사항을 명확히 분석하는 것입니다. 생산 관리 시스템은 작업자, 기계, 생산 데이터, 재고 등의 정보를 처리해야 합니다. 다음은 고려해야 할 주요 요소입니다.
- 작업자 정보: 이름, 직원 번호, 역할
- 기계 정보: 기계 ID, 모델, 상태, 유지보수 이력
- 생산 데이터: 생산량, 생산 시간, 불량률
- 재고 관리: 자재 ID, 자재명, 재고량, 위치
2.2. 개념적 데이터 모델
요구사항 분석 후, ERD(Entity-Relationship Diagram)를 작성해 데이터 간의 관계를 시각화합니다. 예를 들어, 작업자는 특정 기계를 운전하며, 기계는 생산 데이터를 생성합니다. 재고는 생산 데이터를 기반으로 관리됩니다. 다음은 주요 엔티티와 그 관계입니다:
- Worker (작업자)
- Machine (기계)
- ProductionData (생산 데이터)
- Inventory (재고)
2.3. 논리적 설계
논리적 데이터 모델을 기반으로 각 테이블의 구조를 설계합니다. 예를 들어, Worker 테이블은 다음과 같이 정의될 수 있습니다.
CREATE TABLE Worker ( WorkerID INT PRIMARY KEY, Name NVARCHAR(100), EmployeeNumber NVARCHAR(50), Role NVARCHAR(50) );
Machine, ProductionData, Inventory 테이블도 유사한 방식으로 정의됩니다. 이 때 외래 키(Foreign Key)를 사용하여 테이블 간의 관계를 설정합니다.
3. C#과 SQL Server를 이용한 데이터베이스 구축
3.1. SQL Server 설치 및 데이터베이스 생성
SQL Server는 Microsoft의 관계형 데이터베이스 관리 시스템으로, 먼저 SQL Server를 설치한 후 새로운 데이터베이스를 생성합니다. SQL Server Management Studio(SSMS)를 사용하여 아래와 같은 명령어로 데이터베이스를 생성할 수 있습니다.
CREATE DATABASE ProductionManagement; GO
3.2. C# 프로젝트 설정
Visual Studio에서 새로운 C# 프로젝트를 생성하고, 필요 시 NuGet 패키지를 통해 `System.Data.SqlClient` 패키지를 설치합니다. 이 패키지는 C#이 SQL Server와 상호 작용할 수 있도록 도와줍니다.
3.3. 데이터베이스 연결
SQL Server에 연결하기 위해, connection string을 설정하고 SqlConnection 객체를 사용하여 데이터베이스에 연결합니다. 아래는 데이터베이스 연결 예제 코드입니다.
using (SqlConnection conn = new SqlConnection("Server=your_server;Database=ProductionManagement;User Id=your_user;Password=your_password;")) { conn.Open(); // 데이터베이스 작업 수행 }
4. 데이터베이스 CRUD 기능 구현
4.1. 데이터 삽입(Create)
새로운 작업자 정보를 데이터베이스에 삽입하기 위해 SqlCommand를 사용합니다. 아래는 작업자를 추가하는 예제 코드입니다.
string insertQuery = "INSERT INTO Worker (Name, EmployeeNumber, Role) VALUES (@Name, @EmployeeNumber, @Role)"; using (SqlCommand cmd = new SqlCommand(insertQuery, conn)) { cmd.Parameters.AddWithValue("@Name", name); cmd.Parameters.AddWithValue("@EmployeeNumber", employeeNumber); cmd.Parameters.AddWithValue("@Role", role); cmd.ExecuteNonQuery(); }
4.2. 데이터 조회(Read)
데이터베이스에서 작업자 정보를 조회하는 방법은 다음과 같습니다. SqlDataReader를 사용하여 결과를 읽어옵니다.
string selectQuery = "SELECT * FROM Worker"; using (SqlCommand cmd = new SqlCommand(selectQuery, conn)) { using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { Console.WriteLine("Name: " + reader["Name"].ToString()); } } }
4.3. 데이터 수정(Update)
특정 작업자 정보를 수정하는 방법은 다음과 같습니다. 작업자의 ID를 기준으로 데이터를 업데이트합니다.
string updateQuery = "UPDATE Worker SET Name = @Name WHERE WorkerID = @WorkerID"; using (SqlCommand cmd = new SqlCommand(updateQuery, conn)) { cmd.Parameters.AddWithValue("@WorkerID", workerId); cmd.Parameters.AddWithValue("@Name", newName); cmd.ExecuteNonQuery(); }
4.4. 데이터 삭제(Delete)
사용자가 더 이상 필요하지 않은 작업자 정보를 삭제하는 코드 예제입니다.
string deleteQuery = "DELETE FROM Worker WHERE WorkerID = @WorkerID"; using (SqlCommand cmd = new SqlCommand(deleteQuery, conn)) { cmd.Parameters.AddWithValue("@WorkerID", workerId); cmd.ExecuteNonQuery(); }
5. 데이터베이스와의 연동 테스트
데이터베이스 CRUD 기능이 정상적으로 작동하는지 확인하기 위해, 단위 테스트를 실시합니다. 각 기능을 테스트한 후 결과를 기록하여, 시스템 전체의 신뢰성을 검증합니다.
6. 결론
C# 및 SQL Server를 이용한 생산 관리 데이터베이스 구축은 복잡한 제조 프로세스를 효율적으로 관리하는 기초가 됩니다. 본 포스트에서는 데이터베이스 설계, 구축, CRUD 기능 구현 등의 과정에 대해 설명하였습니다. 이러한 시스템을 통해 제조업체는 데이터 기반의 결정을 내릴 수 있으며, 생산 효율성을 극대화할 수 있습니다.