개념적 데이터 모델링
논리적, 물리적 모델링에 대한 지식을 가지고 개념적 모델링을 해야한다.
개념적 데이터 모델링의 효용
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이다.
'DATABASE' 카테고리의 다른 글
생활코딩 - DATABASE 관계형 데이터 모델링 - 물리적 데이터 모델링 (0) | 2021.05.27 |
---|---|
생활코딩 - DATABASE 관계형 데이터 모델링 - 논리적 데이터 모델링 (0) | 2021.05.19 |
생활코딩 - DATABASE 관계형 데이터 모델링 - 데이터 모델링의 순서, 업무파악 (0) | 2021.04.22 |
생활코딩 DATABASE - Join (0) | 2021.04.21 |
생활코딩 - DATABASE2 MySQL (0) | 2021.04.12 |