IT/SQLD(SQL개발자)

[SQLD] 식별

pandada 2019. 6. 11. 17:45
반응형

식별자란(Identifiers)

 

식별자란?!

  - 식별자의 개념을 알기 위해선 일단은 엔터티와 인스턴스의 개념을 명확히 알고있어야한다. 

  - 엔터티 -> 인스턴스들의 집합. 

  - 여러 개의 집합체를 담고 있는 하나의 통에서 각각을 구분할 수 있는 논리적인 이름이 필요하다. 이로인해 생긴 개념이 식별자이다. 

  - 하나의 엔터티에 구성되어 있는 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성을 의미하며 하나의 엔터티는 반드시 하나의 유일한 식별자가 존재해야한다. 

  - 식별자는 업무적으로 구분이 되는 정보로 논리데이터 모델링 단계에서 사용한다.

  - 엔터티내에서 인스턴스들을 구분할 수 있는 구분자.

 

특징

* 주식별자 특징

 특징

내용 

비고 

 유일성

 주 식별자에 의해 엔터티 내에 모든 인스턴스들을 유일하게 구분한다.

Ex) 사원 번호가 주 식별자가 모든 직원들에 대해 개인별로 고유하게 부여된다. 

 최소성 

 주 식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다. 

Ex) 사원번호로도 충분한데 다른 식별자가 구성될 경우 

 불변성 

 주 식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 한다. 

Ex) 사원번호의 값이 변하면 안된다는 것. 

 존재성

주 식별자가 지정되면 반드시 데이터 값이 존재해야 한다.

(Null 값이 들어오면 안됨) 

Ex) 사원번호가 없는 직원은 없다. 

 

* 외부식별자 특징

  - 주 식별자 특징과 일치하지 않으며 참조무결성 제약조건에 따른 특징을 가지고 있다.

  - 자기 자신의 엔터티에서 필요한 속성이 아니라 다른 엔터티와의 관계를 통해 자식 쪽에 엔터티에 생성되는 속성

 

분류

 분류

식별자 

설명 

 대표성 여부

주 식별자 

 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자.

 타 엔터티와 참조관계를 연결할 수 있는 식별자

보조 식별자 

 주 식별자와 같으나 대표성을 가지지 못해 참조관계 연결이 불가능한 식별자 

 스스로 생성 여부 

내부 식별자 

 엔터티 내부에서 스스로 만들어 지는 식별자 

외부 식별자 

 타 엔터티와의 관계를 통해서 타 엔터티로부터 받아오는 식별자 

 속성의 수 

단일 식별자 

 하나의 속성으로 구성된 식별자 

복합 식별자 

 둘 이상의 속성으로 구성된 식별자 

 대체 여부 

본질 식별자 

 업무에 의해 만들어지는 식별자 

인조 식별자 

 업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자 

 

 

< 외부식별자와 보조식별자의 분류 >

 

주 식별자 도출기준 

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

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

  -  복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.

 

식별자 관계

  - 자식엔터티의 주식별자로 부모의 주식별자가 상속되는 경우.

  * 1:1관계

  - 부모로부터 받은 속성을 자식엔터티가 모두 사용하고 그것만으로 주식별자로 사용할 경우

  * 1:M관계

  - 부모로부터 받은 속성을 포함하여 다른 부모엔터티에서 받은 속성을 포함하거나 스스로 가지고 있는 속성과 함께 주 식별자로 구성되는 경우

 

비 식별자 관계 

  - 부모엔터티로부터 속성을 받았지만 자식엔터티의 주 식별자로 사용하지 않고 읽반적인 속성으로만 사용하는 경우

  1) 자식엔터티에서 받은 속성이 반드시 필수가 아니어도 무방하기 때문에 부모 없는 자식이 생성될 수 있는 경우

  2) 엔터티별로 데이터의 생명주기(Life cycle)를 다르게 관리할 경우

  3) 여러 개의 엔터티가 하나의 엔터티로 통합되어 표현되었는데 각각의 엔터티가 별도의 관계를 가질 때 (엔터티가 통합되면서 원래 식별자관계가 비 식별자관계로 될 수 밖에 없다.)

  4) 자식엔터티에 주 식별자로 사용하여도 되지만 자식엔터티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때 비 식별자 관계에 의한 외부식별자로 표현한다.

 

 

주의!!! 식별자 관계로만 설정할 경우 부모에서 자식으로 식별자 관계로 연결이 되면 주 식별자의 속성의 수가 많아지게 됩니다! 이를 방지할것!

 

 

비 식별자관계 설정 고려사항 

< 비 식별자 관계 설정 고려사항 >

 

중요!!! 자식엔터티의 독립된 주 식별자 구성이 필요한지를 분석하는 부분이 중요함! 

독립적으로 주 식별자를 구성한다는 의미는 업무적 필요성과 성능상 필요여부를 모두 포함한다. 

 

 

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

항목 

식별자 관계 

비식별자 관계 

목적 

 상한 연결 관계 표현 

 약한 연결 관계 표현 

자식 주 식별자 영향 

 자식 주 식별자의 구성에 포함됨 

 자식 일반 속성에 포함됨 

표기법 

 -> (실선)

 ---->(점선) 

연결 고혀 사항 

 - 반드시 부모엔터티 종속

 - 자식 주 식별자 구성에 부모 주 식별자 포함 필요

 - 상속받은 주 식별자 속성을 타 엔터티에 이전 필요 

 - 약한 종속관계

 - 자식 주 식별자 구성을 독립적으로 구성

 - 자식 주 식별자 구성에 부모 주 식별자 부분 필요

 - 상속받은 주 식별자 속성을 타 엔터티에 차단 필요

 -  부모 쪽의 관계 참여가 선택 관계

 

 

반응형

'IT > SQLD(SQL개발자)' 카테고리의 다른 글

[SQLD] 성능 데이터 모델링의 개요  (0) 2019.06.15
[SQLD] 데이터 모델링관점과 분류  (0) 2019.06.13
[SQLD] 관계(Relationship)  (0) 2019.06.10
[SQLD] 속성(Attribute)  (0) 2019.06.09
[SQLD] 엔터티(Enterty)  (0) 2019.06.08