1️⃣ 데이터 모델링과 데이터 모델의 개념
🧡 데이터 모델링(data modeling)
- 현실세게 데이터를 컴퓨터 세계 DB로 옮기는 과정
- DB 설계의 핵심
🧡 2단계 데이터 모델링
- 개념적 데이터 모델링
- 현실 세게의 데이터를 개념세계로 옮김
- 논리적 데이터 모델링
- 개념 세계의 데이터를 DB 저장 구조로 표현
🧡 데이터 모델(data model)
- 데이터 모델링의 결과물을 표현하는 도구
- 개념적 데이터 모델
- 현실세계를 개념적 모델링하여 DB의 개념적 구조로 표현하는 도구
- ex. 개체-관계 모델
- 논리적 데이터 모델
- 개념적 구조를 논리적 모델링하여 DB의 논리적 구조로 표현하는 도구
- ex. 관계 데이터 모델
🧡 데이터 모델의 구성
- 데이터 모델
- 데이터 구조
- 연산
- 제약조건
- 데이터 구조
- 개념적 데이터 모델에서 개념적 구조
- 현실세계에서 개념세계로 추상화할때 어떤 요소로 구성?
- 논리적 데이터 모델에서 논리적 구조
- 데이터를 어떤 모습으로 저장할 것인가?
- 정적 특징
- 개념적 데이터 모델에서 개념적 구조
- 연산
- 개념 세계나 컴퓨터 세계에서 실제 표현된 값 처리 작업
- ex. 데이터 입력, 수정, 삭제
- 동적 특징
- 제약 조건
- 데이터 무결성 유지 목적
- 데이터 위조, 변조, 훼손 방지
- 구조적 측면의 제약사항
- 연산 적용시, 의미적 측면 제약사항
- 데이터 무결성 유지 목적
2️⃣ 개체-관계 모델
🧡 개체-관계 모델(E-R model; Entity-Relationship model)
- 개념적 데이터 모델
- 개체-개체 관계 이용하여 현실세계를 개념적 구조로 표현
- 개체, 속성, 관계가 핵심 요소
🧡 개체-관계 다이어그램(E-R diagram)
- ERM 그림으로 표현
🧡 개체(entity)
- 구별되는 모든 것 (같은게 있어서는 안됨)
- 가치있는 중요 데이터
- 이름, 특성, 속성 갖고 있음
- 레코드와 대응
- 사각형 표현
🧡 속성(attribute)
- 개체/관계가 갖는 특성
- 가장 작은 논리적 단위
- 필드와 대응
- 타원으로 표현
🧡 개체 타입(entity type)
- 개체를 고유한 이름, 속성으로 정의한 것
- 레코드 타입에 다응
- ex. 고객(ID, 이름, 나이, 성별)
🧡 개체 인스턴스(entity instance)
- 속성이 실제 값을 가져 실체화된 개체
- = 개체 어커런스
- 레코드 인스턴스에 대응
🧡 개체 집합(entity set)
- 개체 인스턴스의 집합
🧡 속성의 분류
- 속성값의 개수
- 단일 값 속성
- 다중 값 속성
- 의미의 분해 가능성
- 단순 속성
- 복합 속성
- 기존 속성 값에서 유도
- 유도속성
🧡 단일 값 속성과 다중 값 속성
- 단일 값 속성
- 값을 1개만 가지는 속성
- ex. 고객 이름
- 다중 값 속성
- 값을 여러개 가지는 속성
- ex. 고객 연락처, 책 저자
- erd에서 이중 타원으로 표현
🧡 단순 속성과 복합 속성
- 단순 속성
- 의미를 더는 분해할 수 없는 속성
- ex. 책 이름, 가격
- 복합 속성
- 의미 분해 가능 속성
- ex. 주소(도, 시, 동), 생년월일(연, 월, 일)
🧡 유도 속성(derived attribute)
- 기존의 다른 속성에서 유도된 속성
- 값 별도 지정X
- ex. 판매 가격
- erd에서 점선 타원으로 표현
🧡 널 속성(null attribute)
- 널 값 허용되는 속성
- 널 값?
- 결정되지 않은, 모르는, 존재하지 않는 값
- 공백과 0과 구분
- ex. 등급 null → 등급 미정
🧡 키 속성(key attribute)
- 개체 인스턴스 식별에 사용
- 모든 개체 인스턴스의 키 속성 값이 다름
- 둘 이상의 속성으로 구성될 수 있음
- ex. 고객 개체의 고객 ID
- erd에서 밑줄로 표현
🧡 관계(relationship)
- 개체와 개체가 맺고 있는 의미 있는 연관성
- 개체 사이의 대응관계, 매핑을 의미
🧡 관계의 유형 : 관계에 참여하는 개체 타입의 수 기준
- 이항 관계
- 개체 타입 2개가 맺는 관계
- 삼항 관계
- 개체 타입 3개가 맺는 관계
- 순환 관계
- 개체 타입 1개가 맺는 관계 (자기 자신)
🧡 관계의 유형 : 매핑 카디널리티 기준
- 일대일
- 일대다
- 다대다
🧡 매핑 카디널리티(mapping cardinality)
- 개체-개체 관계 상태에서, 상대 개체 인스턴스 개수
🧡 일대일(1:1) 관계
- 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 하나와 관계를 맺을 수 있고, 개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 하나와 관계를 맺을 수 있음
🧡 일대다(1:n) 관계
- 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있지만, 개체 B의 각 개체 인스턴스는 개체 A의 개체 인스턴스 하나와 관계를 맺을 수 있음
🧡 다대다(n:m) 관계
- 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있고, 개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 여러 개와 관계를 맺을 수 있음
🧡 관계의 참여 특성
- 필수적 참여 (전체 참여)
- 모든 개체 인스턴스가 관계에 참여
- ex. 모든 고객은 책을 반드시 구매
- erd 에서 이중선
- 선택적 참여 (부분 참여)
- 개체 인스턴스 중 일부만 참여해도 괜찮음
- ex. 책 개체가 고객 개체와의 구매 관계에 선택적 참여
- 구매 안한 책 존재 가능
🧡 관계의 종속성
- 약한 개체
- 다른 개체 존재 여부에 의존적인 개체
- 강한 개체
- 다른 개체 존재 여부 결정하는 개체
- 강한개체:약한개체 → 1:n의 관계
- 약한 개체는 강한개체와의 관계에 필수적 참여
- 강한 개체의 키를 포함해서 구성된다
- 약한 개체는 erd에서 이중 사각형으로 표현
- 약한 개체와 강한 개체가 맺는 관계는 이중 마름모로 표현
🧡 E-R 다이어그램
- 사각형 : 개체를 표현
- 마름모 : 관계를 표현
- 타원 : 속성을 표현
- 링크(연결선) : 각 요소를 연결
- 레이블 : 일대일, 일대다, 다대다 관계를 표기
3️⃣ 논리적 데이터 모델
🧡 논리적 데이터 모델의 개념
- erd로 표현된 개념적 구조를 DB에 저장할 논리적 구조로 바꿈
- DB의 논리적 구조 = DB 스키마
- 관계 데이터 모델
- 계층 데이터 모델
- 네트워크 데이터 모델
🧡 관계 데이터 모델
- 일반적으로 많이 씀
- 2차원 테이블 형태
🧡 계층 데이터 모델(hierarchical data model)
- 트리 형태
- 루트 개체 존재
- 사이클 없음
- 개체간 상하 관계 존재
- ex. 부모 개체/자식 가체 (only 1:1 관계)
- 두 개체 사이 오직 1개의 관계
- n:m 관계 표현 불가
- 구조 복잡, data CRUD 어려움
🧡 네트워크 데이터 모델(network data model)
- 그래프 형태
- 1:n 관계만 허용
- ex. 오너/멤버
- 개체간 여러 관계 정의 가능 (이름으로 구별)
- n:m 관계 표현 불가
- 구조 복잡, data CRUD 어려움
💻 Reference
'IT > 데이터베이스' 카테고리의 다른 글
[Chapter 05] 관계 데이터 모델 (0) | 2024.05.14 |
---|---|
[Chapter 03] 데이터베이스 시스템 (0) | 2024.05.08 |
[Chapter 02] 데이터베이스 관리 시스템 (0) | 2024.05.08 |
[Chapter 01] 데이터베이스 기본 개념 (0) | 2024.05.01 |