관계형 데이터베이스 기초와 SQL — 쉽게 배우는 DB 설계부터 쿼리까지
안녕하세요! 오늘은 데이터베이스(Database)를 처음 배우는 분들도 쉽게 이해할 수 있도록, 기초 개념부터 SQL 예제 코드까지 정리해드리겠습니다.
이번 글에서는 관계형 데이터 모델, E-R 모델, 데이터 정규화, 그리고 SQL 문법까지 차근차근 설명해보겠습니다.
1장. 관계형 데이터 모델이란?
데이터베이스 시스템의 가장 큰 목적은 데이터를 효율적으로 저장하고, 원하는 정보를 정확하게 가져오는 것입니다. 이를 위해 현실 세계를 데이터로 표현하는 방법이 필요한데, 이걸 데이터 모델이라고 합니다.
데이터 모델의 3가지 구성 요소
-
데이터 표현
-
데이터를 표 형태로 표현.
-
관계(Relation) 테이블, 애트리뷰트(Attribute, 열), 튜플(Tuple, 행)로 구성합니다.
-
-
무결성 제약
-
데이터의 일관성과 정확성을 유지하기 위해 규칙을 설정하는 것.
-
개체 무결성(Entity Integrity) : 기본키(Primary Key)는 절대 NULL이거나 중복되면 안 됨.
-
참조 무결성(Referential Integrity) : 외래키(Foreign Key)는 반드시 참조하는 테이블의 기본키 값과 일치하거나, 없으면 NULL이어야 함.
-
-
연산자 집합
-
데이터를 검색하거나 조작할 때 사용하는 연산.
-
관계대수(Relational Algebra): 연산 절차를 정의.
-
관계해석(Relational Calculus): 연산의 결과를 조건으로 정의.
-
주요 용어 정리
-
개체(Entity): 현실 세계에서 관리해야 하는 대상 (ex. 학생, 도서)
-
개체 타입(Entity Type): 같은 성격의 개체들을 정의한 것
-
스키마(Schema): 테이블의 구조와 형식을 정의한 설계도
-
도메인(Domain): 속성(열)에 저장할 수 있는 값의 범위
-
튜플(Tuple): 테이블의 한 행(row)
-
슈퍼키(Super Key): 행을 유일하게 식별할 수 있는 속성 집합
-
후보키(Candidate Key): 슈퍼키 중 최소 속성 집합
-
기본키(Primary Key): 후보키 중 대표로 지정한 것
-
외래키(Foreign Key): 다른 테이블의 기본키를 참조하는 속성
2장. E-R 모델(E-R Model)이란?
E-R 모델이란?
Entity-Relationship 모델은 현실 세계를 개체(Entity)와 그들 간의 관계(Relationship)로 표현하는 방법입니다.
예시)
-
개체(Entity): 학생, 교수
-
관계(Relationship): 학생이 수강신청을 한다.
이 모델을 다이어그램 형태로 나타낸 것을 E-R 다이어그램이라 합니다.
관계 스키마로 변환
E-R 다이어그램을 관계형 테이블로 변환할 때
-
개체 → 테이블
-
개체의 속성 → 열
-
관계 → 테이블 또는 외래키
예시
-
개체: 학생(SID, 이름, 학과)
-
개체: 교수(PID, 이름, 학과)
-
관계: 수강신청(학생ID, 과목번호)
3장. 데이터베이스 정규화
정규화는 테이블 설계에서 데이터 중복을 줄이고, 데이터 무결성을 지키기 위한 과정입니다.
함수적 종속(Functional Dependency)
A → B : A의 값이 결정되면 B의 값이 결정되는 관계.
정규형(Normal Form)
-
1NF: 모든 속성 값이 원자값
-
2NF: 부분 종속 제거
-
3NF: 이행 종속 제거
-
BCNF: 후보키 아닌 속성이 후보키에 종속되는 경우 제거
예시)
학생(학번, 이름, 학과번호, 학과명, 지도교수번호)
-
후보키: 학번
-
문제: 학과번호 → 학과명, 학과번호 → 지도교수번호
-
해결: 학생, 학과, 지도교수 테이블로 분리
4장. SQL 실습과 문법 정리
테이블 생성문
설명
-
CREATE TABLE
: 테이블 생성 -
NUMERIC
: 숫자형 데이터 -
VARCHAR(20)
: 최대 20자의 문자형 데이터 -
PRIMARY KEY (PID)
: PID를 기본키로 지정
외래키 설정문
설명
-
FOREIGN KEY (PID)
: student 테이블의 PID가 professor 테이블의 PID를 참조
트리거 문법과 예제
트리거는 특정 이벤트가 발생할 때 자동으로 실행되는 SQL 구문입니다.
고용자 삭제 시 관리자 삭제
봉급 평균 갱신
설명
-
BEFORE DELETE ON employee
: employee 테이블에서 삭제 전에 실행 -
DELETE FROM manager
: manager 테이블에서 해당 직원 삭제 -
UPDATE department SET
: department 테이블의 봉급 평균 갱신 -
SELECT AVG(봉급)
: employee 테이블의 봉급 평균 계산
중요 내용 정리
-
데이터 모델: 데이터 표현, 무결성 제약, 연산자 집합
-
E-R 모델: 개체와 관계로 현실을 표현
-
정규화: 데이터 중복 제거, 무결성 유지
-
SQL 문법: 테이블 생성, 외래키, 트리거
객관식 문제
1. 다음 중 개체 무결성에 대한 설명으로 옳은 것은?
① 외래키는 참조 테이블의 기본키와 일치해야 한다.
② 기본키는 NULL이 될 수 없다.
③ 하나의 테이블에는 두 개 이상의 기본키가 가능하다.
④ 도메인은 속성 값의 타입과 무관하다.
답: ②
해설: 개체 무결성은 기본키 값이 반드시 존재하고, 중복될 수 없는 규칙.
2. E-R 모델에서 개체(Entity)에 해당하는 것은?
① 학생
② 수강신청
③ 수강신청 관계
④ 학생-과목 관계
답: ①
해설: 학생, 교수 같은 실제 객체가 개체. 나머지는 관계.
3. 정규화 과정에서 2NF를 만족하기 위한 조건은?
① 모든 속성이 원자값
② 기본키가 없을 때
③ 부분 종속 제거
④ 이행 종속 제거
답: ③
해설: 2NF는 1NF를 만족하고, 기본키의 일부에만 종속된 속성을 제거.