SQL

관계형 데이터베이스

lovedeathrobot ㅣ 2023. 7. 8. 02:33

관계형 데이터베이스(Relation Database)란?

 

오늘날 데이터베이스는 크게 관계형 데이터베이스 vs 비관계형 데이터베이스로 구분되어 설명된다.

그 중에서 현재 가장 많이 사용되고 있는 관계형 데이터베이스(Relation Database)에 대하여 알아보자.

 


관계형 데이터베이스의 특징

  • 관계형 데이터베이스는 고정된 행(row)열(column)로 구성된 테이블(Table)에 데이터를 저장한다.
  • 에는 각 열의 데이터 형식에 맞는 데이터가 저장되고,하나의 속성에 대한 정보를 저장한다.
  • 관계형 데이터베이스에는 테이블의 구조와 데이터 타입 등을 사전에 정의한다. 그리고 테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입할 수 있다.
  • 특정한 형식을 지키기 때문에 데이터를 정확히 입력했다면 데이터를 사용할 때에는 매우 편리하다.

 

 


관계형 데이터베이스 관리 시스템

 

 

데이터베이스 관리 시스템(Database Management System)데이터베이스를 관리하기 위한 소프트웨어를 의미하며, DBMS라고도 한다.

여기서 관계형 데이터베이스 관리 시스템을 따로 RDBMS라고 부르기도 한다.

 

관계형 데이터베이스의 대표적인 DBMS는 아래와 같다.

  • MySQL
  • Oracle
  • SQLite
  • MariaDB
  • PostgresSQL

 

▶ 이러한 관계형 데이터베이스에서는 테이블의 관계가 구조화된 데이터의 모음이기 때문에 초창기 관계 데이터베이스 시스템을 위해 만들어진 SQL(구조화된 쿼리 언어)이라는 언어를 사용하므로 관계형 데이터베이스 = SQL 이라고도 한다.

 

 


관계형 데이터베이스의 릴레이션(Relation) 구조

 

학생 릴레이션 테이블 예시

 

튜플(Tuple)

  • 튜플은 릴레이션을 구성하는 각각의 행을 말한다.
  • 행(row), 레코드(record)와 같은 의미이다.
  • 속성의 모임으로 구성되며 튜플의 수를 카디널리티(Cardinality) 또는 기수, 대응수라고 한다.

 

속성(Attirbute)

  • 속성은 데이터베이스를 구성하는 가장 작은 논리적 단위이다.
  • 열(column), 필드(field)와 같은 의미이다.
  • 속성은 개체의 특성을 기술한다.
  • 속성의 수를 디그리(Degree) 또는 차수라고 한다.

 

도메인(Domain)

  • 도메인은 하나의 속성이 취할 수 있는 같은 타입의 원자값들의 집합이다.
  • 도메인 안에서 정의된 속성은 반드시 그 도메인으로부터 값을 취해야 한다.

 

릴레이션 스키마(Relation Schema)

  • 릴레이션의 이름, 각 속성의 이름과 타입, 그리고 속성 값의 도메인을 정의하는,
    릴레이션에 데이터를 넣을 수 있도록 하는 릴레이션 틀이다.

 

릴레이션 인스턴스(Relation Instance)

  • 릴레이션 인스턴스는 릴레이션 스키마에 실제로 저장된 속성의 집합이다.
  • 튜플(Tuple)은 릴레이션 인스턴스의 각각의 행을 나타낸다.

 


릴레이션의 특징

 

  • 각 속성의 값은 도메인에 정의된 값만을 가지며 그 값은 모두 단일 값이어야 한다.
    • 위 테이블에서 홍길동 학생이 2, 4 두 가지의 학년을 가지는 것은 불가.
      반드시 하나의 학년을 가질 수 있음

  • 속성, 튜플들간의 순서는 상관없다.
    • 학번, 이름, 학년, 신장, 학과 속성의 순서는 언제든지 바뀌어도 상관없다.
    • 홍길동, 이순신, 임꺽정, 장보고 튜플의 순서는 언제든지 바뀌어도 상관없다.

  • 릴레이션 내의 중복된 튜플은 허용하지 않는다.

  • 속성의 명칭은 유일해야 하지만, 구성하는 값은 동일할 수 있다.
    • 학번과 신장은 서로 다른 속성이지만, 값이 같을 수는 있다.

  • 튜플을 유일하게 식별하기 위해 속성들의 부분집합을 키로 설정한다.
    • 학번이나 이름이 튜플들을 구분하는 유일한 값인 키가 될 수 있다.

'SQL' 카테고리의 다른 글

DDL(Data Definition Language)  (0) 2023.07.24
정규화(Normalization)와 반정규화(De-Normalization)  (0) 2023.07.13
데이터 모델링(Data Modeling)  (0) 2023.07.11
SQL이란?  (0) 2023.07.07