[데이터베이스] 관계형 데이터 모델 및 데이터베이스(DataBase)

2023. 10. 28. 02:03CS/데이터베이스

관계형 데이터 모델 및 데이터베이스(Database)

 

관계형 데이터 모델은 관계형 DB의 바탕이 되는 데이터 모델이다. 개인 혹은 기업의 필요에 따라 데이터베이스 모델을 선택하여 사용하며 이때 관계형 데이터 모델을 사용한 관계형 DB를 사용한다. 주로 사용하는 모델 및 DB이기에 자세히 알아볼 필요가 있다. 우선 관계형 DB에 대해 알아보기 위해 바탕이 되는 관계형 데이터 모델에 대해 알아보자.

 

관계형 데이터 모델

 

관계형 데이터 모델은 가장 널리 사용되는 데이터 모델로 2차원적인 표를 이용하여 데이터 상호 간의 관계를 표현한다. 기본키(Primary Key)외래키(Foreign Key)로 데이터 간의 관계를 표현하며 대표적인 언어는 SQL이다. 이전 모델인 계층 모델과 망 모델의 복잡한 구조를 단순화시킨 모델이기에 자주 사용한다.

관계형 데이터 모델

 

  • '고객'과 '주문서'는 개체(Entity)를 테이블로 만든 개체 테이블이고 '주문'은 관계(Relationship)를 테이블로 만든 관계 테이블이다.
  • <고객> 테이블의 '고객번호', '성명', '주소'는 <고객> 테이블의 속성(Attribute)이고, <주문> 테이블의 '고객번호', '주문번호'는 <주문> 테이블의 속성, 그리고 <주문서> 테이블의 '주문번호', '품명', '수량', '금액'은 <주문서> 테이블의 속성이다.
  • <고객> 테이블과 <주문서> 테이블은 <주문> 테이블을 관계로 하여 연결되어 있으며 이때 <고객> 테이블에 있는 '고객번호'와 <주문서> 테이블에 있는 '주문번호'는 기본키이고, <주문> 테이블에 있는 '고객번호'와 '주문번호'는 외래키이다.
  • <고객>과 <주문>의 관계는 1:N, 즉 한 명의 '고객'은 여러 개의 '주문'을 신청할 수 있다.
  • <주문서>와 <주문>의 관계는 1:1, 즉 '주문서'는 '주문번호' 1개에 대한 정보만을 가지고 있다.
  • <주문> 테이블의 내용을 가지고 주문 고객의 성명을 찾으려면 <주문> 테이블의 '고객번호'와 같은 '고객번호'를 <고객> 테이블에서 찾으면 되고, 주문 내역을 알려면 '주문번호'와 같은 '주문번호'를 <주문서> 테이블에서 찾으면 된다.

 

관계형 DB

 

1970년 IBM에 근무하던 에드거 F. 코드에 의해 처음 제안되었다. 관계형 DB를 구성하는 개체나 관계를 모두 릴레이션(Relation)이라는 표(Table)로 표현한다. 릴레이션은 개체를 표현하는 개체 릴레이션, 관계를 나타내는 관계 릴레이션으로 구분할 수 있다. 간단하게 생각하면 엑셀 표에 데이터를 저장하는 것이라 보면 된다.

 

<학생> 릴레이션의 구조

 

튜플(Tuple)

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

 

속성(Attribute)

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

 

도메인(Domain)

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

 

릴레이션 스키마

: 릴레이션의 이름, 각 속성의 이름과 타입, 그리고 속성 값의 도메인을 정의하는 릴레이션 틀이다.

 

릴레이션 인스턴스

: 릴레이션 스키마에 실제로 저장되어 있는 데이터의 집합이다.

 

릴레이션의 특징

 

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