WALF
Keep Going Don't Give up
WALF
전체 방문자
오늘
어제
  • 분류 전체보기
    • JAVA
    • Python
    • HTML, CSS
    • Algorithm
      • Concept
      • 구현
      • JAVA
      • Python
      • 프로그래머스 알고리즘 고득점 Kit
    • SQL
    • Git, GitHub
    • CS

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • For Each
  • 데이터 모델의 이해
  • relationship
  • syntax
  • 식별자
  • BOJ
  • SQL
  • 알고리즘
  • Python
  • 시간 복잡도
  • ORD
  • 데이터 모델링의 이해
  • attribute
  • Java
  • SQLD
  • enumerate
  • charat
  • chr
  • 백준
  • Entity

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
WALF

Keep Going Don't Give up

SQL

[SQLD] 데이터 모델링의 이해 - Ⅴ 식별자 (identifier)

2022. 3. 18. 22:08

■ 식별자

하나의 엔터티에 구성되어 있는 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성

하나의 엔터티는 반드시 하나의 유일한 식별자가 존재해야 한다.


■ 식별자 특징

 

★ 주식별자의 특징

유일성 주식별자에 의해 엔터티내에 모든 인스턴스들을 유일하게 구분함 사원번호가 주식별자가 모든 직원들에 대해 개인별로 고유하게 부여됨
최소성 주식별자를 구성하는 속성의 수는
유일성을 만족하는 최소의 수가 되어야함
사원번호만으로도 고유한 구조인데 사원분류코드 + 사원번호로 식별자가 구성된다면, 부 적절한 주식별자 구조임
불변성 주식별자가 한 번 특정 엔터티에 지정되면
그 식별자의 값은 변하지 않아야 함
사원번호의 값이 변한다는 의미는 이전기록이 말소되고 새로운 기록이 발생되는 개념임
존재성 주식별자가 지정되면 반드시 데이터 값이 존재함 (NOT NULL) 사원번호 없는 회사직원은 있을 수 없음

★ 유 최 불 존 

 

외부식별자의 경우 주식별자 특징과 일치하지 않으며 ,

참조무결성 제약조건(Referential Integrity)에 따른 특징을 가지고 있다.


■ 식별자 분류

분류 식별자 설명
대표성
여부
주식별자 엔터티 내에서 각 인스턴스를 구분할 수 있음
타 엔터티와 참족솬계를 연결할 수 있음 (기본키, Primary Key에 해당)
유일성 O 최소성 O 대표성 O
보조식별자 엔터티 내에서 각 인스턴스를 구분할 수 있음
대표성을 갖지 못해 참조관계 연결에 사용되지 않음 (후보키, Candidate Key에 해당)
유일성 O 최소성 O 대표성 X
스스로
생성여부
내부식별자 엔터티 내부에서 스스로 만들어지는 식별자
외부식별자 관계를 통해 유입되는 타 엔터티의 식별자 (외래키, Foreign Key에 해당)
주식별자 속성 또는 일반 속성으로 포함될 수 있음
속성의 수 단일식별자 하나의 속성으로 구성된 식별자
복합식별자 둘 이상의 속성으로 구성된 식별자
대체
여부
본질식별자 업무에 의해 만들어지는 식별자
인조식별자 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자

예시)

 


■ 주식별자 도출기준

- 해당업무에서 자주 이용되는 속성을 주식별자로 지정

- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않음

- 복합식별자를 구성할 경우 너무 많은 속성이 포함되지 않아야 함


 

■ 식별자 관계와 비식별자 관계에 따른 식별자

 

식별자 관계와 비식별자 관계

- 부모 엔터티 식별자 A를 자식엔터티의 외부식별자 A(FK)로 포함할 때 

 

● A(FK)가 주식별자에 포함된 경우 -> 식별자 관계

● A(FK)가 비식별자 속성으로 포함된 경우 -> 비식별자 관계

왼쪽 : 식별자 관계, 오른쪽 : 비식별자 관계

식별자 관계

부모의 주식별자가 자식 엔터티의 주식별자로 상속

 

- 반드시 부모 엔터티가 생성되어야 자식 엔터티가 생성될 수 있다.

- 자식 엔터티의 주식별자가 해당속성만으로 구성되는 경우 -> 1:1관계

- 자식 엔터티의 주식별자가 해당 속성 + a 로 구성되는 경우 -> 1: N관계

위 : 1:N관계 , 아래 : 1:1관계

비식별자 관계

부모의 주식별자가 자식엔터티의 비식별자 속성으로 상속

 

 ▶ 다음의 경우 비식별자 관계가 형성됨

     - 부모 엔터티와 자식 엔터티의 관계가 약한 경우 -> 부모엔터티 없이 자식엔터티가 생성 가능

     - 자식 엔터티의 주식별자로 사용해도 되지만, 일반속성으로 두는 것이 유리할 때

             = 자식 엔터티의 독립적인 주식별자 설정이 필요한 경우 등

자식 엔터티의 독립적인 주식별자 설정이 필요한 경우

식별자와 비식별자 관계의 비교

 


 

'SQL' 카테고리의 다른 글

[SQLD] 데이터 모델과 성능 - Ⅰ성능 데이터 모델링의 정의  (0) 2022.03.18
[SQLD] 데이터 모델링의 이해 - Ⅳ 관계 (Relationship)  (0) 2022.03.13
[SQLD] 데이터 모델링의 이해 - Ⅲ 속성 (Attribute)  (0) 2022.03.13
[SQLD] 데이터 모델링의 이해 - Ⅱ엔터티(Entity)  (0) 2022.03.13
[SQLD] 데이터 모델링의 이해 -Ⅰ데이터 모델의 이해  (0) 2022.03.13
    'SQL' 카테고리의 다른 글
    • [SQLD] 데이터 모델과 성능 - Ⅰ성능 데이터 모델링의 정의
    • [SQLD] 데이터 모델링의 이해 - Ⅳ 관계 (Relationship)
    • [SQLD] 데이터 모델링의 이해 - Ⅲ 속성 (Attribute)
    • [SQLD] 데이터 모델링의 이해 - Ⅱ엔터티(Entity)
    WALF
    WALF

    티스토리툴바