02 관계 데이터 모델
02 관계 데이터 모델
1. 관계 데이터 모델
1. 관계 데이터 모델 (Relational Data Model)
- 데이터를 2차원 테이블(릴레이션, Relation) 형태로 표현
- 각 행(Row)은 튜플(Tuple), 각 열(Column)은 속성(Attribute)을 의미
- 데이터 간 관계를 키(Key)를 통해 연결
- 수학의 집합 이론(Set Theory)과 관계 대수(Relational Algebra)에 기초
2. 릴레이션
1. 릴레이션
- 릴레이션 = 데이터가 저장되는 논리적 테이블 구조
- 각 릴레이션은 속성(Attribute)들의 집합으로 구성됨
- 릴레이션의 행(Row) 하나는 데이터 한 건(튜플, Tuple)에 해당
2. 용어정리
- 학생 릴레이션
1 2 3 4 5
| 학번 | 이름 | 전공 | 학년 | | ------- | --- | ----- | -- | | 2024001 | 김유진 | 컴퓨터공학 | 3 | | 2024002 | 이현우 | 경영학 | 2 | | 2024003 | 박지연 | 컴퓨터공학 | 4 |
- 용어
용어 | 의미 | 예시 설명 |
---|---|---|
릴레이션 (Relation) | 데이터를 저장하는 테이블 전체 | 위의 Student 테이블 전체가 하나의 릴레이션 |
튜플 (Tuple) | 테이블의 한 행(Row), 하나의 레코드(객체)를 의미 | (2024001, 김유진, 컴퓨터공학, 3) |
속성 (Attribute) | 테이블의 열(Column), 데이터의 항목 또는 특성 | 학번 , 이름 , 전공 , 학년 |
차수 (Degree) | 테이블에 포함된 속성(열)의 개수 | 4 (학번, 이름, 전공, 학년) |
카디널리티 (Cardinality) | 테이블에 포함된 튜플(행)의 개수 | 3 (학생이 세 명이므로) |
도메인 (Domain) | 각 속성이 가질 수 있는 값의 범위 또는 타입 | 예: 학년 속성의 도메인 = {1, 2, 3, 4} |
3. 릴레이션의 특성
구분 | 내용 |
---|---|
중복된 튜플 없음 | 동일한 행이 존재할 수 없음 (집합 이론 기반) |
튜플의 순서 무의미 | 행(Row)의 순서는 데이터 의미에 영향 없음 |
속성의 순서 무의미 | 열(Column)의 순서 또한 의미 없음 |
속성 값은 원자적 | 하나의 속성에는 더 이상 분해되지 않는 단일 값(Atomic Value)만 저장 |
모든 튜플은 동일한 속성 구조 | 각 행은 동일한 컬럼 구조를 가짐 |
4. note
- 관계 데이터 모델(Relational Model)은 수학의 ‘집합(Set)’ 이론을 기반으로 만들어졌기 때문에, “집합에는 동일한 원소가 2개 이상 존재할 수 없다”는 특성을 그대로 따름.
- 현실의 데이터베이스(SQL 기반 시스템)는 집합(set)이 아니라 ‘멀티셋(multiset, bag)’ 구조로 구현됨
- 실용성 : 중복을 완전히 금지하려면 모든 입력마다 DB가 모든 행을 비교해야 함 → 성능 저하. 그래서 DBMS는 기본적으로 중복을 허용하고, 필요한 경우에만 제약 조건(PK 등)으로 막게 설계됨.
- 현실 데이터의 중복 존재 가능성 : 완전히 동일한 데이터가 업무적으로 의미 있을 때도 있음. 예: “로그 기록”, “결제 내역”, “상품 조회 기록” 등은 동일한 값이 여러 번 등장 가능.
2. 무결성 제약조건
1. 키
구분 | 설명 | 예시 |
---|---|---|
슈퍼키(Super Key) | 튜플을 유일하게 구분할 수 있는 모든 속성의 조합 | {학번}, {학번, 이름} |
후보키(Candidate Key) | 튜플을 유일하게 구별할 수 있는 최소 속성의 집합 | 학번, 주민번호 |
기본키(Primary Key) | 후보키 중에서 대표로 선택된 키 | 학번 |
대체키(Alternate Key) | 기본키로 선택되지 않은 후보키 | 주민번호 |
외래키(Foreign Key) | 다른 릴레이션의 기본키를 참조하는 속성 | 수강 테이블의 학번 (→ 학생 테이블 학번 참조) |
2. 무결성
제약조건 | 의미 | 예시 |
---|---|---|
개체 무결성(Entity Integrity) | 기본키는 NULL 이면 안 되고, 중복될 수도 없음 | 학생 테이블의 학번은 중복 불가 |
참조 무결성(Referential Integrity) | 외래키는 참조하는 테이블의 기본키 값 중 하나이거나, NULL 이어야 함 | 수강 테이블의 학번은 반드시 존재하는 학생 학번이어야 함 |
도메인 무결성(Domain Integrity) | 속성 값은 정의된 도메인(값의 범위) 내에 있어야 함 | 성별 = ‘M’ 또는 ‘F’ |
사용자 정의 무결성(User-defined Integrity) | 사용자가 정의한 비즈니스 규칙 | 나이는 0 이상, 수강 학점은 0.5~4.5 사이 |
1. 참조 무결성 제약조건의 옵션
옵션 | 의미 | 예시 상황 (학생–수강 관계) |
---|---|---|
CASCADE | 부모가 삭제되거나 수정되면, 자식도 같이 삭제 또는 수정됨 | 학생 2024001이 삭제되면, 해당 학번의 수강 내역도 함께 삭제 |
SET NULL | 부모가 삭제되거나 수정되면, 자식의 외래키 값을 NULL로 변경 | 학생 2024001이 삭제되면, 수강 테이블의 학번이 NULL로 됨 |
SET DEFAULT | 부모가 삭제되거나 수정되면, 자식의 외래키 값을 기본값으로 변경 | 기본 학번(예: ‘9999999’)으로 설정 |
NO ACTION | 부모가 삭제/수정되어도 자식 테이블은 변경되지 않음 (기본값) | 학생을 삭제하려 하면, 참조 중이면 오류 발생 |
RESTRICT | NO ACTION과 유사하지만, 즉시 제약 확인 (일부 DB 차이 있음) | 학생 삭제 시, 수강 내역이 존재하면 삭제 불가 |
3. 관계 연산 (Relational Operations)
1. 관계대수
1. 관계대수
- 관계대수(Relational Algebra)는 관계형 데이터베이스에서 데이터를 어떻게 처리할지를 절차적으로 기술하는 언어
- “무엇을”이 아니라 “어떻게 구할 것인가”를 명시
2. 언어적 관점
구분 | 설명 | 예시 |
---|---|---|
절차적 언어 (Procedural Language) | 데이터를 얻기 위한 처리 과정(순서) 을 기술 | 관계대수(Relational Algebra), Relational Calculus 일부 |
비절차적 언어 (Non-Procedural Language) | 무엇을 얻고 싶은지 만 명시, 처리 절차는 DBMS가 수행 | SQL (SELECT ~ WHERE ~), 관계해석(Relational Calculus) |
3. 연산 종류
- 순수 관계 연산
- 관계 데이터 모델에서만 정의되는, 릴레이션 고유의 연산
- 주로 튜플(행)과 속성(열)을 기준으로 조작
- 종류
연산 기호 설명 SQL 유사 표현 셀렉션 σ 조건을 만족하는 튜플(행)만 선택 SELECT * FROM 테이블 WHERE 조건;
프로젝션 π 특정 속성(열)만 추출 SELECT 열1, 열2 FROM 테이블;
조인 ⋈ 두 릴레이션을 공통 속성 기준으로 결합 SELECT * FROM A INNER JOIN B ON A.공통컬럼 = B.공통컬럼;
디비전 ÷ 특정 속성의 모든 값을 만족하는 튜플 추출 SQL에서는 NOT EXISTS 또는 GROUP BY + HAVING으로 구현 가능 - 일반 집합 연산
- 관계형 데이터 모델이 아닌 일반 집합 이론에서 차용된 연산
- 릴레이션을 집합으로 보고 수행
- 종류
연산 기호 설명 SQL 유사 표현 합집합 ∪ 두 릴레이션의 모든 튜플을 합침 (중복 제거) UNION 교집합 ∩ 두 릴레이션 모두에 존재하는 튜플 INTERSECT 차집합 − 첫 릴레이션에는 있지만 두 번째에는 없는 튜플 EXCEPT / MINUS 카티션 프로덕트 × 두 릴레이션의 모든 튜플 조합 생성 CROSS JOIN
2. 연산들
1. 종류
- 셀렉션(Selection, σ)
- 프로젝션(Projection, π)
- 집합 연산 (Union, Difference, Intersection, Cartesian Product)
- 조인(Join)
- 디비전(Division)
2. Note
- 2025.10.15. 책으로 대략적인 흐름만 파악하고 통과!
This post is licensed under CC BY 4.0 by the author.