DB/데이터베이스 개론

[DataBase] 관계 데이터 모델(Relational Data Model)

진이최고다 2023. 10. 19. 20:48

관계 데이터 모델(Relational Data Model)

 

 

 

관계 데이터 모델의 개념 과 기본 용어


개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델중 하나다. 관계 데이터 모델은 하나의 개체에 대한 데이터를 릴레이션 하나에 담아 데이터베이스에 저장한다. 이와 관련해 릴레이션, 속성과 투플, 도메인, 널, 차수 카디널리티 등 용어가 사용된다.

 

[릴레이션 Relation]

  • 일반적으로 테이블(릴레이션)은 2차원 표의 형태로 데이터를 표현한다.
  • 릴레이션은 행(Tuple)과 열(Attribute)로 구성된다.

[속성 Attribute ]

  • 릴레이션의 열을 나타내며, 각 속성은 고유한 이름을 가지고 있다.
  • 예를 들어, "고객" 릴레이션에서는 '고객아이디, 고객이름, 나이' 등 이 될 수 있다.

[투플 Tuple]

  • 릴레이션의 행을 나타낸다.
  • 투플은 릴레이션 내의 개별 데이터 항목 또는 레코드를 표현한다.

[도메인 Domain]

  • 속성 하나가 가질 수 있는 가능한 값들의 집합을 의미한다.
  • 예를 들어, "등급" 속성의 도메인은 'vip, gold, silver' 등이 될 수 있다.

[널 Null]

  • 어떤 속성 값이나 알려지지 않거나 존재하지 않을 경우 해당 속성에 할당되는 특별한 값이다.
  • 데이터베이스에서 널(Null)은 0 이나 공백 문자와는 다르다.
  • 널은 '데이터 없음' 또는 '알려지지 않음'을 의미한다.

[차수 Degree]

  • 릴레이션에 있는 속성의 수를 나타낸다.
  • 예를 들어, "고객" 릴레이션에서 '고객 아이디, 고객이름, 나이' 세 개라면, 차수는 3이다.

[카디널리티 Cardinality]

  • 릴레이션에 있는 투플의 수를 나타낸다.
  • 예를 들어, "고객" 릴레이션에 4명의 고객정보가 있다면, 이 릴레이션의 카디널리티는 4 가 된다. 

 

 

 

릴레이션과 데이터베이스의 구성


관계 데이터 모델에서 릴레이션은 릴레이션 스키마와 릴레이션 인스턴스로 구성된다.

 

[릴레이션 스키마 Relation Schema]

  • 릴레이션의 구조를 정의하는 메타데이터로, 속성의 이름과 그 속성의 도메인을 포함한다.
  • 일반적으로 '릴레이션 명(속성1, 속성2, ...)' 의 형식으로 표현된다.
  • 고객 릴레이션의 릴레이션 스키마는 '고객아이디, 고객이름, 나이 등)이다. 
  • 릴레이션 내포(intension) 라고도 불린다.

[릴레이션 인스턴스 Relation Instance]

  • 릴레이션 스키마에 따라 특정 시점에서의 릴레이션의 내용이나 데이터를 나타내는 투플의 집합이다.
  • 릴레이션 외연(extension) 이라고도 불린다.

[데이터베이스 스키마 Database Schema]

  • 전체 데이터베이스의 논리적 구조와 제약조건을 정의하는 메타데이터의 집합이다.
  • 데이터베이스에 포함된 모든 릴레이션 스키마, 그리고 릴레이션 간의 관계와 제약 조건등을 포함한다.
  • 데이터베이스 스키마는 데이터베이스의 전체적인 "설계도"로 볼 수 있으며, 일반적으로 데이터베이스 설계 과정에서 결정되며, 자주 변경되지 않는다.

[데이터베이스 인스턴스 Database Instance]

  • 특정 시점에서의 데이터베이스의 실제 데이터 집합이다.
  • 여러 릴레이션 인스턴스들이 모여 하나의 데이터베이스 인스턴스를 형성한다.
  • 시간에 따라 변할 수 있으며, 일반적인 데이터베이스 운영 중에 CRUD 연산에 의해 지속적으로 변화한다.

 

 

 

릴레이션의 특성


관계 데이터 모델의 릴레이션에는 네 가지 특성이 존재한다.

 

[투플의 유일성 Uniqueness of Tuples]

  • 릴레이션에서는 두 개의 동일한 투플(행)이 존재할 수 없다. 이는 각 투플이 릴레이션의 하나의 고유한 사실 또는 정보를 나타낸다.
  • 이러한 유일성은 기본 키(primary key)를 통해 보장된다. 기본 키는 해당 테이블 내에서 각 행을 고유하게 식별할 수 있는 속성(또는 속성의 집합이다.)

 

[투플의 무순서 Order-Independence of Tuples]

  • 릴레이션의 투플들 사이에는 순서가 없다. 즉, 릴레이션에서 투플의 순서는 중요하지 않다.
  • 이는 투플을 삽입, 삭제, 검색할 때 그 순서에 의존하지 않는다는 것을 의미한다.

 

[속성의 무순서 Order-Independence of Attributes]

  • 릴레이션에서 속성(열) 사이에도 순서가 없다. 속성 간의 순서는 릴레이션의 의미나 정의에 영향을 주지않는다.
  • 예를 들어, "고객아이디, 고객이름, 나이" 순서의 속성이나 "나이, 고객이름, 고객아이디" 순서의 속성은 동일한 릴레이션을 나타낸다.

[속성의 원자성 Atomicity of Attributes]

  • 릴레이션의 각 속성 값은 원자적(분해할 수 없는) 하나(원자) 값만 가질 수 있다.
  • 이는 속성 값이 더이상 분해되어 릴레이션의 기본 연산에 사용될 수 없는 단순한 값이어야함을 의미한다. 
  • 예를들어, 주소 속성이 "도시, 주"와 같이 복합 값으로 구성된 경우, 다중 값을 허용하지 않는다.

 

 

 

키의 특성과 종류 


키는 데이터베이스의 릴레이션에서 특정 투플(행)을 고유하게 식별하는 데 사용되는 속성(들)의 집합이다.

 

[키의 특성]

유일성 (Uniqueness) 

  • 키로 선택된 속성(들)의 조합은 릴레이션의 모든 투플에서 유일한 값을 가져야 한다. 
  • 즉, 같은 키 값을 가지는 두 개 이상의 투플이 존재해서는 안된다.

최소성 (Minimality)

  • 키는 불필요한 속성을 포함하고 있지 않아야한다. 이는 키를 구성하는 어떤 속성도 제거하면 유일성이 깨진다는 의미한다.

 

[키의 종류]

슈퍼키 (Super key)

  • 투플을 유일하게 식별하는 하나 이상의 속성들의 집합이다.
  • 유일성의 특성은 만족하지만, 최소성은 만족시키지 않을 수 있다.

후보키 (Candidate Key) 

  • 슈퍼키  중에서 최소성을 만족하는 키이다.
  • 후보키는 릴레이션에서 투플을 고유하게 식별할 수 있는 속성들의 최소 집합이다.

기본키 (Primary Key)

  • 후보키 중에서 특별히 선택된 키로, 릴레이션에서 특정 투플을 고유하게 식별하는 데 사용 된다.
  • 기본키는 NULL 값을 포함할 수 없으며, 항상 유일한 값을 가져야 한다.

대체키 (Alternate Key) 

  • 기본키로 선택되지 않는 후보키를 의미한다. 기본키 이외의 선택이 가능한 키이다.

외래키 (Foreign Key)

  • 한 릴레이션의 속성(들)이 다른 릴레이션의 기본키를 참조할 때 그 속성(들)을 왜래키라고 한다.
  • 관계형 데이터베이스에서 릴레이션 간의 관계를 표현하는 데 사용된다.

 

 

 

관계 데이터 모델의 제약조건


데이터를 정확하고 유효하게 유지하는 무결성을 보장해야 된다는 규칙이다. 개체 무결성 제약조건과 참조 무결성 제약조건이 있다.

 

[개체 무결성 제약조건 Entity Integrity Constraint]

  • 이 제약조건은 릴레이션의 기본키에 관련된 제약조건이다.
  • 개체 무결성 제약조건에 따르면, 기본키 어떤 속성도 NULL 값을 가질 수 없다. 또한 기본키는 항상 그 릴레이션의 각 투플을 고유하게 식별해야한다. 이 말은 기본키에 중복된 값을 가진 투플이 존재해서는 안된다.

[참조 무결성 제약조건 Referential Integrity Constraint]

  • 이 제약조건은 릴레이션 간의 관계에서 외래키에 관련된 제약조건이다.
  • 참조 무결성 제약조건에 따르면, 외래키의 값은 다음 두 가지 중 하나의 조건을 만족해야 한다.
  • 참조하는 릴레이션의 기본키에 해당하는 값과 일치하는 값이거나, NULL 값이어야 한다.
  • 즉, 외래키 값은 반드시 참조하는 릴레이션의 기본키 값 중 하나와 일치하거나, 아니면 NULL 값을 가져야한다. 외래키에 잘못된 값(참조 릴레이션의 기본키 없는값)이 있으면 안된다.
  • 예를 들어, "주문" 릴레이션의 '주문고객' 이 "고객" 릴레이션의 "고객아이디"를 외래키로 참조한다면, "주문" 릴레이션의 '주문고객' 값은 반드시 "고객" 릴레이션의 '고객아이디' 값 중 하나와 일치해야 한다.

 

 

 

출처 : 데이터베이스 개론  3판, 김연희 저자 한빛아카데미

 

데이터베이스 개론 | 김연희 - 교보문고

데이터베이스 개론 |

product.kyobobook.co.kr