• Home
  • About
    • back
    • Monu Kim photo

      Monu Kim

      Strike while the iron is hot

    • Learn More
    • Email
    • Instagram
    • Github
  • Posts
    • back
    • All Posts
    • All Tags
    • All Categories
  • Projects

[데이터 모델링] 관계와 식별자

03 Mar 2023

Reading time ~3 minutes

관계

관계는 엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 현태로서나 행위로서 서로에게 연관성이 부여된 상태를 뜻한다. 동사형으로 표현된다.

  • 정의
    • 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가
    • 두 개의 엔터티 사이에 정보의 조합이 발생되는가
    • 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어있는가
    • 업무기술서, 장표에 관계연결을 가능하게 하는 동사(Verb)가 있는
  • 관계와 페어링 : 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것(페어링) 이것의 집합을 논리적으로 표현한 것이 관계
  • 분류와 표기법
    • 관계명 : 엔터티가 관계에 참여하는 형태로 각 관계는 2개의 관계명 및 관점을 가진다.
    • 관계차수 : 1:1, 1:M, M:M (관계 엔터티 이용)
    • 관계선택사양 : 필수참여(Mandatory), 선택참여(Optional)
    • ERD 기준 : 표기 구분을 하지 않는다.
      • 존재에 의한 관계 : 엔터티 간의 상태
      • 행위에 의한 관계 : 엔터티 간에 발생하는 행위
    • UML 기준
      • 연관 관계 : 실선 표기
      • 의존 관계 : 점선 표기
    • 식별자에 따른 분류
      • 식별 관계 : 부모 엔터티의 식별자를 자식 엔터티에서 주식별자로 사용. 약한 엔터티는 부모 엔터티에 종속되어 존재하며 강한 엔터티는 독립적으로 존재한다.
      • 비식별 관계 : 부모 엔터티의 식별자를 자식 엔터티에서 일반 칼럼으로 참조해 사용, 약한 종속 관계 ⇒ 식별 관계만으로 연결되면 주식별자 수가 많아질 수 밖에 없어 관계 강약을 분석하고 자식 엔터티의 독립 pk의 필요성, SQL 복잡성과 개발 생산성을 고려할 필요가 있다.
    • 관계의 읽기
      • 각 / 기준엔터티 / 관계차수 / 관련 엔터티 / 필수 or 선택 / 관계명
        • 각각의 / 사원은 / 한 / 부서에 / 때때로 / 속한다.
        • 각 / 부서에는 / 여러 / 사원이 / 항상 / 소속된다.

식별자

식별자는 엔터티를 구분짓는 논리적인 이름으로 엔터티를 대표할 수 있는 속성을 뜻한다. 엔터티에는 반드시 하나의 유일한 식별자가 존재한다.

  • 특징
    • 유일성 : 주식별자에 의해 엔터티 내에 모든 인스턴스르 유일하게 구분
    • 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수여야 함
    • 불변성 : 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자 값은 변하지 않아야 함
    • 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재해야한 (null X)
  • 분류

    • 대표성 여부에 따른 분류
      • 주식별자(대표성 만족) / 보조 식별자(유일성과 최소성만 만족, 참조 관계 연결에 사용 불가)
    • 스스로 생성 여부에 따른 분류
      • 내부 식별자(자연스럽게 존재하는 식별자) / 외부 식별자(다른 엔터티와의 관계를 통해 생성되는 식별자)
    • 속성의 수에 따른 분류
      • 단일 식별자(하나의 속성) / 복합 식별자(여러 속성)
    • 대체 여부에 따른 분류
      • 본질 식별자(대체될 수 없는 식별자) / 인조 식별자(인위적으로 만들어지는 대체가능한 식별자)
    • DB 키 종류

      • 후보키 : 유일성과 최소성을 만족하는 키
      • 기본키(Primary Key(PK)) : 엔터티를 대표하는 키, 후보키 중 선정됨
      • 슈퍼키 : 유일성만 만족하는 키

      • 대체키 : 기본키를 제외한 나머지 후보키
      • 외래키(Foreign Key(FK)) : 여러 테이블의 기본 키 필드, 참조 무결성을 확인하기 위해 사용됨
        • 참조 무결성 : 타 테이블과 연관된 데이터가, 입력/수정/삭제 시에도 데이터 간 정확한 참조관계를 유지시킴 ; 기본 키와 외래 키 간의 관계가 항상 정확하게 유지됨을 보장
  • 주식별자 도출 기준 : 업무에서 자주 이용되는 속성을 지정, 명칭/내역 등 이름으로 명명되는 것 지양(구분자가 존재하지 않을 경우 일련번호나 코드 등의 새로운 식별자 생성), 복합 식별자로 구성할 경우 너무 많은 속성 포함 지양(주식별자 개수가 많을 경우 새로운 인조식별자를 생성)
  • 식별자와 비식별자 관계
    • 식별자 관계
      • 부모의 주식별자는 자식의 주식별자로 상속
      • null을 허용하지 않음
      • 1:1 (부모 속성을 자식 엔터티가 모두 사용하고 주식별자로 사용)이나 1:M (부모 속성과 다른 부모 엔터티에서 받은 속성을 포함하거나 스스로 갖는 속성으로 주식별자를 구성) 관계
      • 강한 연결관계로 부모에 종속된다. 상속받은 주식별자는 타 엔터티 이전이 필요하다.
      • 문제 : 주식별자 속성이 지속적으로 증가할 경우 복잡성과 오류를 유발할 수 있다.
    • 비식별자 관계
      • 부모로부터 속성을 받아 일반속성으로 사용하는 약한 종속관계, 상속받은 속성을 타 엔터티에 차단해 부모쪽 관계 참여를 선택하는 관계
      • 사용 경우
        • 부모 없는 자식 생성이 가능한 경우
        • 엔터티별로 데이터 생명주기를 다르게 관리하는 경우
        • 여러개 엔터티가 하나로 통합되어 표현되고 각각이 별도의 관계를 갖는 경우
        • 자식 엔터티에서 별도의 주식별자 생성이 더 유리할 경우
      • 문제 : 속성이 자식에게 상속되지 않아 부모 엔터티가지 조인 현상이 발생하면 불필요한 조인이 발생하여 SQL 구문이 길어져 성능을 저하시킬 수 있다.


studydatabasedata modelingsqld Share Tweet +1