데이터 모델링 이란?
정보 시스템 구축의 대상이 되는 업무 내용을 분석하여 이해하고 약속된 표기법에 의해 표현하는 것을 의미한다.
이렇게 분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터 관리에 사용된다.
특히 데이터를 추상화한 데이터 모델은 데이터베이스의 골격을이해하고 그 이해를 바탕으로 SQL문장을 기능과 성능적인 측면에서효율적으로 작성할 수 있기 때문에, 데이터 모델링은 데이터베이스 설계의 핵심 과정이기도 하다.
데이터 모델링 순서
1. 업무 파악 (요구사항 수집 및 분석)
업무 파악은 어떤 업무를 시작하기 전에 해당하는 업무에 대해서 파악하는 단계이다.
모델링에 앞서 가장 먼저 해야 할 것은 어떤 업무를 데이터화하여 모델링 할 것인지에 대한 요구사항 수집이다.
2. 개념적 데이터 모델링
개념적 데이터 모델링은 내가 하고자 하는 일의 데이터 간의 관계를 구상하는 단계이다.
각 객체들과 그들간의 관계를 발견하고 표현하기 위해 ERD 다이어그램을 생성한다.
위 기호와 화살표를 통해 피터 첸 표기법으로 객체들의 관계를 표현한다.
3. 논리적 데이터 모델링
개념적인 데이터 모델이 완성되면 구체화된 업무 중심의 데이터 모델을 만들어 내는데, 이것을 논리적인 데이터 모델링이라고 한다.
이 단계에서 업무에 대한 key, 속성, 관계등을 표시하며 정규화 활동을 수행한다.
정규화는 데이터 모델의 일관성을 확보하고 중복을 제거하여 신뢰성있는 데이터 구조를 얻는데 목적이 있다.
피터 첸 표기법으로 구현한 개념적 ERD 다이어그램을 정보 공학 표기법인 테이블 형태로 재구성한다.
이 때 단순히 추상적인 데이터보다 구체화적인 데이터로 작성한다.
4. 물리적 데이터 모델링
물리적 데이터 모델링은 최종적으로 데이터를 관리할 데이터베이스를 선택하고, 선택한 데이터베이스에 실제 테이블을 만드는 작업을 말한다.
시각적인 구조를 만든 것에서 실제로 SQL 코딩을 통해 완성하는 단계이다.
ERD 그리기
ERD(Entity Relationship Diagram)은 Entity 개체와 Relationship관계를 그리는 다이어그램이다.
개체 관계도라고도 불리며 요구 분석 사항에서 얻은 엔티티와 속성들의 관계를 그림으로 표현한 것이다.
Entity
데이터베이스의 테이블이 엔티티로 표현된다.
정의 가능한 사물이나 개념을 의미한다.
Attribute
엔티티에는 개체가 갖고있는 속성을 포함한다.
회원 Entity라면 아이디, 비밀번호, 전화번호 등이 속성이 될 수 있다.
데이터베이스 테이블의 각 필드(컬럼)들이 엔티티 속성이다.
Domain
도메인은 속성의 값, 타입, 제약사항 등에 대한 값의 범위를 표현하는 것이다.
사용자 기호에 따라 속성까지만 표시할 수 있다.
데이터 타입을 명시할 때는 데이터베이스가 지원하는 타입에 맞게 해야한다.
ERD 키와 제약 조건 표기법
주 식별자 (PK)
데이터베이스 테이블의 Primary Key
중복 X, NULL X, 유일한 값에 지정하는 식별자
다른 속성과의 명확한 구분을 위해 구분선을 두기도 한다.
NOT NULL
해당 속성에 NULL을 비허용한다면 N 또는 NN을 기재.
NULL 허용시 N 적지 않음.
외래 식별자 (FK)
데이터베이스 테이블의 Foreign Key
FK 표시할 때는 선을 이어서 개체와 관계를 표시한다.
ERD 엔티티 관계 표시법
FK 표시할 때 개체 간의 관계에 따라 실선, 점선으로 구분.
식별자 관계
- 강한 연결관계
- 자식 주식별자의 구성에 포함됨.
- 실선으로 표현
- 반드시 부모엔티티 종속
- 자식 주식별자 구성에 부모 주식별자 포함 필
- 상속받은 주식별자 속성을 타 엔티티에 이전 필요
비식별자 관계
- 약한 연결관계
- 자식 일반 속성에 포함됨
- 점선 표현
- 약한 종속관계
- 자식 주식별자 구성을 독립적으로 구성
- 자식 주식별자 구성에 부모 주식별자 부분 필요
- 상속받은 주식별자 속성을 타엔티티에 차단 필요
- 부모 쪽의 관계 참여가 선택 관계
식별관계 비식별관계 선택 기준
식별 : 부모테이블의 키가 자식테이블의 PK로 포함되기 때문에 반드시 부모 테이블에 데이터가 존재해야 자식 테이블에 정보를 입력할 수 있다.
-> 즉 부모 테이블에 자식 테이블이 종속.
식별관계
장 : 데이터 정합성 유지가 DB에서 가능
자식테이블에 데이터 존재 시 부모 테이블에도 반드시 있다고 보장
단 : 요구사항 변경시 구조 변경이 어려움
비식별관계
장 : 부모와 독립적인 데이터를 생성할 수 있다.
변경되는 요구사항을 유동적으로 수용
단 : 데이터 정합성을 지키기 위해 별도의 비즈니스 로직이 필요하다.
부모 데이터가 없어도 자식테이블이 존재할 수 있다.
즉 무결성이 보장되지 않는다.
카디널리티
관계를 맺는 두 entity 사이에 대응되는 갯수를 의미한다.
종류
1 : 1 , 1 : N, N : 1, N : M
1 : 1 관계 | |
1: N 관계 | |
N : M 관계 |
* 두 엔티팉가 다대다 관계에 있을 경우, 두 개의 엔티티만으로 표현하기 부족하다.
데이터 모델링에서는 N : M 관계를 완성되지 않은 ㅗ델로 간주하고, 두 엔티티 관계를 1 : N, N : 1로 쪼개는 작업이 필요.
ERD 관계의 참여도
관계선 각 끝자락에 기호를 표시한다.
' | ' 는 필수, ' O ' 는 선택
정보처리기사를 취득할 때 이론으로 배웠던 내용이 가물가물해서 프로젝트 들어가기전에 한 번 정리를 해보았다.
이제 ERD Cloud 온라인 툴을 이용해 우리 프로젝트에 필요한 테이블을 설계해보려고 한다 !
정리
1. ERD 구성 요소 - 엔티티(테이블자체) , 속성(개체의 특성), 도메인(속성의 타입)
2. ERD 키와 제약조건 - PK(중복X, NULLX, 유일한 값), NOTNULL(NN), FK(외래 식별자)
3. FK 관계를 표시할 때 부모키를 자식도 PK로 쓰면 주식별자(실선), 일반 속성으로 들어가면 비식별자(점선)
4. 카디널리티 : 엔티티와의 대응 관계를 표현. 1 : 1, 1: N, N : M(다대다 관계는 1: N, N : 1로 분리해야 함)
5. 관계선 각 끝에 필수 | , 선택 O 표시
6. 설계 시 유의할 점
- 속성의 타입인 도메인은 사용할 데이터베이스가 지원하는 타입이어야 함.
- FK 생성 시 개체간의 관계 고려해서 실선, 점선 택
- 실선 점선과 관계선 필수 선택은 다른 개념이다 !
실선 점선은 부모의 PK가 자식의 PK로 들어갈 지, 일반속성으로 들어갈 지 구분하는 것
필수 선택 표시는 레코드의 존재 필수 선택을 표시.
참고
'공부 > DB' 카테고리의 다른 글
데이터 베이스 정규화(Normalization) (0) | 2024.07.09 |
---|---|
MySQL/MariaDB 데이터 타입 정리 (0) | 2024.07.08 |
RDBMS 종류 및 특징 + MySQL vs MariaDB (0) | 2024.07.08 |
RDBMS vs NoSQL (0) | 2024.07.08 |
DB에 따른 application.properties 속성 (1) | 2023.10.19 |