Conceptual Data Modeling : 개념적 데이터 모델링
- 우리가 파악한 업무에서 데이터를 뽑아내는 과정
- 논리적 모델링과 물리적 모델링보다 앞선 단계이지만
- 논리적 모델링을 경험해보지 않은 사람이 개념적 모델링을 할 수 없다.
- 개념적 모델링을 잘하고 나면, 논리적 모델링과 물리적 모델링은 기계적인 일이다.
- 개념적 모델링이 매우 어려운 일이다.
- 저걸 나 혼자 할 수 있을까? -> 이런 생각은 당연한 것
- "지금은 혼자할 수 없는 것이 정상이예요 :)"
개념적 모델링의 효용
- 일상을 구분해줄 필터를 제공해준다.
- 개념에 대해서 다른 사람과 대화하게 해주는 언어로서 작용
- 현실은 무수히 복잡하게 생겼다.
- 현실에서 개념을 뽑는 것
- 개념을 뽑는 데 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를 찾자.
- 비슷한 것들끼리 그룹핑
- 이것이 어렵다면, 서비스가 구현되었을 때, 쓰기 화면을 보면 좋다.
Attribute
- 각 Entity에 속하는 Attribute를 찾아서 넣어준다.
- Entity는 ERD에서 사각형으로 표현하고, Attribute는 타원(원)으로 표현한다.
- 글에는 제목, 작성일, 본문
- 저자는 이름, 자기소개, 가입일
- 댓글은 본문, 작성일
Identifier
- Identifier: 대표 선수를 뽑는 것이라고 생각하면 쉽다.
- 각 Entity에 속하는 Attribute 중에, 원하는 대상을 정확하게 표현하는 것이 Identifier
- 자신을 제외한 누구도 자신과 같은 값이 아닌 유일한 값이 Identifier
- ERD에서는 밑줄로 표현한다.(Primary key)
Relationship
- 관계라는 것은, Primary key와 Foreign key를 연결하는 것
- 저쪽 테이블에 PK를 연결하는 이쪽 테이블의 FK
- ERD에서는 마름모(◇)로 표현됨
Cardinality
- Cardinality : 기수, 1~9
- 1:1, 1:N, N:M을 Cardinality라고 한다.
Optionality
- Optionality : 있을 수도 있고, 없을 수도 있다.
- 저자가 등록을 했다고, 댓글을 무조건 달아야 하는가? 아니다. = 저자는 댓글을 작성하지 않을 수도 있다.
- 저자에게 댓글은 옵션이다. Optional
- 반면 댓글에게는 저자가 필수이다. Mandatory
- Cardinality까지 표시하면 아래와 같다.
ERD 그리기 예제
Cf. erd.yah.ac
* 본 내용은 생활코딩(Coding Everybody)을 참고하여 작성했습니다.
'Data Science > SQL' 카테고리의 다른 글
[SQL로 맛보는 데이터 전처리 분석] 자동차 매출 데이터를 이용한 지표 추출(실습) - 1 (0) | 2022.07.11 |
---|---|
[SQL로 맛보는 데이터 전처리 분석] 기본 문법 정리 - 2 (0) | 2022.07.07 |
[SQL로 맛보는 데이터 전처리 분석] 기본 문법 정리 - 1 (0) | 2022.07.06 |
[SQL] JOIN (0) | 2022.01.10 |
[SQL] SQL / Table / SELECT (0) | 2022.01.10 |
댓글