[데이터처리와활용] 6강. 관계형 데이터베이스 기초와 SQL

관계형 데이터베이스 기초와 SQL — 쉽게 배우는 DB 설계부터 쿼리까지

안녕하세요! 오늘은 데이터베이스(Database)를 처음 배우는 분들도 쉽게 이해할 수 있도록, 기초 개념부터 SQL 예제 코드까지 정리해드리겠습니다.
이번 글에서는 관계형 데이터 모델, E-R 모델, 데이터 정규화, 그리고 SQL 문법까지 차근차근 설명해보겠습니다.


1장. 관계형 데이터 모델이란?

데이터베이스 시스템의 가장 큰 목적은 데이터를 효율적으로 저장하고, 원하는 정보를 정확하게 가져오는 것입니다. 이를 위해 현실 세계를 데이터로 표현하는 방법이 필요한데, 이걸 데이터 모델이라고 합니다.

데이터 모델의 3가지 구성 요소

  1. 데이터 표현

    • 데이터를 표 형태로 표현.

    • 관계(Relation) 테이블, 애트리뷰트(Attribute, 열), 튜플(Tuple, 행)로 구성합니다.

  2. 무결성 제약

    • 데이터의 일관성과 정확성을 유지하기 위해 규칙을 설정하는 것.

    • 개체 무결성(Entity Integrity) : 기본키(Primary Key)는 절대 NULL이거나 중복되면 안 됨.

    • 참조 무결성(Referential Integrity) : 외래키(Foreign Key)는 반드시 참조하는 테이블의 기본키 값과 일치하거나, 없으면 NULL이어야 함.

  3. 연산자 집합

    • 데이터를 검색하거나 조작할 때 사용하는 연산.

    • 관계대수(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 실습과 문법 정리

테이블 생성문

1
2
3
4
5
6
CREATE TABLE professor (
PID NUMERIC,
Name VARCHAR(20NOT NULL,
Dept VARCHAR(10),
PRIMARY KEY (PID)
);
cs

설명

  • CREATE TABLE: 테이블 생성

  • NUMERIC: 숫자형 데이터

  • VARCHAR(20): 최대 20자의 문자형 데이터

  • PRIMARY KEY (PID): PID를 기본키로 지정

외래키 설정문

1
2
3
4
5
6
7
8
CREATE TABLE student (
SID NUMERIC,
Name VARCHAR(20NOT NULL,
Dept VARCHAR(10),
PID NUMERIC,
PRIMARY KEY (SID),
FOREIGN KEY (PID) REFERENCES professor(PID)
);
cs

설명

  • FOREIGN KEY (PID): student 테이블의 PID가 professor 테이블의 PID를 참조

트리거 문법과 예제

트리거는 특정 이벤트가 발생할 때 자동으로 실행되는 SQL 구문입니다.

고용자 삭제 시 관리자 삭제

1
2
3
CREATE TRIGGER emp_delete
BEFORE DELETE ON employee
EXECUTE DELETE FROM manager WHERE 직원 = OLD.고용자;
cs

봉급 평균 갱신

1
2
3
4
5
CREATE TRIGGER avg_sal_update
BEFORE DELETE ON employee
EXECUTE UPDATE department
SET 봉급평균 = (SELECT AVG(봉급) FROM employee)
WHERE 부서 = (SELECT 부서 FROM manager WHERE 직원 = OLD.고용자);
cs

설명

  • 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를 만족하고, 기본키의 일부에만 종속된 속성을 제거.

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다