1. [Database] 데이터와 데이터베이스 핵심 개념 정리
01. 데이터의 정의 및 분류
데이터(Data)는 현실 세계에서 관찰하거나 측정하여 수집한 객관적인 사실이나 값 그 자체를 의미함. 이를 특성에 따라 다양하게 분류할 수 있음.
형태에 따른 분류
- 정량적 데이터(Quantitative Data): 수치로 표현 가능한 데이터 (예: 온도, 몸무게, 가격).
- 정성적 데이터(Qualitative Data): 수치가 아닌 문자로 표현되는 데이터 (예: 기상특보, 고객의 소리).
구조에 따른 분류
- 정형 데이터(Structured Data): 고정된 틀(Schema)에 저장된 데이터 (예: RDBMS 테이블, 엑셀 시트).
- 반정형 데이터(Semi-Structured Data): 구조는 있으나 스키마가 유연한 데이터 (예: JSON, XML, HTML).
- 비정형 데이터(Unstructured Data): 정해진 구조가 없는 데이터 (예: 동영상, 이미지, 텍스트 문서).
02. DIKW 피라미드
데이터가 가치를 가지는 정보로 발전하는 과정을 4단계 계층 구조로 설명함.
- 데이터(Data): 가공되지 않은 순수한 사실 (예: A마트 100원, B마트 200원).
- 정보(Information): 데이터 간의 관계를 파악하여 의미를 부여한 것 (예: A마트가 B마트보다 싸다).
- 지식(Knowledge): 정보를 통해 패턴을 발견하고 일반화한 것 (예: A마트는 주로 식료품이 저렴하다).
- 지혜(Wisdom): 지식을 바탕으로 미래를 예측하고 창의적인 아이디어를 도출하는 것 (예: 이번 장보기는 A마트로 가야겠다).
03. 빅데이터 (Big Data)
기존의 관리 방법으로는 처리하기 어려울 정도로 거대하고 복잡한 데이터 집합을 의미함.
빅데이터의 3V 특징
- Volume (규모): 테라바이트(TB), 페타바이트(PB) 이상의 방대한 크기.
- Velocity (속도): 실시간으로 생성되고 빠르게 처리되어야 하는 속도.
- Variety (다양성): 정형 데이터뿐만 아니라 비정형 데이터까지 포함하는 다양성.
04. 데이터베이스(DB)와 DBMS
데이터베이스의 정의와 특징
여러 사람이 공유하여 사용할 목적으로 통합 관리되는 데이터의 집합임.
- 통합된 데이터(Integrated Data): 중복을 최소화하여 효율성을 높임.
- 저장된 데이터(Stored Data): 컴퓨터가 접근 가능한 매체에 저장됨.
- 공용 데이터(Shared Data): 여러 사용자가 동시에 공유함.
- 운영 데이터(Operational Data): 조직의 목적을 위해 반드시 필요한 데이터.
DBMS (데이터베이스 관리 시스템)
데이터베이스를 관리하고 사용자의 요구에 따라 정보를 생성해 주는 소프트웨어(예: Oracle, MySQL, PostgreSQL).
- 장점: 데이터 중복 최소화, 데이터 일관성 및 무결성 유지, 보안성 향상.
- 단점: 운영 비용 발생, 전문 인력 필요, 시스템 복잡성 증가.
2. [PostgreSQL] SQL 기초와 DB 클라이언트 설정
01. RDBMS와 SQL
RDBMS(관계형 데이터베이스 관리 시스템)는 데이터를 테이블(표) 형태로 관리하며, 테이블 간의 관계(Relationship)를 통해 데이터를 정의함.
SQL(Structured Query Language)은 이러한 RDBMS에서 데이터를 정의, 조작, 제어하기 위해 사용하는 표준 언어임.
02. SQL 명령어의 종류
목적에 따라 크게 4가지로 분류됨.
| 구분 | 설명 | 주요 명령어 |
|---|
| DDL (정의어) | 데이터베이스 구조(테이블 등)를 생성/수정/삭제함 | CREATE, ALTER, DROP |
| DML (조작어) | 데이터 자체를 조회/입력/수정/삭제함 | SELECT, INSERT, UPDATE, DELETE |
| DCL (제어어) | 데이터 접근 권한을 부여하거나 회수함 | GRANT, REVOKE |
| TCL (트랜잭션) | 작업의 논리적 단위를 확정하거나 취소함 | COMMIT, ROLLBACK |
03. PostgreSQL 특징
오픈소스 객체-관계형 데이터베이스 시스템(ORDBMS)으로, 강력한 기능과 안정성을 자랑함.
- ACID 지원: 트랜잭션의 안정성을 보장함.
- 확장성: 사용자 정의 함수나 데이터 타입을 자유롭게 추가 가능함.
- 표준 준수: SQL 표준을 가장 잘 준수하는 DBMS 중 하나임.
04. DB 클라이언트 도구 설치 및 연결
데이터베이스 서버에 접속하여 쿼리를 실행하고 데이터를 시각적으로 관리하기 위해 클라이언트 도구를 사용함.
1) pgAdmin
PostgreSQL 설치 시 기본 제공되는 웹 기반 관리 도구.
- 장점: PostgreSQL 고유의 기능에 최적화되어 있음.
2) DBeaver (추천)
다양한 DBMS(MySQL, Oracle, PostgreSQL 등)를 하나의 도구에서 관리할 수 있는 범용 클라이언트.
- DBeaver 실행 후 새 연결 클릭.
- DBMS 목록에서 PostgreSQL 선택.
- Host(
localhost), Port(5432), Database, Username, Password 입력.
- Test Connection으로 연결 확인 후 완료.
3. [PostgreSQL] 테이블 구조와 데이터 무결성 제약 조건
01. 데이터베이스 구조
관계형 데이터베이스는 데이터를 2차원 표 형식으로 관리함.
- 테이블(Table): 데이터가 저장되는 기본 저장소.
- 행(Row/Record): 테이블의 가로줄. 개별 데이터 한 건을 의미함.
- 열(Column/Field): 테이블의 세로줄. 데이터의 속성(이름, 나이 등)을 의미함.
02. 주요 데이터 타입 (Data Types)
PostgreSQL에서 컬럼을 정의할 때 사용하는 주요 자료형임.
- 숫자형:
INTEGER (정수), NUMERIC (정밀한 소수), FLOAT (부동 소수점).
- 문자형:
VARCHAR(n) (가변 길이 문자열), TEXT (길이 제한 없는 문자열).
- 날짜/시간형:
DATE (날짜), TIMESTAMP (날짜+시간).
- 논리형:
BOOLEAN (True/False).
03. 데이터 무결성과 제약 조건 (Constraints)
데이터의 정확성과 일관성을 보장하기 위해 테이블 생성 시 규칙을 설정함.
주요 제약 조건
- PRIMARY KEY (기본 키): 테이블 내에서 각 행을 유일하게 식별하는 컬럼.
NOT NULL과 UNIQUE 속성을 동시에 가짐.
- FOREIGN KEY (외래 키): 다른 테이블의 기본 키를 참조하여 테이블 간의 관계를 연결함. 참조 무결성을 보장함.
- NOT NULL: 해당 컬럼에 NULL(비어 있는 값) 입력을 허용하지 않음. 필수 입력 필드에 사용.
- UNIQUE: 해당 컬럼의 모든 값이 서로 달라야 함(중복 불가).
- CHECK: 입력되는 값이 특정 조건(예: 나이는 0보다 커야 함)을 만족하는지 검사함.
실습: 테이블 생성 예시
CREATE TABLE users (
user_id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
age INTEGER CHECK (age > 0)
);
4. [Project] 스마트 팩토리 DB 구축 실습 (육계 관리 시스템)
01. 프로젝트 개요
스마트 팩토리 환경에서 수집되는 육계(닭) 사육 정보를 관리하기 위한 데이터베이스를 구축함. 사육 환경, 건강 상태, 생산 및 출하 실적을 통합 관리하는 것이 목표임.
02. 데이터셋 및 테이블 명세
프로젝트에 사용될 주요 데이터 파일(CSV)과 이에 대응하는 테이블 설계 내역임.
주요 데이터셋
- chick_info: 육계 개체 정보.
- env_cond: 온도, 습도 등 사육장 환경 정보.
- health_cond: 질병 발생 여부 등 건강 상태 정보.
- prod_result: 일별 생산량 실적.
- ship_result: 출하량 및 등급 실적.
- master_code / unit: 공통 코드 및 단위 정보.
테이블 관계 설계 (ERD)
- Master Table: 기준 정보가 되는
chick_info, master_code.
- Transaction Table: 매일 발생하는 실적 데이터인
prod_result, ship_result 등은 chick_info의 ID를 Foreign Key로 참조함.
03. DB 구축 실습 과정
1) 스키마 생성
프로젝트 전용 공간인 스키마를 생성하여 다른 데이터와 분리함.
CREATE SCHEMA fms;
2) 테이블 생성 (Create Table)
DBeaver의 SQL 편집기나 GUI를 사용하여 명세서에 맞춰 테이블을 생성함. 이때 PK, FK 등의 제약 조건을 정확히 설정해야 데이터 무결성이 유지됨.
3) 데이터 임포트 (Import)
준비된 CSV 파일을 생성된 테이블에 적재함.
- DBeaver에서 테이블 우클릭 > 데이터 가져오기(Import Data) 선택.
- 컬럼 매핑 확인 후 진행.
- 데이터 타입 오류 발생 시 CSV 파일의 형식이나 테이블 정의를 수정해야 함.
4) 결과 확인
데이터 적재 후 ERD(Entity Relationship Diagram) 기능을 통해 테이블 간의 연결 구조가 설계 의도대로 구현되었는지 시각적으로 확인함.