해당 포스트는
SQLD
를 학습하며 정리한 내용에 대한 포스트입니다.
이론을 학습한 내용을 정리하고 퀴즈, 기출문제 등을 기록하려고 합니다.
🌈 관계형 데이터베이스
💻 데이터베이스
데이터베이스는 데이터들을 저장하는 공간
데이터베이스는 용도와 목적에 맞는 데이터들끼리 모아서 저장
💻 관계형 데이터베이스
관계형 데이터베이스
흔히 RDB(Relational Database)라고 불리는 관계형 데이터베이스는 말 그대로 관계형 데이터 모델에 기초를 둔 데이터베이스이다.
관계형 데이터베이스에서의 설계는 모든 데이터를 2차원 테이블 형태로 표현한 뒤 각 테이블 간의 관계를 정의하는 것으로 시작
RDBMS(Relational Database Management System)는 이러한RDB를 관리·감독하기 위한 시스템이며 우리가 흔히 알고 있는 Oracle, SQL Server(MSSQL), MySQL, MariaDB, PostgreSQL등이 이에 속한다.
관계형 데이터베이스의 등장
관계형 데이터베이스는 1970년대 E.F. Codd박사의 논문에서 처음 소개된 데이터베이스이다.
관계형 데이터베이스는 릴레이션(테이블)과 릴레이션의 조인 연산을 통해서 합집합, 교집합, 차집합 등을 만들 수 있다.
데이터베이스와 데이터베이스 관리 시스템의 차이점
데이터베이스는 데이터를 어떠한 형태의 자료구조로 사용하느냐에 따라서 나누어진다.
데이터베이스의 종류에는 계층형, 네트워크형 데이터베이스, 관계형 데이터베이스 등이 있다.
계층형 데이터베이스는 가장 많은 노드를 가질 수 있고, 트리 형태의 자료구조에 데이터를 저장하고 관리한다.
네트워크 데이터베이스는 오너와 멤버 형태로 데이터를 저장한다.
데이터베이스 관리 시스템은 계층형 데이터베이스, 네트워크 데이터베이스, 관계형 데이터베이스 등을 관리하기 위한 소프트웨어를 의미하며, 일명 DBMS라고 한다.
DBMS의 종류에는 Oracle
, MS-SQL
, MySQL
, MariaDB
, PostgresSQL
등이 있으며 모두 관계형 데이터베이스를 지원한다.
관계형 데이터베이스 집합 연산과 관계 연산
관계형 데이터베이스의 특징은 릴레이션을 사용해서 집합 연산과 관계 연산을 할 수 있다.
집합연산
집합 연산 | 설명 |
---|---|
합집합 | - 두 개의 릴레이션을 하나로 합하는 것 - 중복된 행(튜플)은 한 번만 조회 |
차집합 | - 본래 릴레이션에는 존재하고 다른 릴레이션에는 존재하지 않는 것을 조회 |
교집합 | - 두 개의 릴레이션 간에 공통된 것을 조회 |
곱집합 | - 각 릴레이션에 존재하는 모든 데이터를 조합하여 연산 |
관계연산
관계 연산 | 설명 |
---|---|
선택 연산 | - 릴레이션에 조건에 맞는 행(튜플) 만을 조회 |
투영 연산 | - 릴레이션에서 조건에 맞는 속성 만을 조회 |
결합 연산 | - 여러 릴레이션의 공통된 속성을 사용해서 새로운 릴레이션을 생성 |
나누기 연산 | - 기준 릴레이션에서 나누는 릴레이션이 가지고 있는 속성과 동일한 값을 가지는 행(튜플)을 추출하고 나누는 릴레이션의 속성을 삭제한 후 중복된 행을 제거하는 연산 |
관계형 데이터베이스는 릴레이션에 데이터를 저장하고 릴레이션을 사용해서 집합 연산 및 관계 연산을 지원하여 다양한 형태로 데이터를 조회할 수 있다.
릴레이션은 최종적으로 데이터베이스 관리 시스템에서 테이블(Table)로 만들어진다.
행
,row
,레코드
,튜플
은 같은 의미로 사용
컬럼
,속성
,Attribute
,필드(Field)
는 같은 의미로 사용
기본키는 하나의 테이블에서 유일성과 최소성, Not Null을 만족하면서 해당 테이블을 대표하는 것이다.
- EMP 테이블에서는 사원번호가 기본키가 된다.
테이블은 행과 컬럼으로 구성
그중에서 행(ROW)은 하나의 테이블에 저장되는 값으로 튜플이라고도 한다.
컬럼은 어떤 데이터를 저장하기 위한 필드로 속성이라고도 한다.
외래키는 다른 테이블의 기본키를 참조(조인)하는 컬럼이다.
- 예를 들어 EMP 테이블의 부서코드는 DEPT 테이블의 기본키인 부서코드를 참조한다.
외래키는 관계 연산 중에서 결합 연산(Join)
을 하기 위해서 사용한다.
💻 TABLE
관계형 데이터베이스는 모든 데이터를 2차원 테이블 형태로 표현한다.
2차원 테이블 형태는 우리가 엑셀을 작성할 때 흔히 이용하는 표형식을 생각하면 된다.
여기서 컬럼(Column)은 항목을 나타내는 각각의 세로열(관계, 이름, 생년월일, 직업, 취미, 좋아하는 음식)이다.
로우(Row)는 각각의 가로 행이다.
시간이 지나 김달 학생이 졸업하고 취업을 하게 된다면 김달 로우의 직업 컬럼이 업데이트될 것이고
김건과 이은이 늦둥이를 출산하게 된다면 신규로 하나의 로우가 더 추가 될 것이다.
테이블은 관계형 데이터베이스의 기본 단위이고 일반적으로 데이터베이스는 여러개의 테이블로 구성된다.
인스턴스에 해당하는 것은 로우(ROW)
속성에 해당하는 것은 컬럼(COLUMN)
🎯 추가 내용
Row Chaining 로우체이닝
하나의 레코드(또는 행)가 너무 커서 단일 데이터블록에 저장할 수 없을 때 발생하는 현상.
이 경우, DBMS는 레코드를 여러 데이터블록에 나누어 저장하게 된다.
하지만 이렇게 되면 한 레코드를 검색하기 위해 여러 데이터블록을 읽어야 하므로 I/O 작업이 증가하고 성능 저하를 일으킬 수 있다.
Row Migration 로우마이그레이션
특정 레코드가 UPDATE 연산으로 인해 크기가 증가하여 원래 있던 데이터블록에 저장할 공간이 부족할 때 발생하는 현상.
이 경우, DBMS는 해당 레코드를 다른 데이터블록으로 옮기게 된다(즉, “마이그레이션” 한다).
마찬가지로, 이 현상도 한 레코드를 검색하기 위해 여러 데이터블록을 읽어야 하는 결과를 초래하므로 성능 저하의 원인이 될 수 있다.
📚 레퍼런스
정미나. (유튜브 선생님에게 배우는) 유선배 SQL개발자(SQLD) 과외노트 / [정미나 저] (2023). Print.
한국데이터산업진흥원. SQL 자격검정 실전문제 : 국가공인 SQL전문가·국가공인 SQL개발자 / 한국데이터산업진흥원 [편] (2020). Print.