DATABASE

생활코딩 - DATABASE 관계형 데이터 모델링 - 개념적 데이터 모델링

joy_lee 2021. 5. 19. 21:23

개념적 데이터 모델링

논리적, 물리적 모델링에 대한 지식을 가지고 개념적 모델링을 해야한다.

개념적 데이터 모델링의 효용

1. 현실에서 개념을 추출하는 필터역할을 한다.

2. 개념에 대해 다른 사람들과 대화할 수 있는 언어로 작용한다.

 

개념적 데이터 모델링의 도구 : ERD(Entitiy Relationship Diagram)

왼쪽의 프로토타입을 오른쪽의 ERD로 나타낼 수 있다.

ERD의 구성

○ 정보

▭ 그룹 - 연관된 정보들

◇ 관계 - 정보 그룹 사이의 관계

ERD는 쉽게 표로 전환할 수 있다.

 

 

왼쪽의 시안의 구성을 보고 자료들을 어떤 표로 나타낼지 정해야 한다.

윗쪽 표 한 표 안에 모든 정보를 담는다. 한 눈에 보기 좋지만 중복되는 자료가 있을 수 있다.
표가 표 안에 있는 구조이다.
관계형 데이터베이스에서는 표 안의 표를 지원하지 않으므로 맞지 않는 구조이다.
아래쪽 표 √ 댓글, 글, 저자로 한 표에는 한 가지 주제만 담는다.
중복되는 자료들이 없어서 저장공간을 절약할 수 있다.
자료들이 흩어져 있지만 관계형 데이터베이스에서 지원하는 JOIN을 통해 다른 표의 자료들을 한 눈에 볼 수 있다.
⇒관계형 데이터베이스에 잘 맞는 구조

 

ERD   DB
▭ 엔티티 / Entity 실제 데이터가 아님관련된 정보들을 그룹으로 만든 것엔티티는 하위 엔티티를 가질 수 없다 Table
○ 속성 / Attribute 구체적인 데이터들(제목, 생성일, 본문) Column
◇ 관계 / Relation 연관성을 표현해준 것 PK, FK
튜플 / Tuple (표현되지 않음) Row

ERD는 개념에만 집중했기 때문에 DB의 용어와 다르다.

 

Entity는 쓰기 화면을 보면 잘 드러나있다. 쓰기화면을 통해 만드는 것들이 곧 Entity가 된다.

만들때 필요한 정보(속성)들이 드러나있기 때문에 ERD로도 옮기기 쉽다.

 

 

엔티티는 사각형으로, 속성은 원형으로 표현한다.

엔티티 안에 속해있는 속성은 선으로 이어준다.

사이트에서 필요한 엔티티들과 속성을 프로토타입을 보며 작성해준다.

 

식별자(identifier) -> primary key

엔티티의 속성들 중 대표적인 속성

원하는 대상을 정확하게 타겟팅하는 속성으로 정해야한다.

모든 행이 다른 값을 가져야 한다.

특별히 식별자로 정할 속성이 없다면, 행이 추가될 때 마다 중복되지 않는 값을 부여하는 속성을 만들어 식별자로 쓸 수 있다 (인조 key)

 

candidate key : 후보키, 식별자가 될 수 있는 후보들

primary key : 기본키, 선택된 식별자

alternate key : 대체키, candidate key 중에 기본키가 아닌 key들 / 성능 향상을 위해 secondary index를 걸기에 좋다.

 

conposite key : 중복키, 두 가지 행을 합쳐서 식별키로 사용하는 경우(직원 번호 + 부서 번호를 같이 보고 사원을 구별한다.)

 

저자, 글, 댓글 엔티티 모두에 식별자가 될 만한 속성이 없으므로 저자 아이디, 글 아이디, 댓글 아이디 속성을 추가로 만들어준다.

기본키는 이름에 밑줄을 쳐서 구분한다.

 

관계(Relationship)

외래 키(foreign key) : 외래에 있는 테이블과 연결할 때 사용하는 속성(저자 아이디)

관계형데이터베이스의 relation이란 primary key와 foreign key가 연결되는 것을 통해 실제로 구현된다.

 

Cardinality(집합의 크기)

  • 일대일(1:1) 관계

담임-반 의 관계의 경우담임은 한 반을 담당하고, 반은 한 담임만 맡을 수 있다담임-반이 1:1로 관계를 맺는다

 

  • 일대다(1:n) 관계

저자-댓글 의 경우
한 저자는 여러개의 댓글을 작성할 수 있다.
댓글의 저자는 한 명만 존재할 수 있다
저자-댓글은 1:n으로 관계를 맺는다

 

  • 다대다(n:m) 관계

저자-글 의 경우(한 글을 여러명이 수정할 수 있는 형식)
저자는 여러개의 글을 작성할 수 있고,
글도 여러명의 저자를 가질 수 있다.
저자-글 은 n:m으로 관계를 맺는다.
관계형데이터베이스에서는 구현할 수 없으므로 중간에 연결 테이블을 만들어 최종적으로 1:n, 1:m 관계로 바꿔서 사용한다.

ERD에서는 위와 같이 표현한다.

 

 

Optionality (선택성)

필수로 존재해야 하는가?

저자-댓글 관계에서는 저자는 댓글을 작성하지 않아도 된다.

댓글은 저자가 있어야 한다.

저자는 필수적이고, 댓글은 선택적이다

필수적인 쪽에는 선 하나를, 선택적인 쪽에는 O를 표시한다.

 

저자(mendatory) - 댓글(optional)의 관계이며, 1:n의 관계이기도 하다.

두 관계를 같이 겹쳐서 표현할 수 있다.

 

 

ERD의 완성

 

관계들을 표시한 최종 ERD이다.