안녕하세요, 똑똑한개발자에서 백엔드 개발을 하고 있는 권창식입니다.
벌써 3번째 데이터베이스 이야기입니다.😃
오늘은 데이터베이스 관계의 개념에 대해 소개해드리고 자 합니다.


관계의 정의

관계는 개체와 개체 사이의 논리적인 연결을 의미합니다.

  • 관계에는 개체 간의 관계와 속성 간의 관계가 있습니다.


관계의 형태

  • 1:1(One To One) : 개체 집합 A의 각 원소가 개체 집합 B의 원소 한 개와 대응하는 관계입니다.
  • 1:N(One To Many) : 개체 집합 A의 각 원소는 개체 집합 B의 원소 여러 개와 대응하고 있지만, 개체 집합 B의 각 원소는 개체 집합 A의 원소 한 개와 대응하는 관계입니다.
  • N:M(Many To Many) : 개체 집합 A의 각 원소는 개체 집합 B의 원소 여러 개와 대응하고, 개체 집합 B의 각 원소도 개체 집합 A의 원소 여러 개와 대응하는 관계입니다.


관계의 종류

  • 종속관계 : 두 개체 사이의 주, 종 관계를 표현한 것으로 식별 관계와 비식별 관계가 있습니다.
  • 중복 관계 : 두 개체 사이에 2번 이상의 종속 관계가 발생하는 관계입니다.
  • 재귀 관계 : 개체가 자기 자신과 관계를 갖는 것으로, 순환 관계라고도 합니다.
  • 배타 관계 :
    • 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계로, 배타 AND 관계와 OR 관계로 구분합니다.
    • 배타 AND 관게는 하위 개체들 중 속성이나 구분자 조건에 따라 하나의 개체만을 선택할 수 있고, 배타 OR 관계는 하나 이상의 개체를 선택할 수 있습니다.


관계형 데이터베이스의 개요

  • 1970년 IBM에 근무하던 코드(E. F. Codd)에 의해 처음 제안되었습니다.
  • 관계형 데이터베이스를 구성하는 개체나 관계를 모두 Relation이라는 표(Table)로 포현합니다.
  • Relation은 개체를 표현하는 개체 Relation, 관계를 나타내는 관계 Relation으로 구분할 수 있습니다.
  • 장점 : 간결하고 보기 편리하며, 다른 데이터베이스로의 변환이 용이합니다.
  • 단점 : 성능이 다소 떨어집니다.


관계형 데이터베이스의 Relation 구조

Relation은 데이터들을 표(Table)의 형태로 표현한 것으로 구조를 나타내는 Relation 스키마와 실제 값들인 Relation 인스턴스로 구성됩니다.


튜플(Tuple)

  • 튜플은 Relation을 구성하는 각각의 행을 말합니다.
  • 튜플은 속성의 모임으로 구성됩니다.
  • 파일 구조에서 레코드와 같은 의미입니다.
  • 튜플의 수를 카디널리티(Cardinality) 또는 기수, 대응수라고 합니다.


속성(Attribute)

  • 속성은 데이터베이스를 구성하는 가장 작은 논리적 단위입니다.
  • 파일 구조상의 데이터 항목 또는 데이터 필드에 해당됩니다.
  • 속성은 개체의 특성을 기술합니다.
  • 속성의 수를 디그리(Degree) 또는 차수라고 합니다.


도메인(Domain)

  • 도메인은 하나의 속성이 취할 수 있는 같은 타입의 원자값들의 집합입니다.
  • 도메인은 실제 속성 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데에도 이용됩니다.


Relation의 특징

  • 한 Relation에는 똑같은 튜플이 포함될 수 없으므로 Relation에 포함된 튜플들은 모두 상이합니다.
  • 한 Relation에 포함된 튜플 사이에는 순서가 없습니다.
  • 튜플들의 삽입, 삭제 등의 작업으로 인해 Relation은 시간에 따라 변합니다.
  • Relation 스키마를 구성하는 속성들 간의 순서는 중요하지 않습니다.
  • 속성의 유일한 식별을 위해 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 있을 수 있습니다.
  • Relation을 구성하는 튜플을 유일하게 식별하기 위해 속성들의 부분집합을 키(Key)로 설정합니다.
  • 속성의 값은 논리적으로 더 이상 쪼갤수 없는 원자값만을 저장합니다.


NoSQL

  • 비관계형 타입의 데이터를 저장할때 주로 사용되는 데이터베이스 시스템입니다.
  • 관계형 데이터베이스와 다르게 비관계형 이기 때문에 데이터들을 저장하기 전에 정의 할 필요가 없습니다.
  • MongoDB, Redis, Cassandra 등이 가장 대표적인 NoSQL 데이터 베이스입니다.

SQL(RDBMS) VS NoSQL

SQL

  • 장점
    • 관계형 데이터베이스는 데이터를 더 효율적으로 그리고 체계적으로 저장할 수 있고 관리 할 수 있습니다.
    • 미리 저장하는 데이터들의 구조(테이블 스키마)를 정의 함으로 데이터의 완전성이 보장됩니다.
    • 트랜잭션(transaction)
  • 단점
    • 테이블을 미리 정의해야 함으로 테이블 구조 변화 등에 덜 유연합니다.
    • 테이블 구조가 미리 정의 되어 있다보니 단순히 서버를 늘리는것 만으로 확장 하기가 쉽지 않고 서버의 성능 자체도 높여야 합니다.
    • 정형화 된 데이터들 그리고 데이터의 완전성이 중요한 데이터들을 저장하는데 유리합니다.

NoSQL

  • 장점
    • 데이터 구조를 미리 정의하지 않아도 됨으로 저장하는 데이터의 구조 변화에 유연합니다.
    • 확장하기가 비교적 쉽습니다.. 그냥 서버 수를 늘리면 됩니다.(scale out)
    • 확장 하기가 쉽고 데이터의 구조도 유연하다 보니 방대한 양의 데이터를 저장하는데 유리합니다.
  • 단점
    • 데이터의 완전성이 덜 보장됩니다.
    • 트랜잭션이 안되거나 비교적 불안정합니다.
changsik.kwon's profile image

changsik.kwon

2021-07-22 18:00

Read more posts by this author