#1. 관계 데이터 모델의 개념
- 관계 데이터 모델
- 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델
- 하나의 개체에 관한 데이터를 하나의 릴레이션에 저장
- 릴레이션: 행과 열로 구성된 테이블
- 관계 (relation): 행과 열로 구성된 테이블
| 릴레이션 내의 관계 | 릴레이션 안에 있는 데이터들의 집합 |
| 릴레이션 간의 관계 | 식별 가능한 값을 이용해 표현 -> 부모/자식 관계 |
- 하나의 개체에 관한 데이터를 2차원 테이블의 구조(=스키마)로 저장한 것
- 파일 관리 시스템 관점에서 파일(file)에 대응
- 스키마와 인스턴스로 구성
| 속성 (attribute) | 릴레이션의 열 | 파일 관리 시스템 관점에서 필드(field)에 대응 |
| 튜플 (tuple) | 릴레이션의 행 | 파일 관리 시스템 관점에서 레코드(record)에 대응 |
- 릴레이션 스키마: 릴레이션의 논리적 구조, 자주 변하지x(정적)
| 속성 (attribute) | 릴레이션 스키마의 열 |
| 도메인 (domain) | 속성이 가질 수 있는 값의 집합 |
| 차수 (degree) | 속성의 개수 |
| 표기 | 릴레이션 이름(속성1, 속성2, 속성3, ...) |
| 릴레이션 이름(속성1: 도메인1, 속성2: 도메인2, 속성3: 도메인3, ...) |
- 릴레이션 인스턴스: 릴레이션 스키마에 저장된 데이터 집합, 삽입/추가/삭제/수정이 자주 발생(동적)
| 튜플(tuple) | 릴레이션의 행 |
| 카디날리티(cardinality) | 튜플의 수 |
- 릴레이션의 특징
| 속성의 원자성 | 속성은 원자값(단일값)만을 가짐, 여러 값을 넣고 싶으면 테이블 분리 / 속성 나누기 |
| 속성의 무순서성 | 하나의 릴레이션에서 속성 사이의 순서 무의미 |
| 속성의 통일성 | 각 속성은 정의된 도메인에 속하는 동일한 유형의 값만 가짐 |
| 튜플의 유일성 | 하나의 릴레이션에는 동일한 튜플이 존재할 수 x (동일 튜플 중복 저장 x) |
| 튜플의 무순서성 | 하나의 릴레이션에서 튜플 사이의 순서 무의미 |
- 관계 데이터 모델: 데이터를 2차원 테이블 형태인 릴레이션으로 표현
- 릴레이션에 대한 제약 조건과 관계 연산을 위한 관계 대수를 정의
- 관계 데이터베이스 시스템: 관계 데이터 모델을 컴퓨터 시스템에 구현한 것, 관계 데이터 모델에 기초하여 SQL을 기반으로 구현
#2. 무결성 제약조건
- 키: 릴레이션에서 특정 튜플들을 유일하게 구별하는 속성 또는 속성들의 집합
- 키의 특성
| 유일성 (uniqueness) | 하나의 릴레이션에서 모든 튜플은 서로 다른 키 값을 가져야 함 |
| 최소성 (minimality) | 꼭 필요한 최소한의 속성들로만 키 구성 |
- 키의 종류
| 슈퍼키 (super key) | 유일성을 만족하는 속성 또는 속성들의 집합 |
| 후보키 (candidate key) | 유일성과 최소성을 만족하는 속성 또는 속성들의 최소 집합 |
| 기본키 (primary key) | 후보키 중에서 기본적으로 사용하기 위해 선택한 키, NULL 허용 x, 밑줄 그어 표시 |
| 대체키 (alternate key) | 기본키로 선택되지 못한 후보키 |
| 대리키 (surrogate Key, artificial key) | 기본키가 보안을 필요로 하거나 여러 개의 속성으로 구성되어 복잡하거나 마땅한 기본키가 없을 때, 일련 번호 같은 가상의 속성을 만들어 기본키로 삼음 |
| 외래키 (foreign key) | 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합, NULL 가능, 릴레이션들 사이의 관계 표현 |
- 무결성: 데이터에 결함이 없는 상태, 데이터가 정확하고 유효하게 유지된 상태
- 데이터의 무결성: 데이터의 무결성 보장, 일관되고 정확한 상태로 유지하기 위한 규칙
- 무결성 제약조건 (integrity constraint)
| 도메인 무결성 제약조건 (domain integrity constraint) |
도메인 제약: 릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만 가져야 한다는 조건 |
| 개체 무결성 제약조건 (primary key constraint) |
기본키 제약: "기본키는 NULL 값을 가져서는 안 되며 릴레이션 내에 오직 하나의 값만 존재해야 함"을 지켜야 한다는 조건 |
| 참조 무결성 제약조건 (referential integrity constraint) |
외래키 제약: 릴레이션 간의 참조 관계를 선언하는 제약 조건 |
| 개체 무결성 제약조건 위반 | 기본키가 NULL |
| 기본키가 중복 | |
| 복합키로 만든 기본키의 일부 NULL | |
| 기본키를 가진 행 삭제 시 참조하는 외래키가 있을 때 | |
| 참조 무결성 제약조건 위반 | 참조 중인 부모 키 삭제 |
| 참조 중인 부모 키 변경 | |
| 존재하지 않는 부모 키 참조 |
- 부모 릴레이션에서 튜플을 삭제할 때 참조 무결성 제약조건을 수행하기 위한 옵션
| RESTRICTED | 자식 릴레이션에서 참조하고 있으면 부모 릴레이션의 삭제 작업 거부 | 삭제 거부 |
| CASCADE | 자식 릴레이션의 관련 튜플 같이 삭제 | 부모 삭제 시 자식도 함께 삭제 |
| DEFAULT | 자식 릴레이션의 관련 튜플을 미리 설정해 둔 값으로 변경 | 부모 삭제 시 자식의 외래키를 NULL 또는 기본값으로 변경 |
| NULL | 자식 릴레이션의 관련 튜플을 NULL 값으로 설정 |
#3. 관계대수
- 관계대수: 릴레이션에서 원하는 결과를 얻기 위해 릴레이션의 처리 과정을 순서대로 기술하는 절차적 언어
- 릴레이션을 처리하는 연산자들의 모임: 일반 집합 연산자 / 순수 관계 연산자
- 폐쇄 특성 (closure property): 피연산자도 릴레이션, 연산의 결과도 릴레이션
- 일반 집합 연산자 (set operation): 릴레이션이 튜플의 집합이라는 개념 이용
- 합병 가능(union-compatible) 조건: 두 릴레이션의 차수가 같아야 함 / 두 릴레이션에서 서로 대응되는 속성의 도메인 같아야 함
| 합집합 (union) | 각각의 릴레이션에 속하는 모든 튜플을 반환 | 교환법칙 성립, 결합법칙 성립 |
| 교집합 (intersection) | 각각의 릴레이션에 공통으로 속하는 튜플 반환 | 교환법칙 성립, 결합법칙 성립 |
| 차집합 (difference) | 릴레이션 A에는 존재하지만 릴레이션 S에는 존재하지 않는 튜플 반환 | 교환법칙 성립x, 결합법칙 성립x |
| 카디션 프로덕트 (cartesian product) | 각각의 릴레이션에 속한 각 튜플을 모두 연결하여 만들어진 새로운 튜플 반환 | 교환법칙 성립, 결합법칙 성립 |
- 순수 관계 연산자 (relational operation): 릴레이션의 구조와 특성을 이용하는 연산자
| 셀렉트 (select) | 릴레이션에서 조건을 만족하는 튜플만 추출하기 위한 연산자 | 델타+조건식(릴레이션), 릴레이션 where 조건식 |
| 프로젝트 (project) | 릴레이션의 속성을 추출하기 위한 단항 연산자 | 파이+속성리스트(릴레이션), 릴레이션[속성리스트] |
- 조인: 두 릴레이션의 공통 속성을 기준으로 속성값이 같은 튜플을 수평으로 결합하는 연산
| 세타조인 | 세타 조인 중에서 비교 연산자가'='(같다)인 경우로 가장 많이 쓰임 | 공통 조건 만족하는 행만 반환 |
| 동등조인 | 조인 조건에 비교 연산자를 자유롭게 사용 | |
| 자연조인 | 동등조건에서 중복되는 조인 컬럼을 하나 제거하여 더 깔끔하게 보여주는 조인 | |
| 외부조인 | 자연조인에서 조인 조건에 맞지 않아 제외되는 튜플도 버리지 않고 NULL을 채워 반환 -> 왼쪽 외부조인, 오른쪽 외부조인, 완전 외부조인 | 조건 불만족 시에도 한쪽 테이블 행 포함 (NULL 채움) |
| 세미조인 | 자연조인을 한 후 두 릴레이션 중 한 쪽 릴레이션의 결과만 반환 | 한쪽 테이블 행만 반환, 다른 테이블 속성은 제외 |
- 디비전 (Division): 릴레이션2의 모든 튜플과 관련이 있는 릴레이션1의 튜플을 추출하는 연산
- 표현법: 릴레이션1 ÷ 릴레이션2
'데이터베이스' 카테고리의 다른 글
| 데이터베이스 프로젝트1 - 동작 시나리오 작성하기 (0) | 2026.05.20 |
|---|---|
| 데이터베이스 4주차 이론 정리 (0) | 2026.03.30 |
| 데이터베이스 3주차 이론 정리 (1) | 2026.03.21 |
| 1. 데이터베이스 1주차 이론 정리 (0) | 2026.03.07 |