이교준 강사님의 데이터베이스 강의를 듣고 관계형 데이터베이스에 관해 간략히 정리하고 가자.
데이터베이스란?
구조화된 데이터들의 집합이다.
관계형 데이터베이스
데이터들을 2차원 배열과 같은 테이블에 저장하고 관리하는 데이터베이스.
관계 정의
1:M 관계 (부자지간 관계)
N:M 관계 (비즈니스 관계)
1:1 관계 (부부 관계)
앞으로 위 세 개의 관계에 대해서도 정리할 예정이다. 관계는 테이블 설계시 매우 중요하다.
주식별자(Primary Key, 기본키)
하나의 레코드를 고유하게 구분할 수 있는 것으로 하나의 컬럼 또는 여러 개의 컬럼이 모여 Primary Key를 구성한다.
주식별자 특징
NOT NULL
UNIQUE
(유일성)- 최소한의 속성 조합으로 이뤄진다(최소성)
- 다양한 종류의 무결성을 설정하고 강화하는 것을 도와준다.
- 테이블 관계를 설정하도록 해준다.
- 관계에 반드시
PK
가 포함된다.
테이블 설계 시 고려해야 할 문제 상황들
예를 들어, 학생 수강신청 관리 테이블 설계를 만든다고 가정해보자.
아래 이미지처럼 테이블 초안을 작성했다고 해보자.

이때, 주의해야 할 점들이 무엇이 있을까?
테이블 변경 시
- 만일 같은 과목을 담당하는 선생님들이 두 명 이상으로 늘어날 경우 대처 방법
데이터 오류 시
- 과목명을 오기했을 경우 대처 방법
- 학생명을 오기했을 경우 대처 방법
- 한 학생이 동일한 과목을 두 번 이상 수강신청 한 경우 대처 방법
- 한 과목도 신청하지 않은 학생을 찾아내는 방법
- 동명 이인이 존재하는 경우 해결 방법
- 한 과목이 폐강되었을 때 대처 방법
위 문제 상황들을 고려하지 않고 테이블을 설계한다면, 문제 상황이 발생했을 때 테이블의 한계에 부딪힐 것이다. 결국 테이블 구조 수정을 할 수 밖에 없게된다. 테이블의 구조체가 변경된다면 해당 테이블을 이용하고 있는 프로그램도 다시 코딩해야하는 불상사가 발생하게 된다.