이 글은 SQLD를 공부하며 관계형 데이터베이스에 대해서 정리한 글이다.
관계형 데이터베이스
관계형 데이터베이스의 등장
- 1970년대 E.F. Codd 박사의 논문에서 처음 소개된 데이터베이스 (Codd, E. F. (1970). A relational model of data for large shared data banks. Communications of the ACM, 13(6), 377-387.)
- 릴레이션(Relation)과 릴레이션의 조인(
join
) 연산을 통해 합집합, 교집합, 차집합 등을 만들 수 있음 - 현재 기업에서 가장 많이 사용하는 데이터베이스의 한 종류로, Oracle, MS-SQL, MySQL, Sybase 등의 다양한 데이터베이스 관리 시스템이 있음
데이터베이스의 종류
- 데이터베이스의 종류는 데이터를 어떠한 형태의 자료구조(Data Structure)로 사용하느냐에 따라서 나누어짐
- 계층형 데이터베이스, 네트워크형 데이터베이스, 관계형 데이터베이스 등이 있음
- 계층형 데이터베이스는 트리(Tree) 형태의 자료구조에 데이터를 저장하고 관리함
- 계층형 데이터베이스는 1대N 관계를 표현함 → 부모와 자식 관계를 표현하기 쉬움
- 네크워크 데이터베이스는 오너(Owner)와 멤버(Member) 형태로 데이터를 저장함
- 네트워크 데이터베이스는 1대N과 M대N 모두 표현이 가능함
- 관계형 데이터베이스는 릴레이션을 통해 데이터를 저장하고 관리함
- 관계형 데이터베이스는 릴레이션을 사용해서 집합 연산과 관계연산을 할 수 있음
데이터베이스 관리 시스템
- 데이터베이스 관리 시스템(Database Management System; DBMS)은 계층형 데이터베이스, 네트워크 데이터베이스, 관계형 데이터베이스 등 모든 데이터베이스를 관리하기 위한 소프트웨어를 의미
- DBMS의 종류에는 Oracle, MS-SQL, MySQL, Sybase 등이 있음 (모두 관계형 데이터베이스를 지원함)
집합 연산과 관계 연산
- 관계형 데이터베이스의 특징은 릴레이션을 사용해서 집합 연산과 관계 연산을 할 수 있음
집합 연산
- 합집합(Union)
- 두 개의 릴레이션을 하나로 합하는 것
- 중복된 행(튜플)은 한 번만 조회됨
- 차집합(Difference)
- 본래 릴레이션에는 존재하고 다른 릴레이션에는 존재하지 않는 것을 조회함
- 교집합(Intersection)
- 두 개의 릴레이션 간에 공통된 것을 조회함
- 곱집합(Cartesian Product)
- 각 릴레이션에 존재하는 모든 데이터를 조합하여 연산함
관계 연산
- 선택 연산(Selection)
- 릴레이션에서 조건에 맞는 행(튜플)만을 조회함
- 투영 연산(Projection)
- 릴레이션에서 조건에 맞는 속성만을 조회함
- 결합 연산(Join)
- 여러 릴레이션의 공통된 속성을 사용해서 새로운 릴레이션을 만들어냄
- 나누기 연산(Division)
- 기준 릴레이션에서 나누는 릴레이션이 가지고 있는 속성과 동일한 값을 가지는 행(튜플)을 추출하고 나누는 릴레이션의 속성을 삭제한 후 중복된 행을 제거함
테이블(Table)의 구조
- 관계형 데이터베이스는 릴레이션에 데이터를 저장하고 릴레이션을 사용해서 집합 연산 및 관계 연산을 지원하여 다양한 형태로 데이터를 조회할 수 있음
- 릴레이션은 최종적으로 데이터베이스 관리 시스템에서 테이블(Table)의 형태로 만들어짐
- 기본키(Primary Key)는 하나의 테이블에서 유일성(Unique)과 최소성, Not Null을 만족하면서 해당 테이블을 대표하는 것
- 테이블은 행과 칼럼으로 구성됨
- 행(Row)은 하나의 테이블에 저장되는 값으로 튜플(Tuple)이라고도 함
- 칼럼(Column)은 어떤 데이터를 저장하기 위한 필드(Field)로 속성(Attribute)이라고도 함
- 외래키(Foreign Key)는 다른 테이블의 기본키를 참조(조인)하는 칼럼
- 외래키는 관계 연산 중에서 결합 연산(
join
)을 하기 위해서 사용
- 외래키는 관계 연산 중에서 결합 연산(
Reference
1. 2024 이기적 SQL 개발자 이론서 + 기출문제 / https://product.kyobobook.co.kr/detail/S000212055970
2. Codd, E. F. (1970). A relational model of data for large shared data banks. Communications of the ACM, 13(6), 377-387. / https://dl.acm.org/doi/abs/10.1145/362384.362685
'Data Science > SQL' 카테고리의 다른 글
SQLD | SQL 기본 - GROUP 연산과 SELECT문 실행 순서 (0) | 2024.03.02 |
---|---|
SQLD | SQL 기본 - NULL의 특징과 NULL 값 조회 (2) | 2024.03.01 |
SQLD | SQL 기본 - WHERE문 (with. LIKE, BETWEEN, IN) (0) | 2024.02.29 |
SQLD | SQL 기본 - SELECT문 (with. ORDER BY, DISTINCT, Alias) (1) | 2024.02.29 |
SQLD | SQL 기본 - SQL 종류 및 SQL문의 실행 순서 (0) | 2024.02.28 |