관계 데이터 모델
포스트
취소

관계 데이터 모델

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

  • 릴레이션 (relation)
    • 관계 데이터 모델에서 하나의 개체에 대한 데이터를 담기 위해 사용하는
      행과 열로 이루어진 2차원 테이블
  • 속성 (attribute)
    • 릴레이션의 열
    • 데이터의 속성을 가리킨다.
      • 예시
        • 이름, 성별 등등
    • 영문대로 어트리뷰트라고도 부른다.
  • 투플 (tuple)
    • 릴레이션의 행
    • 속성의 값을 가리킨다.
      • 예시
        • 홍길동, 남성 등등…
  • 도메인 (domain)
    • 속성 하나가 가질 수 있는 모든 값의 집합
      • 예시
        • 성적에 대한 도메인
          • A+, A0,A- 등등…
    • 도메인을 정해두면 그 이외의 값은 허용하지 않는다.
      • 항상 올바른 값만 유지할 수 있다.
        • 무결성과 관련된 사항
    • 가능한 값을 일일이 나열하기는 어렵다.
      • 일반적으로는 속성의 특성을 고려한 데이터 타입으로 정의한다.
        • 예시
          • VARCHAR(20), INT 등등…
  • 널 값 (null value)
    • 릴레이션의 특정 투플의 속성 값을 모르거나,
      적합한 값이 없는 경우에 사용하는 특별한 값
  • 차수 (degree)
    • 하나의 릴레이션에서 사용되는 속성의 전체 개수
    • 모든 릴레이션은 최소 1 이상의 차수를 유지해야 한다.
    • 릴레이션의 차수는 일반적으로 자주 변하지 않는다는 정적인 특징이 있다.
    • 영문대로 디그리라고도 부른다.
  • 카디널리티 (cardinality)
    • 하나의 릴레이션에서 가지고 있는 투플의 전체 개수
    • 투플이 없는 릴레이션도 존재할 수 있다.
    • 릴레이션의 카디널리티는 자주 변한다는 동적인 특징이 있다.
      • 새로운 투플이 삽입되거나 삭제되는 경우가 많기 때문이다.
  • 릴레이선 스키마 (relation schema)
    • 릴레이션의 이름과 릴레이션에 포함된 모든 속성의 이름으로 정의하는 릴레이션의 논리적 구조
    • DBMS가 내부적으로 DDL을 이용하여 정의한다.
    • 글로 표현할 때는 다음과 같이 표기한다.
      • 기본 형식
        • 릴레이션_이름(속성이름1, 속성이름2, 속성이름3, ...)
      • 사용 예시
        • 고객(고객아이디, 고객이름, 나이, 등급, 직업, 적립금)
    • 릴레이션 내포(relaction intension)라고도 부른다.
  • 릴레이션 인스턴스 (relation instance)
    • 어느 한 시점에 릴레이션에 존재하는 투플들의 집합
    • 간단하게 릴레이션으로 줄여서 부르기도 한다.
    • 릴레이션 외연(relation extension)이라고 부르기도 한다.
  • 데이터베이스 스키마 (database schema)
    • 데이터베이스를 구성하는 릴레이션들의 스키마를 모아놓은 것
    • 데이터베이스의 전체 구조를 의미한다.
    • 특정 데이터베이스 스키마를 설계한다는 것은
      필요한 모든 릴레이션의 스키마를 모두 정의하는 것을 의미한다.
  • 데이터베이스 인스턴스 (database instance)
    • 어느 한 시점에서 데이터베이스에 저장된 데이터 내용의 전체 집합
    • 데이터베이스를 구성하는 모든 릴레이션의 인스턴스를 모아놓은 것

릴레이션의 특성

투플의 유일성

  • 하나의 릴레이션에는 동일한 투플이 존재할 수 없다.
  • 키 (key)
    • 투플을 유일하게 구별하기 위해 선정되는 속성 또는 속성들의 모임

투플의 무순서

  • 하나의 릴레이션 사이에서 투플 사이의 순서는 무의미하다.
  • 릴레이션에는 투플이 삽입 순서대로 저장된다.
  • 효율적인 처리를 위해 투플의 순서를 임의로 바꾸기도 한다.

속성의 무순서

  • 하나의 릴레이션에서 속성 사이의 순서는 무의미하다.
  • 하나의 릴레이션에는 같은 이름의 속성은 존재할 수 없다.
  • 속성의 이름은 속성의 의미가 명확하게 드러날 수 있도록 짓는게 중요하다.

속성의 원자성

  • 속성 값으로 원자 값만 사용할 수 있다.
    • 예시
      • 이름
        • 옳은 경우
          • “홍길동”
        • 옳지 않는 경우
          • “홍길동,둘리”
  • 원자 값
    • 더는 분해할 수 없는 하나의 값

키 (key)

  • 관계 데이터 모델에서 정의되는 제약조건
  • 릴레이션에 포함된 투플들을 유일하게 해주는 역할
  • 키는 단일 속성 또는 복합 속성으로 이루어져 있다.

슈퍼키 (super key)

  • 유일성을 만족하는 속성 또는 속성들의 집합
  • 유일성 (uniqueness)
    • 키가 갖추어야 하는 기본 특성
    • 하나의 릴레이션에서 키로 지정된 속성의 값은 투플마다 달라야 하는 것을 의미 한다.
    • 키 값이 같은 투플은 존재할 수 없다.
  • 수퍼키 중에서는 불필요한 속성의 값까지 확인하는 비효율적인 작업이 필요한 경우도 있다.
    • 투플 하나를 유일하게 구별하려는 경우
    • 두 개의 투플이 서로 다름을 판단하려는 경우

후보키 (candidate key)

  • 유일성과 최소성을 만족하는 속성 또는 속성들의 집합
  • 최소성 (minimality)
    • 키를 구성하고 있는 여러 속성 중에서 하나라도 없으면 투플을 유일하게 구별할 수 없는,
      꼭 필요한 최소한의 속성들로만 키를 구성하는 특성
  • 하나의 속성으로 구성된 키는 당연히 최소성을 만족한다.
  • 새로운 투플이 삽입되거나 기존 투플의 속성 값이 바뀌어도 유일성과 최소성이 유지되어야 한다.
  • 후보키를 선정할 때는 릴레이션 인스턴스만 보고 유일성과 최소성을 판단해서는 안 된다.
    • DB가 사용될 현실 세계의 환경까지 염두에 두고
      속성의 본래 의미를 정확히 이해한 후 수퍼키와 후보키를 선별해야 한다.

기본키 (primary key)

  • 데이터베이스 설계자가 데이터베이스 관리자가 여러 후보키 중에서 기본적으로 사용할 키
  • 릴레이션에서 투플을 구별하기 위해 여러 개의 후보키를 모두 사용할 필요는 없다.
  • 후보키가 한 개만 존재하면 해당 후보키를 선택하면 된다.
  • 후보키가 여러 개인 경우 데이터베이스 사용 환경을 고려하여 적합한 것을 선택하면 된다.
  • 널 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적합하다.
  • 값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적합하다.
  • 단순한 후보키를 기본키로 선택한다.
    • 적은 개수로 구성된 후보키가 당연히 이해하기도 쉽고 처리하기도 쉽다.

대체키 (alternate key)

  • 기본키로 선택되지 못한 후보키들
  • 대체키는 기본키를 대신할 수는 있지만 기본키가 되지 못하고 탈락된 이유가 있을 수 있다.

외래키 (foreign key)

  • 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키
  • 다른 릴레이션의 기본킬를 그대로 참조하는 속성의 집합
  • 외래키가 되는 속성과 기본키가 되는 속성의 이름은 달라도 된다.
  • 외래키 속성의 도메인과 참조되는 기본키 속성의 도메인은 반드시 같아야 한다.
    • 도메인이 같아여 연관성 있는 투플을 찾기 위한 비교 연산이 가능하기 때문이다.
  • 하나의 릴레이션에는 외래키가 여러개 존재할 수도 있다.
  • 외래키를 기본키로 사용할 수도 있다.
  • 외래키를 포함하여 기본키를 구성할 수도 있다.
  • 외래키 자신이 속한 릴레이션의 기본키를 참조하도록 외래키를 정의할 수도 있다.
  • 외래키는 기본키를 참조하지만 기본키가 아니기 때문에 널 값을 가질 수 있다.
  • 관련 용어
    • 참조하는 릴레이션
      • 외래키를 가진 릴레이션
    • 참조되는 릴레이션
      • 기본키를 가진 릴레이션

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

무결성 제약조건 (integrity constraint)

  • 관계 데이터 모델에서 정의하고 있는 기본 제약 사항
  • 어느 시점에 DB에 저장된 데이터를 의미하는 DB 상태 또는 DB 인스턴스가 항상 지켜야 하는 중요한 규칙
  • DB가 삽압/수정/삭제 연산으로 상태가 변하더라도 반드시 지켜져야 하는 규칙
  • 무결성
    • 데이터의 결함이 없는 상태
    • 데이터를 정확하고 유효하게 유지되는 상태
    • 무결성을 유지하기 위해 필요한 세부 규칙도 정의하고 있다.
  • DB에 저장된 데이터의 무결성을 보장하고, DB의 상태를 일관되게 유지하는 것이 목적이다.
  • 무결성과 보안의 유사점
    • DB 내부의 데이터를 보호한다.
  • 무결성과 보안의 차이점
    • 무결성
      • 권한이 있는 사용자의 잘못된 요구에 의해 데이터가 부정확해지지 않도록 보호하느 ㄴ것
    • 보안
      • 권한이 없는 사용자로부터 데이터를 보호하는 것
  • 종류
    • 개체 무결성 제약조건
      • 기본키를 구성하는 모든 속성 값은 널 값을 가질 수 없다.
    • 참조 무결성 제약조건
      • 외래키는 참조할 수 없는 값을 가질 수 없다.

개체 무결성 제약조건 (entity integrity constraint)

  • 기본키를 구성하는 모든 속성은 널 값을 가지면 안 된다는 규칙
  • 개체 무결성 제약조건을 만족시키려면
    새로운 투플이 삽입되는 연산과
    기존 투플의 기본키 속성 값이 변경되는 연산이 발생할 때
    기본키에 널 값이 포함되는 상황에서는 연산의 수행을 거부하게 한다.
    • DBMS가 자동으로 수행하니 새로운 릴레이션을 생성할 때마다
      기본키를 어떤 속성들로 구성할 것인지 DBMS에 알려주면 된다.

참조 무결성 제약조건 (referential integrity constraint)

  • 외래키는 참조할 수 없는 값을 가질 수 없다는 규칙
  • 외래키가 자신이 참조하는 릴레이션의 기본키와 상관이 없는 값을 가지게 되면
    두 릴레이션을 연관시킬 수 없으므로 외래키의 의미가 없어진다.
    • 외래키는 자신이 참조하는 릴레이션에 기본키 값으로 존재하는 참조 가능한 값만 가질 수 있다.
  • 널 값을 가진다고 해서 참조 무결성 제약조건을 위반한 것으로 판단해서느 ㄴ안된다.
  • DB의 상태가 변해도 참조 무결성 제약조건을 만족시켜야 한다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.