데이터베이스 — 1강: DB의 개념과 관계형 데이터 모델
데이터베이스(Database)란?
데이터베이스의 정의:
→ 여러 응용 프로그램이 공유하여 사용할 수 있도록
조직적으로 저장·관리되는 데이터의 집합
DBMS (Database Management System):
→ 데이터베이스를 생성·관리·조회하는 소프트웨어
→ MySQL, PostgreSQL, Oracle, SQL Server, SQLite
파일 시스템 vs DBMS:
파일 시스템의 문제:
→ 데이터 중복 (여러 파일에 같은 데이터 저장)
→ 데이터 불일치 (중복 데이터 수정 시 불일치 발생)
→ 동시 접근 문제 (여러 사용자 동시 수정 충돌)
→ 보안 취약
DBMS 장점:
→ 데이터 중복 최소화
→ 데이터 일관성 유지
→ 동시성 제어
→ 백업·복구 지원
데이터베이스의 특성
4가지 특성:
1. 실시간 접근성 (Real-time Accessibility):
→ 언제든지 즉시 조회 가능
2. 계속적 변화 (Continuous Evolution):
→ 삽입, 삭제, 수정으로 최신 상태 유지
3. 동시 공유 (Concurrent Sharing):
→ 여러 사용자가 동시에 사용 가능
4. 내용에 의한 참조 (Content Reference):
→ 데이터의 물리적 위치가 아닌
내용(값)으로 데이터 검색
데이터베이스 시스템 구조
3단계 스키마 구조 (ANSI/SPARC):
외부 단계 (External / View):
→ 사용자가 보는 데이터 뷰
→ 각 사용자별 맞춤 뷰 제공
개념 단계 (Conceptual):
→ 전체 데이터베이스 논리적 구조
→ 엔티티, 관계, 제약조건
내부 단계 (Internal / Physical):
→ 실제 물리적 저장 방식
→ 인덱스, 파일 구조
데이터 독립성:
→ 논리적 독립성: 개념 스키마 변경이 외부 뷰에 영향 없음
→ 물리적 독립성: 내부 스키마 변경이 개념 스키마에 영향 없음
관계형 데이터 모델 (Relational Model)
관계형 모델의 핵심 구성요소:
릴레이션 (Relation) = 테이블:
→ 행(Row)과 열(Column)로 구성된 2차원 테이블
용어:
→ 릴레이션 = 테이블 = 엔티티
→ 튜플 = 행 = 레코드 = 인스턴스
→ 속성 = 열 = 컬럼 = 어트리뷰트
→ 도메인 = 속성의 허용 값 범위
예시: 학생 테이블
학번 | 이름 | 학과 | 학년
------|-------|---------|-----
2001 | 홍길동 | 컴퓨터학 | 3
2002 | 김철수 | 경영학 | 2
2003 | 이영희 | 통계학 | 1
키 (Key)의 종류
슈퍼키 (Super Key):
→ 튜플을 유일하게 식별할 수 있는 속성 집합
후보키 (Candidate Key):
→ 슈퍼키 중 최소한의 속성으로 구성된 키
→ 유일성 + 최소성
기본키 (Primary Key):
→ 여러 후보키 중 대표로 선택된 키
→ 반드시 유일하고 NULL 불허
→ 테이블에 하나만 존재
외래키 (Foreign Key):
→ 다른 테이블의 기본키를 참조하는 속성
→ 참조 무결성 제약 구현
예시:
학생 테이블: 기본키 = 학번
수강 테이블: 기본키 = (학번, 과목번호), 외래키 = 학번 → 학생(학번)
관계형 대수 (Relational Algebra)
SELECT (선택, σ):
→ 조건을 만족하는 행(튜플) 선택
→ σ(학년=3)(학생): 학년이 3인 학생들
PROJECT (추출, π):
→ 특정 열(속성)만 추출
→ π(이름, 학과)(학생): 이름과 학과만
JOIN (조인, ⋈):
→ 두 테이블을 공통 속성으로 결합
→ 학생 ⋈ 수강: 학번으로 조인
UNION (합집합, ∪):
→ 두 테이블의 합집합
DIFFERENCE (차집합, -):
→ 한 테이블에는 있고 다른 쪽에는 없는 것
CARTESIAN PRODUCT (카티션 곱, ×):
→ 두 테이블의 모든 조합
SQL 기초
SQL (Structured Query Language):
→ 관계형 DBMS 조작 언어
DDL (Data Definition Language):
→ CREATE: 테이블 생성
→ ALTER: 테이블 수정
→ DROP: 테이블 삭제
DML (Data Manipulation Language):
→ SELECT: 데이터 조회
→ INSERT: 데이터 삽입
→ UPDATE: 데이터 수정
→ DELETE: 데이터 삭제
DCL (Data Control Language):
→ GRANT: 권한 부여
→ REVOKE: 권한 취소
기본 SELECT 문:
SELECT 속성1, 속성2
FROM 테이블명
WHERE 조건
ORDER BY 속성 ASC/DESC;
예시:
SELECT 이름, 학과
FROM 학생
WHERE 학년 = 3
ORDER BY 이름 ASC;
정규화 (Normalization) 개요
정규화의 목적:
→ 데이터 중복 제거
→ 삽입·삭제·갱신 이상(Anomaly) 방지
이상 (Anomaly) 유형:
1. 삽입 이상: 불필요한 데이터 함께 삽입해야 하는 문제
2. 삭제 이상: 필요한 데이터가 함께 삭제되는 문제
3. 갱신 이상: 중복 데이터 일부만 수정 시 불일치 발생
정규형 단계:
1NF (제1정규형): 원자값 (반복 그룹 제거)
2NF (제2정규형): 부분 함수 종속 제거
3NF (제3정규형): 이행 함수 종속 제거
BCNF: 3NF보다 강화된 정규형
실무:
→ 보통 3NF 또는 BCNF까지 정규화
→ 성능을 위해 일부 역정규화(De-normalization) 허용
자주 묻는 질문
Q. SQL은 어떤 순서로 배워야 하나요? A. SELECT/FROM/WHERE → GROUP BY/HAVING → JOIN → 서브쿼리 → 집계 함수 → 인덱스 순서로 학습하는 것이 효과적입니다. 실습을 병행하는 것이 중요한데, SQLiteOnline.com이나 W3Schools SQL Tryit을 활용하면 브라우저에서 바로 연습할 수 있습니다.
Q. MySQL, PostgreSQL, Oracle 중 어떤 것을 배워야 하나요? A. 학습 목적이라면 무료인 MySQL이나 PostgreSQL을 추천합니다. SQL 문법은 대부분 비슷하므로 하나를 익히면 다른 것도 쉽게 적응할 수 있습니다. 취업을 목표로 한다면 지원할 회사의 기술 스택을 확인해 보세요.
O
OIYO 편집부
Content Editor지식 인큐베이터이자 전문 콘텐츠 크리에이터. 경영, 경제, 법률 및 실생활에 유용한 실무/자격증 중심의 깊이 있는 정보를 연구하고 공유합니다.