WeniVooks

검색

SQL 베이스캠프

데이터베이스

1. DB

데이터(Data)란 컴퓨터 안에 기록된 문자, 숫자 등의 정보를 의미하며, 이러한 데이터의 집합을 데이터베이스(Database, DB)라고 합니다.

데이터베이스(영어: database, DB)는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다. 작성된 목록으로써 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음이다. - Wikipedia

여기서 중요한 키워드는 여러 사람이 공유, 통합된 정보, 데이터 묶음입니다. 데이터베이스는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이며, 이러한 데이터베이스를 관리하는 시스템을 데이터베이스 관리 시스템(Database Management System, DBMS)이라고 합니다.

2. DB, RDB, DBMS, RDBMS

  • DB(Database): 데이터베이스는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합입니다.
  • RDB(Relational Database): 관계형 데이터베이스는 데이터를 테이블로 표현하고, 테이블 간의 관계를 정의하는 데이터베이스입니다.
  • DBMS(Database Management System): 데이터베이스 관리 시스템은 데이터베이스를 관리하는 소프트웨어입니다.
  • RDBMS(Relational Database Management System): 관계형 데이터베이스 관리 시스템은 데이터를 테이블로 표현하고, 테이블 간의 관계를 정의하는 데이터베이스 관리 시스템입니다.

RDBMS(Relational Database Management System)는 관계형 데이터베이스를 관리하는 시스템입니다. 대표적인 오픈소스 RDBMS로는 MySQL, PostgreSQL, SQLite가 있으며, 상용 제품으로는 Oracle이 널리 사용됩니다. RDBMS를 다루기 위해서는 SQL(Structured Query Language)을 배워야 합니다. SQL은 데이터베이스와 상호작용할 때 사용하는 표준 언어입니다.

DBMS와 RDBMS의 차이점은 다음과 같습니다.

  • DBMS: 데이터베이스를 관리하는 일반적인 시스템으로, 계층형, 네트워크형 등 다양한 데이터베이스 모델을 지원합니다.
  • RDBMS: 관계형 데이터베이스를 관리하는 시스템으로, 데이터를 테이블 형태로 저장하고 테이블 간의 관계를 정의합니다.

여기서 관계형이라는 것은 데이터를 테이블로 표현하고, 테이블 간의 관계가 있다는 것을 의미합니다. 아래 이미지는 관계형 데이터베이스의 예시입니다. 이렇게 그려진 다이어그램을 ERD(Entity Relationship Diagram)라고 합니다.

ERD.png

3. 테이블이란?

SQL에서 테이블(Table)은 데이터를 저장하는 기본 구조를 말합니다. 예를 들어, 온라인 쇼핑에서 물건을 구매한 기록을 담아놓은 "구매 테이블"을 생각해볼 수 있습니다. 아래 테이블은 위니브 SQL에 준비된 샘플 데이터이며, 실습 환경 하단의 ResultSample Data를 클릭하면 확인할 수 있습니다.

Table.png

SQL로 작업하기 전에 먼저 살펴봐야 할 것은 이 테이블입니다. 테이블 구조를 파악하고 업무에 필요한 데이터를 추출해야 합니다. 분석 전에 잘못된 테이블을 선택하면 분석 자체가 무의미해지기 때문입니다.

4. 관계형 데이터베이스의 구성요소

관계형 데이터베이스는 테이블로 구성되어 있으며, 테이블은 (Column)과 (Row)으로 이루어져 있습니다. 관계형 데이터베이스 이론에서는 이 행과 열을 각각 튜플(Tuple)과 속성(Attribute)이라고 부릅니다.

RDB

테이블을 구성하는 주요 요소들을 살펴보겠습니다.

  • 튜플(Tuple): 테이블에서 행(가로)을 의미합니다. 하나의 레코드 또는 데이터 항목을 나타냅니다.
  • 속성(Attribute): 테이블에서 열(세로)을 의미합니다. 데이터의 특성이나 항목을 나타냅니다.
  • 도메인(Domain): 속성이 가질 수 있는 값의 범위입니다. 예를 들어, 성별 속성의 도메인은 '남성', '여성'과 같은 값의 집합입니다.
  • 릴레이션(Relation): 테이블을 의미합니다. 튜플과 속성으로 이루어진 데이터의 집합입니다.
  • 기본키(Primary Key): 각 튜플을 고유하게 식별할 수 있는 속성 또는 속성의 집합입니다. 기본키는 중복되지 않고 NULL 값을 가질 수 없습니다. 예를 들어, 주민등록번호, 학번 등이 기본키가 될 수 있습니다.
  • 외래키(Foreign Key): 다른 테이블의 기본키를 참조하는 속성입니다. 외래키는 테이블 간의 관계를 정의합니다. 예를 들어, 학생 테이블의 학과 코드가 학과 테이블의 기본키를 참조하는 경우, 학과 코드는 외래키가 됩니다.
  • 스키마(Schema): 데이터베이스의 구조를 정의하는 설계도입니다. 테이블 이름, 속성, 도메인, 제약 조건 등을 포함하는 메타데이터입니다.
  • 차수(Degree): 릴레이션의 속성(열)의 개수를 의미합니다.
  • 기수(Cardinality): 릴레이션의 튜플(행)의 개수를 의미합니다. 카디널리티라고 읽기도 합니다.

이미지로 표현하면 아래와 같습니다.

RDB
4.1 키의 개념 및 종류

관계형 데이터베이스에서 사용되는 주요 키의 종류는 다음과 같습니다.

  • 기본키(Primary Key): 테이블에서 메인으로 사용되는 키입니다. 고유하고 유일한 값을 가지며 NULL 값을 가질 수 없습니다. 예를 들어, 주민등록번호, 학번, 계좌번호 등이 기본키가 될 수 있습니다.
  • 후보키(Candidate Key): 기본키가 될 수 있는 속성들의 집합입니다. 고유한 값을 가지지만 기본키로 선택되지 않은 키들을 말합니다.
  • 외래키(Foreign Key): 다른 테이블과의 관계를 나타내는 키로, 참조하는 테이블의 기본키를 가리킵니다. 아래 그림에서 학생 릴레이션과 수강신청 과목 릴레이션은 학번으로 연결되어 있으므로, 수강신청 과목 테이블의 학번이 외래키가 됩니다.
Key
4.2 테이블 관계

테이블 간의 관계는 크게 세 가지로 나눌 수 있습니다.

  • 1:1 관계(One-to-One Relationship): 한 테이블의 레코드가 다른 테이블의 레코드와 일대일로 매칭되는 경우입니다. 예를 들어, 사용자와 학번의 관계가 있습니다. 각 사용자는 하나의 학번만을 가지며, 각 학번은 하나의 사용자에만 속합니다.
  • 1 관계(One-to-Many Relationship): 한 테이블의 레코드가 다른 테이블의 여러 레코드와 연결되는 경우입니다. 예를 들어, 학교와 학생의 관계를 들 수 있습니다. 한 학교에는 여러 학생이 소속되어 있지만, 각 학생은 하나의 학교에만 소속됩니다.
  • N 관계(Many-to-Many Relationship): 양쪽 테이블의 레코드가 서로 여러 개씩 연결될 수 있는 경우입니다. 예를 들어, 학생과 수업의 관계가 있습니다. 한 학생이 여러 수업을 들을 수 있고, 한 수업에도 여러 학생이 참여할 수 있습니다.

ERD로 표현하면 아래와 같습니다. 선의 종류를 보면서 어떤 관계인지 파악할 수 있습니다.

일대다(1 : N)다대다(N : M)일대일(1 : 1)

ERD로는 아래와 같이 표현합니다.

일대다(1 : N)다대다(N : M)일대일(1 : 1)
1.1 실습환경 소개1.3 SQL