WeniVooks

검색

SQL 베이스캠프

데이터베이스

1. DB

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

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

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

2. DB, RDB, DBMS, RDBMS

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

RDBMS(stands for Relational Database Management System)는 DB를 관리하는 시스템입니다. TOP3 오픈소스 RDBMS는 MySQL, PostgreSQL, SQLite입니다. 오픈소스가 아닌 것에서는 Oracle이 독보적입니다. 이러한 RDBMS를 다루기 위해서는 SQL(Structured Query Language)을 배워야 합니다. SQL은 데이터베이스와 상호작용할 때 사용하는 언어입니다.

DBMS와 RDBMS의 차이점은 DBMS는 데이터베이스를 관리하는 시스템이고, RDBMS는 관계형 데이터베이스를 관리하는 시스템이라는 점입니다. DBMS가 관리하는 데이터베이스는 관계형이 아닐 수도 있습니다. 예를 들어 계층형이나, 네트워크형 데이터베이스가 될 수도 있습니다.

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

ERD.png

3. 테이블이란?

SQL에서 테이블(Table)은 데이터를 저장하는 구조를 말합니다. 이를 간단하게 설명하기 위해, 우리가 온라인 쇼핑에 물건을 구매한 기록을 담아놓은 "구매 테이블:을 예로 들 수 있습니다. 아래 테이블은 위니브 SQL에 준비된 데이터이며 하단 Result 옆 Sample Data를 클릭하시면 아래와 같은 테이블을 확인할 수 있습니다.

Table.png

SQL로 무언가를 하기 전에 먼저 살펴봐야할 것은 이 테이블입니다. 이 테이블에서 업무에 필요한 지시사항들을 고려해서 필요한 데이터를 추출해야합니다. 왜냐면 분석을 하기 전에 테이블을 잘못 가져오면 분석은 이미 잘못된 것이기 때문입니다.

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

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

RDB

이번에는 이 테이블을 구성하는 주요 구성요소에 대해 앞서 언급한 튜플과 속성을 포함하여 알아보겠습니다.

  • 튜플(Tuple): 테이블에서 행을 의미합니다. 튜플은 테이블에서 수평으로 나타나는 데이터의 집합입니다.
  • 속성(Attribute): 테이블에서 열을 의미합니다. 속성은 테이블에서 수직으로 나타나는 데이터의 집합입니다.
  • 도메인(Domain): 속성이 취할 수 있는 값의 집합을 의미합니다. 예를 들어, 성별 속성의 도메인은 '남성', '여성'과 같은 값의 집합입니다.
  • 릴레이션(Relation): 테이블을 의미합니다. 릴레이션은 튜플과 속성으로 이루어진 데이터의 집합입니다.
  • 기본키(Primary Key): 튜플을 식별할 수 있는 유일한 속성 또는 속성의 집합을 의미합니다. 기본키는 릴레이션에서 튜플을 식별할 수 있는 유일한 값입니다. 예를 들어, 주민등록번호, 학번 등이 기본키가 될 수 있습니다.
  • 외래키(Foreign Key): 다른 릴레이션의 기본키를 참조하는 속성을 의미합니다. 외래키는 릴레이션 간의 관계를 나타냅니다. 예를 들어, 학생 테이블과 학과 테이블이 있을 때, 학생 테이블의 학과 속성이 학과 테이블의 기본키를 참조하는 경우, 학과 속성은 외래키가 됩니다.
  • 스키마(Schema): 데이터베이스의 구조를 정의하는 것으로, 테이블의 이름, 속성, 도메인, 제약조건 등을 포함합니다. 스키마는 데이터베이스의 구조를 정의하는 메타데이터입니다.
  • 차수(Degree): 릴레이션의 속성의 수를 의미합니다. 릴레이션의 차수는 릴레이션의 열의 수를 의미합니다.
  • 기수(Cardinality): 릴레이션의 튜플의 수를 의미합니다. 릴레이션의 카디널리티는 릴레이션의 행의 수를 의미합니다. 영문 그대로 읽기도 합니다.

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

RDB
4.1 키의 개념 및 종류

기본키는 메인으로 사용할 키를 말합니다. 고유하고, 유일한 값을 가지는 키로 NULL값을 가질 수 없습니다. 예를 들면, 주민등록번호나, 계좌번호, 전화번호 등을 기본키로 사용할 수 있습니다. 후보키는 기본키를 제외한 고유한 값을 가진 키들을 말합니다. 외래키는 다른 테이블과의 관계를 참고하거나 나타내는 키로, 주로 참조하는 테이블의 기본키를 의미합니다. 여기서 학생 릴레이션과 수강신청 과목 릴레이션은 서로 학번으로 연결되어 있으니 학번이 외래키가 됩니다.

Key
4.2 테이블 관계

테이블 간의 관계는 다음과 같이 나눌 수 있습니다.

  • 1 : 1 관계(One-to-One Relationship): 한 테이블의 레코드가 다른 테이블의 레코드와 1:1로 매칭되는 경우입니다. 예를 들어, 사용자와 학번의 관계를 예로 들 수 있습니다. 각 사용자는 하나의 번호만을 가지며 학번은 하나의 사용자에만 속해야 합니다.
  • 1 : N 관계(One-to-Many Relationship): 한 테이블의 레코드가 다른 테이블의 레코드와 1으로 매칭되는 경우입니다. 예를 들어, 학교와 학생의 관계를 들 수 있습니다. 한 학교에는 여러 학생이 있지만 각 학생은 하나의 학교에만 속하는 것처럼, '일(1)' 쪽의 하나의 레코드가 '다(N)' 쪽의 여러 레코드와 연결될 수 있습니다.
  • N : M 관계(Many-to-Many Relationship): 한 테이블의 레코드가 다른 테이블의 레코드와 N으로 매칭되는 경우입니다. 예를 들어, 학생과 수업의 관계로 설명할 수 있습니다. 한 학생이 여러 수업을 들을 수 있고 한 수업에 여러 학생이 참여할 수 있으므로 N 관계입니다.

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

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

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

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