본문 바로가기
  • 공부 기록 인생 기록
SQL/공부

개념적 데이터 모델링, ERD

by 티권 2023. 2. 7.

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

 

개념적 데이터 모델링

: 파악한 업무에서 개념을 뽑아내는 과정

 

ERD(Entity Relationship Diagram)

- 현실에서 개념을 추출하는 필터 적용

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

- 현실을 3개의 관점으로 바라볼 수 있는 finder 제공

  정보 - 정보를 발견하고 다른 사람들에게 표현할 수 있게 도와줌

  그룹 - 서로 연관된 정보를 그루핑해서 인식하고 이것을 다른 사람들에게 표현할 수 있게 도와줌

  관계 - 정보, 그룹 사이의 관계를 인식하고 다른 사람들에게 표현할 수 있게 도와줌

 

현실로부터 개념을 인식하는 도구, 그것을 다른 사람들도 알아볼 수 있게 표현하는 도구 -> ERD

 

 

ERD 만들기

- RDB는 내포관계를 허용하지 않음. 포함관계보다는 평면관계가 RDB에는 더 어울림

- 거대 단일 테이블로 표현을 하면 중복이 발생

- 주제에 따라서 테이블을 쪼개자

  - 주제에 따라서 데이터를 그루핑할 수 있음

  - 컴퓨터의 자원 아낄 수 있음

  - Join

Entity

- 글, 저자, 댓글 : 동등한 표로 표현할 수 있음. 이러한 개념을 Entity

- 나중에 표(Table)로 전환

- 구체적인 데이터(attribute, 속성, column)를 그루핑 한 것

 

저자 -쓰다- 댓글 , 저자 -쓰다- 글 , 글 -소속- 댓글

: 이렇게 연관성을 표현한 것을 Relation(PK, FK)

 

기획서에서 Entity 추출하기

: 읽기 화면보다는 쓰기 화면을 봐라. Entity 알기 쉬움.

 

 

속성 정의

- ERD에서는 속성은 원을 사용. Entity와 연결.

글(제목, 작성일, 본문), 저자(이름, 자기소개, 가입일), 댓글(작성일, 본문)

 

 

식별자

- Entity의 속성들 중에 대표적인 걸 뽑음

- 유일해야함

- PK(primary key)가 되는 것

- 밑줄을 쳐준다.

- 후보키(candidate key) - PK가 될 수 있는 애들

- 대체키(alternative key) - 후보키 중에 PK가 아닌 애들

- 인조키(artificial key) 혹은 대리키(surrogate key)

  - 행이 추가될 때마다 자동으로 1씩 증가시켜서 중복되지 않는 값을 부여함으로써 식별자를 제공 ex) user_id

  - 마땅치 않을 때

  - 비즈니스 모델에서 자연스레 나오는 속성으로 기본키를 정함 - 자연키(natural key)

- 중복키(composite key)

  - 속성 두개를 합쳐서 식별

  - 직원번호, 부서번호 각각만으로는 행을 식별할 수 없기 때문.

 

Entity에 식별자가 될 수 있는 속성이 없다면

-> 식별자가 될 수있는 인조키 만들기. ex) 글아이디, 댓글아이디, 저자 아이디

 

 

 

Relationship

- Entity간의 연결

- 마름모로 표현

- RDB의 relationship은 PK와 FK가 연결되면서 구현됨

 

 

Cardinality

- 특정 데이터 집합의 유니크(Unique)한 값의 개수

- 전체 행에 대한 특정 컬럼의 중복 수치를 나타내는 지표

- 중복도가 ‘낮으면’  ->  카디널리티가 ‘높다’

- 중복도가 ‘높으면’  ->  카디널리티가 ‘낮다’

- ex) 주민등록번호는 중복되는 값이 없으므로 카디널리티가 높다

        이름은 ‘주민등록번호에 비해’ 카디널리티가 낮다

 

- 각 선생님은 한 반만 담임한다. 각 반의 담임은 한 명이다. -> 1:1

- 각 저자는 여러 댓글을 작성한다. 각 댓글은 하나의 저자만 존재한다. -> 1:N

- 하나의 글을 여러 명이 편집할 수 있다면

 : 각 저자는 여러 글을 작성한다. 각 글은 여러 저자가 존재한다. -> N:M (다 대 다)

 : 실제 테이블에서는 N:M 표현 불가. 중간에 연결 테이블을 만들어서 최종적으로는 1:N 관계로 바꿔줌.

 

Optionality

- 저자는 댓글을 작성하지 않을수도 있다. 저자에게 댓글은 옵션이다. -> 동그라미 표시

- 각 댓글은 반드시 저자가 있다. 댓글에게 저자는 필수다.(Mandatory) -> 짝대기 하나 표시

 

 

Cardinality + Optionality

 

'SQL > 공부' 카테고리의 다른 글

select 문 총정리  (0) 2023.07.09
Codecademy - Multiple Tables  (0) 2023.02.05
Codecademy - Aggregate Functions  (0) 2023.02.05
Codecademy - Queries  (0) 2023.02.05
sql select문, join (생활코딩)  (0) 2023.02.04