본문 바로가기

SQLD · DB

[ SQLD ] 데이터 모델링의 이해 240729

속성의 분류

- 속성의 특성에 따른 분류

 

1) 기본 속성

가장 일반적인 속성으로 원래의 업무로부터 유래한 속성이다.

 

2) 설계 속성

( 하나의 ) 엔터티 내에 여러 개의 인스턴스가 있을 때

각 인스턴스를 식별할 수 있는 속성이 기본 키다.

하나의 속만으로 기본 키가 될 수 있고,

여러 개의 속성이 합쳐져 기본 키가 될 수 있다.

단, 원래부터 업무를 위해 존재했던 속성만으로 각 인스턴스를 식별할 수 없다면

일련번호와 같은 속성을 새로 만드는데 이런 속성을 설계 속성이라고 한다.

설계 속성: 데이터 모델링을 위해 새로 만든 속성 ( 주로 코드 형태 )

 

3) 파생 속성

다른 속성들로부터 유도된 속성 ( 합계, 평균 등과 같은 주로 통계 관련 ) 이다.

가급적 적게 정의하는 것이 좋다.

 

속성의 분류

※ 실무에서의 엔터티는 테이블을 의미한다.

- 엔터티의 구성 방식에 따른 분류

PK ( Primary Key ) 속성 - 엔터티의 ( 각 ) 인스턴스를 구별할 수 있는 속성

FK ( Foreign Key ) 속성 - 다른 엔터티의 PK 를 참조하는 속성이다.

일반 속성은 그 외의 속성이다. ( PK 와 FK 를 제외한 나머지 속성 )

 

학생 엔터티의 속성에 학번, 나이, 학년, 학과명이 있고,

학생 엔터티의 PK는 학번, FK는 학과명이다.

학과명은 학과 엔터티의 기본 키를 참조하고 있다.

학과 엔터티의 기본 키 ( PK ) 인 학과명이

학생 엔터티에서는 학과를 참조하는 외래 키 ( FK ) 로 참조된다.

 

식별자 ( Identifier )

식별자의 분류

분류 식별자 설명
대표성 주식별자 엔터티 내에서 각 인스턴스를 구분할 수 있다 → Primary Key 에 해당
학계에서의 개념적 모델링에서는 ER 다이어그램에서 식별자 라는 용어를 사용했고,
논리적 모델링에서는 테이블을 만들고, 엔터티의 식별자가 테이블의 Primary Key 가 된다고 했다.
실무에서는 개념적 모델링과 논리적 모델링을 명확히 구분하지 않고,
주식별자라고 말하는 것이 Primary Key가 된다고 생각하면 된다.

테이블과 테이블을 연결할 때 PK가 기준이 되어 다른 테이블과 관계를 맺게 된다.
다른 엔터티와 참조관계를 연결할 수 있다.
보조식별자 엔터티 내에서 각 인스턴스를 구분할 수 있다.
대표성을 갖지 못해 참조관계 연결에 사용되지 않음 ( Candidate Key 에 해당 )
→ PK가 될 수 있었으나 설계자의 선택을 받지 못해 탈락함
목적 내부식별자 엔터티 내부에서 스스로 만들어지는 식별자다.
외부식별자 Foreign Key 다.
관계를 통해 유입되는 다른 엔터티의 식별자 ( Foreign Key 에 해당 )
※ 외부에서 온 식별자 ( 다른 엔터티의 PK ) 가 아닌 외부의 ( 다른 엔터티의 ) 식별자 라고 해석하는 것이 좋다고 한다.
속성수 단일식별자 하나의 속성으로 구성된 식별자
복합식별자 둘 이상의 속성으로 구성된 식별자
본질 본질식별자 원래부터 업무에 필요한 속성이 엔터티 내에서 각 인스턴스를 구분할 수 있기 때문에
식별자가 되고, 이 식별자를 본질식별자라고 한다.
인조식별자 1. 원조식별자가 없을 경우
2. 원조식별자가 있지만 복잡한 구성을 가지고 있을 경우
( 여러 개의 속성이 합쳐져 식별자가 될 경우 → 복합식별자 )
에 해당하면 식별자를 만드는데, 이렇게 만들어진 인위적인 식별자를 인조식별자라고 한다.

 

식별자의 특징

1) 유일성: 주식별자에 의해 엔터티 내의 각 인스턴스들을 모두 유일하게 구분할 수 있어야 한다.

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

예를 들어 주민등록번호 만들어 ( 하나의 ) 사람을 구별할 수 있는데 ( 유일성 )

구태여 주민등록번호와 이름을 합쳐 ( 하나의 ) 사람을 구별할 수 있는 주식별자를 지정할 필요가 없다.

→ 주민등록번호만으로 유일성이 만족되면 ( 주민등록번호, 이름 ) 은 주식별자가 아니다.

3) 불변성: 주식별자가 정해지면, 그 식별자의 값은 변하지 않아야 한다.

→ 주식별자인 주민등록번호의 값이 변한다는 의미는 이전기록이 말소되고, 새로운 기록이 발생되는 개념이다.

4) 주식별자를 정할 때는 유일성과 함께 존재성을 반드시 만족시켜야 한다.

사람을 유일하게 구별할 수 있는 값이 주민등록번호인데

존재하는 사람이라면 주민등록번호가 없을 수는 없다.

 

주식별자의 요건은 Unique ( 유일성 ) and Not Null ( 존재성 ) 이다.

 

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

 

학생 엔터티가 여러 인스턴스들을 포함할 때 학번 속성만으로

( 하나의 ) 인스턴스를 콕 찝어낼 수 있는지 즉 어떤 인스턴스를 한 번에 식별할 수 있는지에 따라

해당 속성 ( 학번 ) 이 주식별자로 ( PK ) 로 지정되고, IE / Crow's Foot 에서

식별자와 비식별자를 표기할 때 식별자 관계인 학번이 맨 위에 작성된다. 

학과 엔터티와 학생 엔터티를 연결할 때 학생 엔터티에 속성으로 학과코드가 필요하지만 ( Foreign Key )

학생 엔터티에서 각 인스턴스를 식별할 때 학과코드 없이 학번만으로 식별할 수 있으므로

FK 인 학과코드는 아래에 위치하게 되고, 이를 비식별자의 관계라고 하고 점선으로 나타낸다.

식별자 관계의 경우 실선으로, 비식별자 관계의 경우 점선으로 연결된다.

 

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

1) A ( FK ) 가 주식별자에 포함된 경우 → 식별자 관계

학생 엔터티의 주식별자인 학번이 수강엔터티에서 FK 로 포함되는데,

주식별자에 포함된 경우 식별자 관계라고 한다.

그리고 식별자 관계의 경우 실선으로 표기한다.

FK가 위로 연결되면 식별자고, 실선으로 표기한다.

식별자 관계에서 부모 엔터티의 주식별자 ( 학번 ) 가 자식 엔터티의 (수강 ) 주식별자로 상속됐을 때

수강 엔터티의 입장에서 학생 엔터티의 주식별자인 학번으로 수강 엔터티 안에 있는 각 인스턴스를

식별하는 기준에 쓰이는 경우 부모 엔터티에 의존한다고 하고,

이 경우에 수강 엔터티는 Weak Entity 에 해당한다.

 

임시직사원 엔터티에서 사원번호는 주식별자이자 외부식별자이자 단일식별자다.

 

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

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

학과 엔터티와 학생 엔터티는 학과 엔터티의 주식별자인 학과코드로 관계가 맺어지고,

학생 엔터티에서 FK인 학과 코드는 학생 엔터티의 각 인스턴스를 구별하는데

필요한 속성이 아니므로 주식별자가 아닌 비식별자가 된다.

비식별자의 경우 점선으로 표기한다.

FK가 아래로 연결되면 비식별자고, 점선으로 표기한다.

 

 

학생 엔터티와 수강 엔터티의 관계를 맺기 위해

학생 엔터티의 주식별자인 학번이 수강 엔터티에서 외래 키가 되고,

학번이 수강 엔터티의 주식별자가 될 수 있지만

비식별자로 설정하는 것이 유리할 때가 있다 → 복합식별자가 너무 긴 경우 인조식별자를 만든다.

 

수강 엔터티에서 각 인스턴스를 구별하는 식별자가

과목코드 + 수강년도 + 학번 ( FK ) 으로 ( 복합식별자 ) 구성된다면

너무 길다. 그래서 수강번호를 만들었고, 수강번호만으로

수강 엔터티 안에서 각 수강 인스턴스를 구분할 수 있게 되었다. 

수강 엔터티에서 수강번호는 주식별자이자 단일식별자이자 인조식별자다.

학생과 수강과의 관계에서 학생의 학번은 수강으로 넘어갈 Foreign Key 가 되는데,

수강에서 학번은 ( 설계자의 선택에 따라 ) 주식별자가 될 수 도 있고, 비식별자가 될 수도 있다.

 

식별자 관계와 비식별자 관계 정리

항목 식별자 관계 비식별자 관계
관계 강도 강한 연결관계 표현 약한 연결관계 표현
상속 위치 자식 엔터티의 주식별자에 포함된다 자식 엔터티의 비식별자 속성에 포함된다
표기법 실선 표시 점선 표시
연결
고려사항
( 자식 엔터티는 ) 부모 엔터티에 종속된다

상속받은 주식별자 속성을 다른 엔터티에
전달할 필요가 있는 경우 식별자 관계를 사용한다
자식 주식별자를 독립적으로 구성할 수 있을 때,
상속받은 주식별자 속성을 다른 엔터티에서
차단할 필요가 있을 때
비식별자 관계를 사용한다

 

 

해석하기

 

 

1. ER Diagram ( Conceptual )

 

엔터티와 관계 그리고 대응수 ( 실무에서의 차수 ) 에 관한 설명

1) ( 한 명의 ) 교수는 여러 개의 과목을 강의한다.

( 한 명의 ) 교수는 ( 하나의 ) 학회를 지도한다.

2) ( 한 명의 ) 학생은 여러 개의 과목을 수강한다.

여러 명의 학생은 ( 하나의 ) 학회를 가입할 수 있다.

 

엔터티의 속성

1) 교수 엔터티의 속성은 사번 ( PK ) 과 교수명이 있다.

2) 학생 엔터티의 속성은 학번 ( PK ) , 이름, 학년이 있다.

3) 과목 엔터티의 속성은 과목코드 ( PK ), 과목명, 학점이 있다.

4) 학회 엔터티의 속성은 학회코드 ( PK ) 와 학회명이 있다.

 

5) 수강 관계의 속성은 수강년도와 평점이 있다.

수강은 엔터티는 아니지만 Chen 방식에서  관계 ( Relationship ) 는 속성을 갖을 수 있다.

 

2. Schema Diagram ( Logical )

 

참고 강의

데이터베이스실무(SQLD대비) | 김남규 교수

'SQLD · DB' 카테고리의 다른 글

[ MYSQL ] SELECT절과 WHERE절 실습  (0) 2024.08.01
[ SQLD ] 데이터 모델과 성능 240801  (0) 2024.08.01
[ SQLD ] 데이터 모델링의 이해 240728  (0) 2024.07.28
[ SQLD ] 기록용  (1) 2024.07.27
[ SQLD ] Data Modeling ( Logical )  (0) 2024.07.26