본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
Ch 2. 데이터베이스 개론 - 관계형 데이터 모델
관계형 데이터베이스(RDB)의 핵심: 관계형 데이터 모델
1. 관계형 데이터 모델이란?
관계형 데이터 모델은 1970년대 IBM의 에드거 F. 코드(Edgar F. Codd) 박사가 제안한 데이터 모델로, 데이터를 테이블(Table) 또는 '관계(Relation)'의 형태로 표현하는 방식입니다. 이 모델은 수학적인 집합론과 관계 대수(Relational Algebra) 및 관계 해석(Relational Calculus)에 기반을 두어 데이터의 일관성과 무결성을 강력하게 보장하며, 데이터를 효율적으로 관리하고 조작할 수 있는 논리적인 틀을 제공합니다.
가장 중요한 것은 이 모델이 논리적 데이터 독립성(Logical Data Independence)을 제공한다는 점입니다. 즉, 데이터의 논리적 구조가 변경되더라도 응용 프로그램에 미치는 영향을 최소화하여 유지보수를 용이하게 합니다.
2. 관계형 데이터 모델의 주요 구성 요소
관계형 데이터 모델은 다음과 같은 핵심 구성 요소들로 이루어져 있습니다.
2.1. 테이블 (Table) 또는 관계 (Relation)
- 테이블은 관계형 데이터 모델의 가장 기본적인 단위입니다. 데이터를 2차원 구조로 조직하여, 행과 열의 형태로 정보를 저장합니다. 하나의 테이블은 하나의 특정 엔티티(Entity) 또는 개체 집합(예: 고객, 상품, 주문)에 대한 정보를 담습니다.
2.2. 튜플 (Tuple) 또는 행 (Row)
- 튜플은 테이블의 행(Row)을 의미합니다. 각 튜플은 하나의 레코드 또는 엔티티의 인스턴스(예: 특정 고객 '김철수'의 모든 정보)를 나타내며, 관련된 속성 값들의 집합입니다. 모든 튜플은 고유하며 중복될 수 없습니다.
2.3. 속성 (Attribute) 또는 열 (Column)
- 속성은 테이블의 열(Column)을 의미합니다. 각 속성은 엔티티의 특정 특성(예: 고객의 '이름', '나이', '전화번호')을 나타내며, 특정 도메인(Domain)의 값을 가집니다.
2.4. 도메인 (Domain)
- 도메인은 하나의 속성이 가질 수 있는 유효한 값들의 집합입니다. 예를 들어, '성별' 속성의 도메인은 {'남', '여'}가 될 수 있고, '나이' 속성의 도메인은 '0에서 150 사이의 정수'가 될 수 있습니다. 이는 데이터의 유효성을 검사하고 데이터 무결성을 유지하는 데 기여합니다.
2.5. 차수 (Degree)
- 차수는 테이블의 속성(열)의 개수를 의미합니다. 테이블의 수평적인 크기를 나타냅니다.
2.6. 카디널리티 (Cardinality)
- 카디널리티는 테이블의 튜플(행)의 개수를 의미합니다. 테이블에 저장된 데이터 레코드의 수를 나타냅니다.
3. 관계형 데이터 모델의 핵심 개념: 키(Key)와 관계(Relationship), 그리고 제약조건(Constraint)
데이터의 일관성과 효율적인 관리를 위해 관계형 데이터 모델에서는 '키'와 '관계'라는 중요한 개념을 사용합니다. 그리고 이러한 데이터의 '질서'를 유지하기 위한 규칙이 바로 제약조건입니다.
3.1. 키 (Key)
키는 테이블의 튜플을 고유하게 식별하거나, 다른 테이블과의 관계를 설정하는 데 사용되는 하나 이상의 속성 집합입니다.
- 기본 키 (Primary Key, PK):
- 테이블의 각 튜플을 고유하게 식별할 수 있는 하나 또는 여러 개의 속성(열) 조합입니다.
- 고유성(Uniqueness): 모든 튜플에 대해 기본 키 값은 중복될 수 없습니다.
- 최소성(Minimality): 기본 키를 구성하는 속성 중 어느 하나라도 제거하면 고유성을 잃게 됩니다 (더 이상 고유하게 식별할 수 없게 됨).
- 널 값 불허(Non-nullability): 기본 키는 널(NULL) 값을 가질 수 없습니다.
- 예시: 고객 테이블의 '고객ID', 상품 테이블의 '상품코드' 등.
- 후보 키 (Candidate Key):
- 테이블의 각 튜플을 고유하게 식별할 수 있는 모든 최소한의 속성(열) 집합입니다. 기본 키가 될 수 있는 자격을 가진 모든 키를 말합니다.
- 기본 키는 여러 후보 키 중에서 하나를 선택하여 지정됩니다.
- 대체 키 (Alternate Key):
- 후보 키 중에서 기본 키로 선택되지 않은 나머지 후보 키들을 의미합니다.
- 외래 키 (Foreign Key, FK):
- 다른 테이블의 기본 키를 참조하는 속성입니다.
- 두 테이블 간의 관계를 정의하고, 참조되는 테이블(부모 테이블)의 데이터가 참조하는 테이블(자식 테이블)에 의해 유효하게 유지되도록 참조 무결성(Referential Integrity)을 강제합니다.
- 예시: 주문 테이블의 '고객ID'가 고객 테이블의 '고객ID'(기본 키)를 참조하는 경우, '고객ID'는 주문 테이블의 외래 키가 됩니다.
3.2. 관계 (Relationship)
관계형 데이터베이스에서 관계는 주로 외래 키를 통해 표현됩니다. 테이블 간의 논리적인 연결을 나타내며, 엔티티 간의 연관성을 정의합니다.
- 일대일 (One-to-One, 1:1): 하나의 엔티티 인스턴스가 다른 엔티티 인스턴스 하나와만 관련되는 관계입니다.
- 예: '학생'과 '학생의 좌석 정보' (각 학생은 하나의 좌석을, 각 좌석은 한 학생만 가짐)
- 일대다 (One-to-Many, 1:N): 하나의 엔티티 인스턴스가 여러 다른 엔티티 인스턴스와 관련될 수 있는 관계입니다. 가장 흔한 관계 유형입니다.
- 예: '고객'과 '주문' (한 고객은 여러 주문을 할 수 있지만, 한 주문은 한 고객에게만 속함)
- 다대다 (Many-to-Many, N:M): 여러 엔티티 인스턴스가 여러 다른 엔티티 인스턴스와 관련될 수 있는 관계입니다. RDB에서는 이 관계를 직접 표현할 수 없기 때문에, 일반적으로 중간에 연결(조인) 테이블을 두어 1:N 관계로 풀어냅니다.
- 예: '학생'과 '강의' (한 학생은 여러 강의를 들을 수 있고, 한 강의는 여러 학생이 들을 수 있음) -> 수강이라는 연결 테이블로 '학생ID'와 '강의ID'를 묶어 표현합니다.
3.3. 제약조건 (Constraint)
제약조건은 데이터베이스에 저장되는 데이터의 무결성(Integrity)을 유지하기 위해 테이블의 특정 열이나 테이블 전체에 걸쳐 설정하는 규칙입니다. 이는 데이터의 정확성, 유효성, 그리고 일관성을 보장하는 핵심적인 메커니즘입니다.
- 개체 무결성 제약조건 (Entity Integrity Constraint):
- 기본 키(Primary Key)에 대한 제약조건입니다.
- 모든 기본 키는 널(NULL) 값을 가질 수 없으며(NOT NULL), 테이블 내에서 유일해야(UNIQUE) 합니다. 이는 테이블의 모든 행이 고유하게 식별될 수 있도록 보장합니다.
- 참조 무결성 제약조건 (Referential Integrity Constraint):
- 외래 키(Foreign Key)에 대한 제약조건입니다.
- 외래 키는 참조하는 테이블(부모 테이블)의 기본 키에 존재하는 값만 가질 수 있거나, 널(NULL) 값을 가질 수 있습니다.
- 이는 데이터베이스에서 '고아 데이터(Orphaned Data)'가 생기는 것을 방지합니다. 예를 들어, 존재하지 않는 고객의 주문이 생성되는 것을 막아줍니다.
- 도메인 무결성 제약조건 (Domain Integrity Constraint):
- 각 속성(열)의 값이 해당 도메인에 정의된 범위 내의 유효한 값만 가질 수 있도록 합니다.
- NOT NULL: 해당 열은 반드시 값을 가져야 하며 널 값을 허용하지 않습니다.
- UNIQUE: 해당 열의 모든 값이 서로 달라야 합니다 (중복을 허용하지 않음).
- CHECK: 특정 조건(예: '나이'는 0보다 커야 한다)을 만족하는 값만 허용합니다.
- DEFAULT: 값을 명시하지 않았을 때 기본으로 삽입될 값을 지정합니다.
- 키 제약조건 (Key Constraint):
- 기본 키, 후보 키, 고유 키(Unique Key) 등 키 속성에 대한 제약조건입니다. 고유 키는 널 값을 허용하는 UNIQUE 제약조건입니다.
4. 데이터 정규화 (Normalization)
관계형 데이터 모델에서 데이터의 중복을 최소화하고 데이터 무결성을 극대화하기 위한 중요한 과정이 정규화(Normalization)입니다. 정규화는 테이블을 여러 개의 작은 테이블로 분리하는 일련의 규칙(정규형)을 따르는 과정입니다.
- 목표:
- 데이터 중복 제거: 삽입, 삭제, 갱신 이상(Anomaly) 발생 방지.
- 데이터 무결성 확보: 데이터의 일관성과 정확성 유지.
- 데이터 모델의 유연성 향상.
- 주요 정규형:
- 1차 정규형 (1NF): 모든 속성 값이 원자 값(더 이상 분해될 수 없는 값)을 가집니다.
- 2차 정규형 (2NF): 1NF를 만족하고, 기본 키가 아닌 모든 속성(부분 함수 종속이 없는)이 기본 키 전체에 종속됩니다.
- 3차 정규형 (3NF): 2NF를 만족하고, 기본 키가 아닌 모든 속성(이행적 종속이 없는)이 기본 키에 직접 종속됩니다.
- 그 외 BCNF, 4NF, 5NF 등이 있습니다.
정규화는 데이터의 중복을 줄이고 무결성을 높이지만, 때로는 너무 많은 테이블 분할로 인해 조인(JOIN) 연산이 많아져 쿼리 성능이 저하될 수 있습니다. 이럴 때는 역정규화(Denormalization)를 통해 의도적으로 중복을 허용하고 테이블을 통합하여 성능을 최적화하기도 합니다. 이는 설계 시의 trade-off 관계입니다.
관계형 데이터 모델은 단순히 데이터를 저장하는 기술을 넘어, 데이터의 논리적인 구조와 관계를 엄격하게 정의하고 관리함으로써 정보의 질서를 유지하는 강력한 프레임워크입니다. 테이블, 키, 관계, 제약조건, 그리고 정규화와 같은 개념들은 RDB가 수십 년간 수많은 기업과 시스템의 핵심 기반으로 자리 잡을 수 있었던 이유를 명확히 보여줍니다.
오늘날 NoSQL 데이터베이스들이 유연성과 확장성 측면에서 새로운 대안을 제시하고 있지만, 관계형 데이터 모델이 제공하는 데이터의 정확성, 일관성, 그리고 관계의 명확성은 여전히 많은 비즈니스 영역에서 가장 중요한 가치로 인정받고 있습니다. 복잡한 트랜잭션, 엄격한 데이터 무결성이 요구되는 시스템을 설계할 때는 관계형 데이터 모델에 대한 깊은 이해가 필수적입니다.
https://fastcampus.info/4n8ztzq
(~6/20) 50일의 기적 AI 환급반💫 | 패스트캠퍼스
초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!
fastcampus.co.kr
'개발공부 > 데이터베이스' 카테고리의 다른 글
패스트캠퍼스 환급챌린지 32일차 : 한 번에 끝내는 컴퓨터 공학 & 인공지능 복수전공 초격차 패키지 강의 후기 (1) | 2025.08.01 |
---|---|
패스트캠퍼스 환급챌린지 30일차 : 한 번에 끝내는 컴퓨터 공학 & 인공지능 복수전공 초격차 패키지 강의 후기 (2) | 2025.07.30 |
패스트캠퍼스 환급챌린지 29일차 : 한 번에 끝내는 컴퓨터 공학 & 인공지능 복수전공 초격차 패키지 강의 후기 (4) | 2025.07.29 |