본문 바로가기
Data Science/SQL

[SQL] Conceptual Data Modeling

by 루크 Luke 2022. 1. 19.
반응형

Conceptual Data Modeling : 개념적 데이터 모델링

- 우리가 파악한 업무에서 데이터를 뽑아내는 과정

- 논리적 모델링과 물리적 모델링보다 앞선 단계이지만

- 논리적 모델링을 경험해보지 않은 사람이 개념적 모델링을 할 수 없다.

- 개념적 모델링을 잘하고 나면, 논리적 모델링과 물리적 모델링은 기계적인 일이다.

- 개념적 모델링이 매우 어려운 일이다.

- 저걸 나 혼자 할 수 있을까? -> 이런 생각은 당연한 것

- "지금은 혼자할 수 없는 것이 정상이예요 :)"

 

개념적 모델링의 효용

- 일상을 구분해줄 필터를 제공해준다.

- 개념에 대해서 다른 사람과 대화하게 해주는 언어로서 작용

ERD; Entity Relationship Diagram

- 현실은 무수히 복잡하게 생겼다.

- 현실에서 개념을 뽑는 것

- 개념을 뽑는 데 3개의 관점으로! 정보 / 그룹 / 관계

- 표로 전환할 수 있다는 것도 ERD의 강점!

 

- 위 그림에서, 글 / 저자 / 댓글을 동등한 관계로 볼 수도 있고,

- 글 안에 댓글, 댓글안에 저자가 있는 관계라고 볼 수도 있다.

- ERD에서는 글 / 저자 / 댓글로 보는 것이 관계형 데이터베이스답다.

- 왜?

- 위 사진의 상단은 내포관계를 가지고 있는 방식이다.

- 중복 데이터가 잔뜩 있어서, 필요한 데이터를 추출할 때 중복되는 값까지 가져와야하는 단점이 있다.

- 메모리 낭비라고 생각된다.

 

- 하단은 각각 두는 방식이다.

- 각각 아이디를 두어서 연결해주는 역할을 한다.

- 중요한 것은 JOIN을 사용하여 필요한 정보를 한번에 볼 수도 있다.(중복 발생 X)

 

ERD; Entity Relationship Diagram

- Entity : 글, 댓글, 저자라고 한 것. 이것은 테이블(Table)로 만들어질 아이들이다.

- Attribute : 구체적인 데이터들, 글에서는 제목, 생성일, 본문 등이다. 이것은 테이블의 컬럼(Column)이 될 아이들이다.

- Relation : Entity들 간의 관계, 저자, 글, 댓글은 복잡한 관계를 가지고 있다. 이것은 PK, FK, JOIN

- 저자와 글은 '쓴다'의 관계, 글과 댓글은 '소속'의 관계, 저자와 댓글은 '쓰다'의 관계가 있다.

- PK : Primary Key

- FK : Foriegn Key

 

Entity

- 애플리케이션을 건물로 비유하자면, UI는 옥상, DB는 지하

- UI와 DB를 인과 관계로 생각해서 설명하면, 서로 원인과 결과가 됨

- 번갈아가면서 순차적으로 점검하지 않는다면 유지가 어렵다.

- 모델링은 기획에, 기획은 모델링에 서로 서로 놓치면 안되는 것들이 있다.

 

- 기획서에서 Entity를 찾자.

- 비슷한 것들끼리 그룹핑

- 이것이 어렵다면, 서비스가 구현되었을 때, 쓰기 화면을 보면 좋다.

Entity

 

Attribute

- 각 Entity에 속하는 Attribute를 찾아서 넣어준다.

- Entity는 ERD에서 사각형으로 표현하고, Attribute는 타원(원)으로 표현한다.

- 글에는 제목, 작성일, 본문

- 저자는 이름, 자기소개, 가입일

- 댓글은 본문, 작성일

 

Identifier

- Identifier: 대표 선수를 뽑는 것이라고 생각하면 쉽다.

- 각 Entity에 속하는 Attribute 중에, 원하는 대상을 정확하게 표현하는 것이 Identifier

- 자신을 제외한 누구도 자신과 같은 값이 아닌 유일한 값이 Identifier

- ERD에서는 밑줄로 표현한다.(Primary key)

대체키는 추후에 Secondary key로 걸기 좋다.
하나만으로는 구별할 수 없는 경우, 2개를 묶어서 중복키로

Relationship

- 관계라는 것은, Primary key와 Foreign key를 연결하는 것

- 저쪽 테이블에 PK를 연결하는 이쪽 테이블의 FK

- ERD에서는 마름모(◇)로 표현됨

 

Cardinality

- Cardinality : 기수, 1~9

- 1:1, 1:N, N:M을 Cardinality라고 한다.

한 테이블과, 다른 테이블 사이의 관계를 파악 -> 1:1(일대일) 관계, ERD에서는 우측과 같이 표현

 

댓글 하나는 저자 하나에만 연결! 1:N(일대다), ERD는 우측 아래처럼 닭발처럼 생겼다.

 

N:M, 다대다, ERD에서는 우측 가장 아래 모양으로 그린다.

 

Optionality

- Optionality : 있을 수도 있고, 없을 수도 있다.

- 저자가 등록을 했다고, 댓글을 무조건 달아야 하는가? 아니다. = 저자는 댓글을 작성하지 않을 수도 있다.

- 저자에게 댓글은 옵션이다. Optional

ERD에서는 옵션쪽에 O을 그려줌

- 반면 댓글에게는 저자가 필수이다. Mandatory

- Cardinality까지 표시하면 아래와 같다.

우측 표시 중 가장 아래 것을 참고하면 된다.

ERD 그리기 예제

 

Cf. erd.yah.ac

 

 

* 본 내용은 생활코딩(Coding Everybody)을 참고하여 작성했습니다.

- 개념적 데이터 모델링

반응형

댓글