1 Data Modeling
- 데이터 모델링은 현실 세계의 정보를 컴퓨터 시스템에서 표현할 수 있는 논리적 구조로 변환하는 과정이다.
- 이는 데이터 요소, 그들 간의 관계, 그리고 데이터에 대한 제약 조건을 정의한다.
1.1 데이터 모델링의 주요 구성 요소
- 엔티티(Entity): 데이터를 저장할 대상 (예: 고객, 주문)
- 속성(Attribute): 엔티티의 특성 (예: 고객명, 주문일자)
- 관계(Relationship): 엔티티 간의 연관성
- 키(Key): 데이터를 고유하게 식별하는 속성
- 제약조건(Constraint): 데이터의 무결성을 보장하는 규칙
1.1.1 특성(Characteristic) vs 속성(Attribute) vs 속성값(Property)
- 특성 (Characteristic)
- 어떤 대상이 본래 가지고 있는 특징, 성질, 성향, 성격
- 추상적이거나 일반적인 성질을 강조하는 포괄적인 개념
- 구체적인 값이 아니라 전체적인 성향을 뜻하며 쉽게 변하지 않는 개념
- 예시:
- 사람의 특성(Characteristic): 장소와 시간이 바뀌어도 그 성향이나 성격이 변하지 않는다. (
조용함,사고 중심적,관찰력 높음) - 물의 특성: 장소와 시간이 극적으로 바뀌지 않으면 그 성질이나 성격이 변하지 않는다. (
무색,무취,액체 상태)
- 사람의 특성(Characteristic): 장소와 시간이 바뀌어도 그 성향이나 성격이 변하지 않는다. (
- 속성 (Attribute)
- 무엇인가에 속하여 본질적이고 정적인(static) 특징을 이루는 요소
- 객체(Object)나 개념이 가지고 있는 특성의 구체적이고 하위 성격의 개념
- 데이터베이스, 프로그래밍, 철학 등에서 특정 대상 및 개체의 성질을 나타내는 개념
- 예시:
- 데이터베이스 - 사용자(개체, entity) 테이블의 속성:
이름,이메일,생년월일,주소 - 객체 지향 프로그래밍(OOP) - 자동차(객체, object)의 속성:
색상,제조사,모델명,연료 종류(class의 member)
- 데이터베이스 - 사용자(개체, entity) 테이블의 속성:
- 무엇인가에 속하여 본질적이고 정적인(static) 특징을 이루는 요소
- 속성값 (Property)
객체 지향 프로그래밍(OOP)의 객체(Object) 내부에서 동적(dynamic)으로 변경될 수 있는 값
즉, 객체가 가진 실제 값 (상태)
Attribute가 데이터베이스의 메타데이터라면,
객체 지향 프로그래밍(OOP)의 Property는 객체의 실제 값(data state)을 나타냄
예시
class Car: def __init__(self, color, speed): self.color = color # Property self.speed = speed # Property my_car = Car("red", 120) print(my_car.color) # red my_car.color = "blue" # Property 값 변경 가능 print(my_car.color) # blue
1.2 데이터 모델링의 단계
1.2.1 개념적 데이터 모델링
- 목적: 비즈니스 관점에서 높은 수준의 데이터 구조 정의
- 특징: 주요 엔티티와 그들 간의 관계를 식별
- 산출물: 개체-관계 다이어그램(ERD, Entity Relation Diagram)
1.2.2 논리적 데이터 모델링
- 목적: 비즈니스 규칙과 데이터 요구사항을 상세히 표현
- 특징: 엔티티의 속성 정의, 정규화 수행, 키 설정
- 산출물: 상세 ERD, 데이터 사전
1.2.3 물리적 데이터 모델링
- 목적: 실제 데이터베이스 구현을 위한 스키마 설계
- 특징: 테이블, 컬럼, 인덱스 등의 물리적 구조 정의
- 산출물: 데이터베이스 스키마, SQL 스크립트
1.3 데이터 모델링의 중요성
- 데이터 품질 향상: 일관성 있고 정확한 데이터 구조 제공
- 시스템 성능 최적화: 효율적인 데이터 접근 및 저장 구조 설계
- 유지보수 용이성: 시스템 변경 및 확장이 쉬워짐
- 비즈니스 이해 증진: 데이터 관점에서 비즈니스 프로세스 이해
- 의사소통 도구: 기술팀과 비즈니스팀 간의 소통 촉진
2 도식
2.1 ERD vs Schema
간단히 말하면, 둘의 차이는 데이터의 개념적, 논리적 모델링에서 그려진 ERD를 물리적 단계에서 DB스키마로 구체화 시킨다.
- 정의
- 스키마: 데이터베이스의 구조와 제약 조건을 정의하는 공식적인 설명
- ERD: 데이터베이스의 개체(엔티티), 속성, 관계를 시각적으로 표현한 다이어그램
- 표현 방식
- 스키마: 주로 텍스트 형식으로 표현되며, SQL 문 등으로 작성된다.
- ERD: 그래픽 형식으로 표현되어 시각적 이해를 제공
- 상세도
- 스키마: 데이터 타입, 키, 제약 조건 등 세부적인 정보를 포함.
- ERD: 전체적인 구조와 관계에 초점을 맞추며, 세부 사항은 생략될 수 있다.
- 사용 목적
- 스키마: 데이터베이스 시스템에서 실제 구현을 위해 사용
- ERD: 설계 단계에서 개념적 모델링을 위해 주로 사용
- 시점
- 스키마: 주로 물리적 데이터베이스 설계 단계에서 사용
- ERD: 주로 개념적, 논리적 설계 단계에서 사용