릴레이션 개념과 실습

23.11.26

    데이터베이스
Relation Schema example

개념

릴레이션은 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것이다.

image

릴레이션은 관계 데이터 모델의 기본 용어중 하나이다.

관계 데이터 모델이란 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델로, 개념 세계의 데이터를 데이터베이스에 저장하는 구조로 표현하는 작업이다.

image

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

  • 릴레이션
  • 속성
    • 릴레이션의 열, 애트리뷰트
  • 튜플
    • 릴레이션의 행
  • 도메인
    • 하나의 속성이 가질 수 있는 모든 값의 집합
    • 속성 값을 입력 및 수정할 때 적합성의 판단의 기준이 됨(ex: Int)
    • 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의
  • 널(null)
    • 속성 값을 아직 모르거나 해당되는 값이 없음을 표현
  • 차수(degree)
    • 하나의 릴레이션에서 속성의 전체 개수
  • 카디널리티
    • 하나의 릴레이션에서 튜플의 전체 개수

릴레이션의 구성

  • 릴레이션 스키마(relation schema)
    • 릴레이션의 논리적 구조
    • 릴레이션의 이름과 릴레이션에 포함된 모든 속성 이름으로 정의
    • 예) 고객(고객아이디, 고객이름, 나이, 등급, 직업, 적립금)
  • 릴레이션 인스턴스
    • 어느 한 시점에 릴레이션에 존재하는 튜플들의 집합

릴레이션의 특성

  • 튜플의 유일성
    • 하나의 릴레이션에 동일한 튜플이 존재할 수 없다.
  • 튜플의 무순서
    • 하나의 릴레이션에 튜플 사이의 순서는 무의미하다.
  • 속성의 무순서
    • 하나의 릴레이션에 속성 사이의 순서는 무의미하다.
  • 속성의 원자성
    • 속성 값으로 원자 값만 사용할 수 있다.

  • 릴레이션에서 튜플들을 유일하게 구별하는 속성 또는 속성들의 집합
  • 특성
    • 유일성: 하나의 릴레이션에서 모든 튜플은 서로 다른 키 값을 가져야 함
    • 최소성: 최소한의 속성들로만 키를 구성
  • 종류
    • 슈퍼키: 유일성을 만족하는 속성 또는 속성들의 집합
    • 후보키: 유일성과 최소성을 만족하는 속성 또는 속성들의 집합
    • 기본키: 후보키 중에서 기본적으로 사용하기 위해 선택한 키
      • 널값을 가질 수 있는 속성이 포함된 후보키는 부적합
      • 값이 자주 변경될 수 있는 속성이 포함된 후보키는 부적합
      • 단순한 후보키를 선택
    • 대체키: 기본키로 선택되지 못한 후보키
    • 외래키: 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
      • 하나의 릴레이션에 외래키가 여러개 존재할 수 있고, 외래키를 기본키로 사용할 수 있다.
      • 같은 릴레이션의 기본키를 참조하는 외래키도 정의할 수 있다. 외래키 속성은 널 값을 가질 수도 있다.(ex: 하나의 릴레이션에 고객아이디를 기반으로 한 추천고객 속성)

image

무결성 제약조건

  • 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙
  • 무결성: 데이터를 결함이 없는 상태, 즉 정확하고 유효하게 유지
  • 제약조건
    • 개체 무결성 제약조건
      • 기본키를 구성하는 모든 속성은 널 값을 가질 수 없다.
    • 참조 무결성 제약조건
      • 외래키는 참조할 수 없는 값을 가질 수 없다.
      • 외래키 속성이 널 값을 가진다고 해서 참조 무결성 제약 조건을 위반하는 것은 아님(ex: 회원의 계정이 삭제되어 다른 릴레이션에서 NULL 값을 가지고 있는 경우)

실습

ERD를 릴레이션 스키마로 변환하는 규칙이 존재한다.

  1. 모든 개체는 릴레이션으로 변환
  2. 다대다 관계는 릴레이션으로 변환
  3. 일대다 관계는 외래키로 표현
  4. 일대일 관계는 외래키로 표현
  5. 다중 값 속성은 릴레이션으로 변환

모든 개체는 릴레이션으로 변환한다.

  • 개체의 이름 → 릴레이션의 이름
  • 개체의 속성 → 릴레이션의 속성
  • 개체의 키 속성 → 릴레이션의 기본키
  • 개체의 속성이 복합 속성인 경우에는 복합 속성을 구성하고 있는 단순 속성만 릴레이션의 속성으로 변환

예시

  • ERD

image

  • 릴레이션 스키마

image

지난 ERD 개념과 실습에서 만든 ERD를 릴레이션 스키마로 변환해보자. 이 규칙을 적용해 아래와 같이 만들 수 있다.

image

다대다 관계는 릴레이션으로 변환한다.

  • 관계의 이름 → 릴레이션 이름
  • 관계의 속성 → 릴레이션 속성
  • 관계에 참여하는 개체를 규칙 1에 따라 릴레이션으로 변환하고, 이 릴레이션의 기본키를 관계 릴레이션에 포함시켜 외래키로 지정

이 규칙에 따라 변환하면 상품과 회원 사이의 주문 관계를 릴레이션으로 만들 수 있다. 주문 릴레이션의 기본키는 주문번호가 될수 있고, 회원아이디와 상품번호를 외래키로 삼아 기본키를 만들 수 있다.

여기서는 회원 아이디와 상품번호를 외래키로 지정한다.

image

일대다 관계는 외래키로 표현한다.

  • 일대다 관계에서 1측 개체 릴레이션의 기본키를 n측 개체의 릴레이션에 포함시켜 외래키로 지정
  • 관계의 속성들도 n측 개체 릴레이션에 포함시킴
  • 약한 개체가 참여한다면 외래키를 포함해 기본키를 지정한다.

image

일대일 관계는 외래키로 표현한다.

  • 일반적인 일대일 관계는 외래키를 서로 주고 받는다.
    • 관계에 참여하는 개체 릴레이션들이 서로의 기본키를 주고 받아 외래키로 지정
    • 관계의 속성들도 모든 개체 릴레이션에 포함시킴
    • 불필요한 데이터 중복이 발생할 수 있음
  • 필수적으로 참여하는 개체 릴레이션만 외래키를 받는다.
    • 관계에 필수적으로 참여하는 개체 릴레이션에만 외래키를 포함시킴
    • 관계의 속성들은 관계에 필수적으로 참여하는 개체 릴레이션에 포함시킴
  • 모든 개체가 필수적으로 참여하면 릴레이션을 하나로 합친다.
    • 관계에 참여하는 개체 릴레이션들을 하나의 릴레이션으로 합쳐서 표현
    • 관계의 이름을 릴레이션 이름으로 사용하고 관계에 참여하는 두 개체의 속성들을 관계 릴레이션에 모두 포함시킴
    • 두 개체 릴레이션의 키 속성을 조합하여 관계 릴레이션의 기본키로 지정

현재 ERD에는 이런 관계가 존재하지 않음.

다중 값 속성은 릴레이션으로 변환한다.

  • 다중 값 속성과 함께 그 속성을 가지고 있던 개체 릴레이션의 기본키를 외래키로 가져와 새로운 릴레이션에 포함시킴
  • 새로운 릴레이션의 기본키는 다중 값 속성과 외래키를 조합하여 지정

마찬가지로 현재 ERD에 적용할 사항 없음.

기타 고려 사항

  • 모든 관계를 독립적인 릴레이션으로 변환할 수 있다.
    • 속성이 많은 관계는 유형에 상관없이 릴레이션으로의 변환을 고려할 수 있음
  • 개체가 자기 자신과 관계를 맺는 순환 관계도 기본 규칙을 그대로 적용

릴레이션 스키마 변환 규칙을 이용해 ERD를 릴레이션으로 변환한 결과

image

image

참고자료

일론 머스크

Hustle-dev

It is possible for ordinary people to choose to be extraordinary.

Copyright © 2023. hustle-dev. All rights reserved.Designed by Julie