개발자들은 본격적으로 DB를 개발하기 전, 설계의 이해를 높이기 위해 데이터 모델링을 실시함.
데이터 모델링이란?
- 주어진 개념(데이터)로부터 논리적인 데이터 모델을 구성하는 작업
- 데이터간의 연결 관계 및 구조를 알리기 위해 정보 시스템 전체나 그 일부를 시각적으로 표현하는 프로세스
- 데이터 베이스 설계에 대한 계획을 의미.
- 대표적인 예시로 개체-관계모델기법(ER다이어그램)이 있음
ERD란?
Entity Relationship Diagram, 테이블의 구조를 한눈에 알아보기 위한 다이어그램.
'Entity'(개체)와 'Relationsip'(관계)를 표시하여 데이터베이스 구조를 시각적으로 한 눈에 볼 수 있게 나타냄.
특히 관계간의 정보를 통해 어떤 테이블 구조로 만들어졌는지 알 수 있음.
서버 개발을 여러 명의 사람들이 협업하는 경우 각자 자기 마음대로 DB를 설계 하는 것이 아닌 공통된 ERD를 보고 인지한 후 작업하는 것이 효율적이다.
ERD구조
ERD는 Entity(개체), Attribute(속성), Relationship(관계)로 구성
1. Entity(개체, 엔티티)
관리하고자 하는 정보의 실체로써 정의 가능한 사물 또는 개념
데이터베이스에서 테이블은 Entity로 정의
모든 엔티티는 하나 이상의 UID를 지녀야함
회원 시스템이 있을 경우 회원 하나의 엔티티로 만들 수 있음
회원 Entity |
2. Attribute(속성)
Entity를 구성하고 있는 구성요소 (테이블의 구성요소, 각 필드)
데이터 타입을 같이 명시해야함.
회원 Entity |
UID (bigint) 이름 (varchar(10)) 이메일 (text) 비밀번호 (text) 생일 (datetime) |
3. Relationship
Entity와 Entity간의 관계.
두 Entity간에 선을 긋고, 관계 명칭
식별/ 비식별관계
식별관계 | 비식별관계 |
강한 연결관계 | 약한 연결관계 |
부모 PK를 자식의 FK로 참조하여 주식별자로 포함 | 부모 PK를 자식의 FK로 참조하여 일반 속성으로 포함 |
실선 표현 | 점선 표현 |
● 자식의 주식별자 구성에 부모 주식별자 포함 ● 반드시 부모 엔티티에 종속되어 있음 |
● 자식의 주식별자구성은 독립적 ● 부모 식별자가 없어도 좀더 자유롭게 구성 가능 |
PK, FK의 개념 -> [Database] 03. 외래키, 기본키, 복합키 정리
관계차수(Relationship Cardinality)
한 개체에서 발생할 수 있는 발생 횟수를 정의하며, 다른 개체에서 발생할 수 있는 발생 횟수와 연관성을 정의한다.
Cardinality: entity사이의 한 개체는 다른 entity의 몇 개의 개체와 대응하는가?
1:1 관계 / 1:n 관계 / n:1 관계 / n:m 관계
1) 1:1 관계
양쪽 모두 단 하나씩 존재하는 경우.
ex) 각 상점에는 하나의 메뉴판이 존재.
2) 1:n 관계
하나의 원소가 두개 이상의 원소와 관계를 맺음.
ex) 하나에 상점에 여러 개의 리뷰가 존재
3) n:m 관계
ex) 여러 회원이 여러 상점을 이용
그러나 n:m관계의 경우, 두개의 엔티티만으로 서로를 표현하는데에는 부족하다.
따라서 두 엔티티의 관계를 1:n, n:1로 조정하는 작업이 필요 -> 중간 엔티티(매핑 테이블)을 만들어준다.
중간 엔티티는 두 엔티티의 공유 속성 역할을 함.
ERD관계의 참여도
' ㅣ ' 표시는 반드시 있어야 하는 개체
' O ' 표시가 있다면 없어도 되는 개체
앞선 내용을 토대로 ERD를 만들어보자!
ERD 클라우드 https://www.erdcloud.com/
참고 레퍼런스
'백엔드 공부일지 > 데이터베이스 공부일지' 카테고리의 다른 글
[DATABASE] 기본키, 외래키, 복합키의 개념 (1) | 2024.05.18 |
---|---|
[DATABASE] MY SQL 추가 - JOIN, SUBQUERY (1) | 2024.05.16 |
[DATABASE] My SQL 기초 문법 (0) | 2024.05.15 |
[DATABASE] 데이터베이스 개념 (0) | 2024.05.15 |