잘못된 정보가 있다면, 꼭 댓글로 알려주세요(비로그인 익명도 가능).

여러분의 피드백이 저와 방문자 모두를 올바른 정보로 인도할 수 있습니다.

감사합니다. -현록

후원해주실 분은 여기로→

현록의 기록저장소

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

Study/Database

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

현록 2020. 1. 2. 16:03

RDB Modeling (관계형 데이터베이스 모델링)

4. 논리적 데이터 모델링

4.1 - 논리적 데이터 모델링 소개

4.2 - TABLE과 COLUMN 생성

4.3 - 1:1 관계의 처리

4.4 - 1:N 관계의 처리

4.5 - N:M 관계의 처리

(목차를 블록 선택 후, Ctrl+F로 탐색 가능 - 브라우저에 따라 다를 수 있음)


본 포스트는

생활코딩(https://opentutorials.org/)의

Database > 관계형 데이터 모델링(https://opentutorials.org/course/3883) 수업을 바탕으로

공부한 내용의 정리입니다.


<4.1 - 논리적 데이터 모델링 소개>

 

 

 

논리적 데이터 모델링

 

데이터 모델링을 여러 사람이 분업하게 된다면,

아마 최고 실력자는 개념적 데이터 모델링에.

그만큼 전단계인 개념적 데이터 모델링이 중요함.

(단계적으로 앞인 이유가 더 쉽기 때문이 아니라,

가장 어렵고 중요하기 때문)

 

개념적 모델링이 잘 되어있다면,

논리적 모델링은 꽤나 기계적으로 풀이될 수 있음.

 

개념적 모델링이 업무에서 개념을 뽑아내는 일이라면,

논리적 모델링

뽑아낸 개념을

관계형 데이터베이스 체계에 어울리도록

데이터 형식을 잘 정리하는 것.

(여기서는 아직 구체적인 DB 솔루션의 특성이나 성능은 크게 신경쓰지 않음. 그건 물리적 모델링 단계에서.)

 

관계형 데이터베이스 체계에 어울리는,

가장 이상적인 모습으로 개념을 잘 정리하는 것이 포인트.

 

 

 

Mapping Rule

 

ERD(Entity Relationship Diagram)을 통해서 표현한 내용을,

관계형 데이터베이스에 맞는 형식으로 전환할 때 사용할 수 있는 방법론.

 

덜 고민하고도 많은 것을 빠짐없이 처리할 수 있어서

광범위하게 사용되고 있음.

 

ㆍEntity(□) → TABLE

ㆍAttribute(○) → COLUMN

ㆍRelationship(◇) → PK, FK

 


<4.2 - TABLE과 COLUMN 생성>

 

 

 

ER Master

http://ermaster.sourceforge.net/

 

 

 

Database Schema 작성

 

먼저 Foreign Key를 사용하지 않는

단독 TABLE(Entity)을 구체화 시작하면 편하다.

 

해당 Entity의 Attribute

TABLE의 COLUMN으로 만들어간다.

type, 제약조건(domain. e.g., unsigned, length, ...), 속성(e.g., AUTO_INCREMENT, ...) 등을 지정.

 

 


<4.3 - 1:1 관계의 처리>

 

 

 

Relationship의 처리

 

Relationship → PK, FK

가장 중요한 것은 Cardinality(?:? 관계) 파악.

(개념적 모델링 단계에서 했음)

 

가장 간단한 것이 1:1관계.

그 다음이 1:N 관계.

마지막으로 N:M 관계 구현.

 

 

 

1:1 관계의 처리

1:1 관계를 위해,

휴면자 Entity를 새로이 생성

(※ 실제로는 저자 Entity에 휴면여부, 휴면일 Attribution이 있으면 될 것 같지만,

  여기서는 1:1 관계 처리의 예시를 위해서 이러한 구조를 사용.)

 

 

어느 쪽에 FK를 두어야 하는가.

 

1:N 관계에서는 1쪽의 PK를, N쪽이 FK로 가리키는 게 바로 떠오르는데..

 

1:1 관계에서는

근본인 Entity의 PK를, 다른 Entity에서 FK로 가리킬 수 있도록.

 

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

"저자"는 휴면저자의 id와 상관없이 값을 추가할 수 있음.

하지만, "휴면저자"는 저자의 id가 있어야 값을 추가할 수 있음.

"휴면저자"가 저자에게 의존적.

즉, "휴면저자"는 FK로 저자의 PK를 가리켜야 함.

 

Database에서,

독립적인 Entity가 부모테이블(parent TABLE),

의존적인 Entity가 자식테이블(child TABLE)로.

 

 

 


<4.4 - 1:N 관계의 처리>

 

 

 

1:N 관계의 처리

위의 ERD에서,

글:댓글,

저자:댓글의 처리.

 

 

 


<4.5 - N:M 관계의 처리>

 

 

 

N:M 관계의 처리

위의 ERD에서,

저자:글의 처리.

(공동저자 시스템)

 

 

 

양 쪽의 외래키를 모두 사용하는

추가 TABLE을 생성할 것.

N:M을 위한 테이블에서,

각 외래키는 외래키이면서 기본키(PK, Primary Key)로,

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

 

 

Comments

잘못된 정보가 있다면, 꼭 댓글로 알려주세요(비로그인 익명도 가능).

여러분의 피드백이 저와 방문자 모두를 올바른 정보로 인도할 수 있습니다.

감사합니다. -현록

후원해주실 분은 여기로→