KH

230323 DB 모델링 (Chap02. 개념적 모델링)

十月 2023. 3. 23. 12:13

Chap02. 개념적 모델링


Part 1.
Entity 도출하기


〈Entity 정의〉

 

✔ 엔티티 도출

업무 분석 단계 이후, 분석 자료(업무 기술서, 인터뷰 자료, 장부와 전표 등)로부터 엔티티 도출

 

✔ 엔티티 도출 과정

1. 엔티티 후보 풀엔티티 리스트 그리기

2. 분석 대상 문서를 보고 명사를 찾아 표시

3. 명사 하나마다 속성 / 엔티티 구분하기

4. 중복된 명사, 유사한 의미의 명사는 하나로 정리

5. 엔티티 후보 풀에 있는 명사 검토

6. 도출된 엔티티가 구축될 시스템에서 데이터 관리 필요성이 있는지 판단

 


〈Entity 정의 - 업무 기술서〉

 

✔ 업무 기술서에서 엔티티 도출하기

   ▼

 

 

✔ 전표에서 엔티티 도출하기


Part 2.

ER-Diagram


〈ERD(Entity-Relationship Diagram)〉

‘개체 관계도’라고도 불리며 요구분석사항에서 얻은 엔티티와 속성들을 그림으로 그려 관계를 도출한 것


〈ERD 표기법 (식별자)〉

 

✔ 주식별자 (Primary Identifier)

- 엔티티에 소속된 인스턴스들을 구별하는 기준 역할을 하는 속성

- 유일한 값이어야 함. ≫ 유일성, 최소성, 불변성, 존재성 // 4가지 특징

 유일성 : 중복 X

 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수

 불변성 : 값이 변하면 안 됨 (변경 불가)

 존재성 : 값이 무조건 존재 (null 안 됨)

- 주식별자는 하나가 아닌 여러 속성일 수 있음 (복합 키)

- 인위적 주식별자 : 속성 중에 주식별자 할 만한 게 없을 때 인위적으로 만드는 속성

 

✔ 외래 식별자 (Foreign Identifier)

- 관계가 있는 두 엔티티를 부모 / 자식으로 구분하고,

 부모의 주식별자와 공통 속성이 자식에게도 존재하면 해당 속성을 외래 식별자로 지정

- 기존에 자식이 부모와 공통 속성을 가지고 있는 경우 연결하면 되고, 없으면 추가해 지정

 


〈ERD 표기법 (관계)〉

 

✔ 엔티티 간의 부모-자식 관계

- 상호 관계가 있는 두 엔티티 중에서 어느 쪽의 정보가 먼저 생성이 되는가에 따라 결정

- 부모 엔티티의 정보가 있어야지만 존재할 수 있는 것이 자식 엔티티

 

*먼저 있어야 된다는 생각이 들면 부모

 ex) 부서(부모) - 사원(자식) / 학생(부모 엔티티) - 취미(자식 엔티티)

*관계를 맺어줄 때 1:N이 나오면 1이 부모, N이 자식

 

 참여도

- 필수(mandatory) , 선택(optional) 

 ex) 취미 : 무조건 대응될 필요가 없음 → 선택

- 어떤 기준이 되는 엔티티가 있을 때,

 반드시 대응되는 엔티티가 존재해야 한다면 필수,

 존재 할 수도, 하지 않을 수도 있다면 선택

 

 카디널리티

다수와 대응되는 것 : 까마귀 발 표기법

 

카디널리티와 참여도에 따른 관계의 종류

Meaning : 앞 카디널리티, 뒤 참여도

 

  1 : 1 관계

① 굳이 엔티티(테이블)을 나눌 필요가 없다. → 검색 속도에 영향 有

② 어차피 안에 1:1로 대응되어 한 테이블에 묶기 가능

 (but 설계 목적이 드러나면 나눠도 상관 없음)

 

  1 : N 관계

① 가장 일반적인 관계 (이상적으로 만들어야 할 것)

② 하나의 인스턴스가 여러 개에 대응되는 것

ex) 한 명의 교수가 여러 개의 과목을 수업할 수 있나? O

 하나의 수업 과목은 한 명의 교수한테만 수업이 되나? O

 ≫ 두 조건에 모두 해당하면 1 : N 관계

*카디널리티가 중요 / 원하는 조건을 상세히 적자.

 

  M : N 관계

학생별수강과목성적 : 릴레이션 엔티티

M : N 관계 해소 → 릴레이션 엔티티 발생


 

★ 〈ERD 표기법 (식별-비식별 관계)〉

 

✔ 식별 관계(Identifying Relationship)

- 외래 식별자가 자식 엔티티 주식별자의 일부가(포함되는) 되는 관계

- PFK로 표시 (외래 식별자가 주식별자 역할도 함) // 자식 엔티티 주식별자에 같이 묶였기 때문에!

- 실선으로 관계 표시

 

 비식별 관계(Non-Identifying Relationship)

- 외래 식별자가 자식 엔티티의 새로운 일반 속성으로 추가되는 관계

- FK로 표시 (외래 식별자 역할만 함)

- 점선으로 관계 표시

 

✔ tip. 그럼 언제 식별 관계를 쓸까?

*자식 엔티티 기준으로 생각

1. 관계 맺을 때 무조건 비식별 관계부터 진행

 ≫ 데이터 유일성 위배 발생

2. 그때, 식별 관계로 바꾸기

 

 

① 사원정보 엔티티는 비식별 관계

② 학생별 취미 엔티티에서 비식별 관계로 따져봤을 때, 유일성이 위배된다. (취미명이 겹침)

다시 식별 관계로 따지면 취미명과 학번이 PK로 묶이기 때문에 유일성 위배되지 않는다.