PracticeEveryday

논리적 데이터 모델링 본문

DB

논리적 데이터 모델링

kimddakki 2022. 8. 9. 20:23
논리적 데이터 모델링

 - 데이터 모델링을 여러 사람이 분업하게 된다면, 최고 실력자는 개념적 데이터 모델링에 투입해야 된다.

 - 그만큼 전단계인 개념적 데이터 모델링이 중요하기 때문이다.

 => 단계적으로 앞인 이유가 더 쉽기 때문이 아니라 가장 어렵고 중요하기 때문이다.

 

 - 개념적 모델링이 잘 되어있다면, 논리적 모델링은 꽤나 기계적으로 풀이될 수 있다.

 

 - 개념적 모델링이 업무에서 개념을 뽑아내는 것이라면 논리적 모델링은 뽑아낸 개념을 관계형 데이터베이스 체계에

   어울리도록 데이터 형식을 잘 정리하는 것이다.

 

 - 관계형 데이터베이스 체계에 어울리는, 가장 이상적인 모습으로 개념을 잘 정리하는 것이 포인트이다.

 

Mapping Rule

 - ERD ( Entity Relationship Diagram )을 통해서 표현한 내용을 관계형 데이터베이스에 맞는 형식으로 전환할 때

   사용할 수 있는 방법론

 

Entity ( □ ) => TABLE

Attribute ( ○ ) => COLUMN

Relationship ( ◇ ) => PK, FK

 

DB Schema 작성

 - 먼저 Foreign Key를 사용하지 않는 단독 TABLE ( Entity )를 구체화 시작하면 편하다.

 - 해당 Entity의 Attribute를 TABLE의 COLUMN으로 만들어 간다.

 - type, 제약조건 ( Domain. ,, unsigned, length, ... ) 속성 ( AUTO_INCREMENT, ... )등을 지정한다.

 

1:1 관계 처리

 - Relationship => PK, FK의 가장 중요한 점은 Cardinality ( ? : ? 관계 )를 파악하는 것이다.

 

 - 가장 간단한 것이 1 : 1 => 1 :  N => N : M 순으로 복잡하다.

 

 - 1:1 관계의 예시를 위해 휴먼저 Entity를 새로이 생성한다.

  => ※ 실제로는 저자 Entity에 휴면여부, 휴면일 Attribution이 있으면 될 것 같지만, 여기서는 1:1 관계 처리의 예시를 위해서 이러한 구조를 사용.

 

 - 어느 쪽에 FK를 둘 것인가

 

 - 1 : N 관계에서는 1쪽에 PK를 N쪽에 FK로 가리키는 게 바로 떠오르지만 1 : 1 관계에서는 근본인 Entity에 PK를, 다른

   Entity에서 FK를 가리킬 수 있도록한다.

 

 - 누가 누구에게 의존하는가

 - " 저자 "는 휴먼저자의 ID에 상관 없이 값을 추가할 수 있다. 하지만 " 휴먼 저자 "는 저자의 id가 있어야 값을 추가할 수 

   있다. 즉, " 휴먼 저자 "는 FK로 저자의 PK를 가리켜야 한다.

 

 - DB에서 독립적인 Entity가 부모테이블 ( Parent TABLE ), 의존적인 Entity가 자식테이블 ( Child TALBE )로!

1 : N 관계의 처리

 - 위의 ERD에서 글 : 댓글, 저자 : 댓글을 처리!

N : M 관계의 처리

 - 위의 ERD에서 저자 : 글의 처리 => 공동저자 시스템

 - 양 쪽의 외래키를 모두 사용하는 추가 TABLE을 생성한다.

 - N : M을 위한 테이블에서, 각 외래키는 외래키이면서 기본 키 ( PK, Primary Key )로,

   둘의 조합키 ( Composite Key )로서 식별자로 작동한다.

 


 

RDB Modeling - 4. 논리적 데이터 모델링

RDB Modeling (관계형 데이터베이스 모델링) 4. 논리적 데이터 모델링 4.1 - 논리적 데이터 모델링 소개 4.2 - TABLE과 COLUMN 생성 4.3 - 1:1 관계의 처리 4.4 - 1:N 관계의 처리 4.5 - N:M 관계의 처리 (목차를..

ydeer.tistory.com

 

'DB' 카테고리의 다른 글

TypeORM  (0) 2022.08.20
TypeORM  (0) 2022.08.13
개념적 데이터 모델링  (0) 2022.08.09
RDB Modeling  (0) 2022.08.08
Key  (0) 2022.05.13
Comments