데이터 모델링
- 현실 세계를 DB로 표현하기 위해 추상화
- 데이터 모델링을 하기 위해 고객과의 의사소통을 통해 고객의 업무 프로세스를 이해 필요
- 고객의 업무 프로세스를 이해한 후 데이터 모델링 표기법을 사용해 모델링
- 고객이 쉽게 이해할 수 있도록 복잡하지 않게 모델링
- 고객의 업무 프로세스를 추상화하고, 소프트웨어를 분석.설계하며 점점 상세
- 고객의 비즈니스 프로세스를 이해하고 비즈니스 프로세스의 규칙을 정의 -> 정의된 비즈니스 규칙을 데이터 모델로 표현
데이터 모델링의 특징
- 추상화 - 현실 세계를 간략하게 표현, 공통적인 특징을 찾고 간략하게 표현
- 단순화 - 복잡한 문제를 피하고 이해하기 쉽게 표현
- 명확화 - 의미적 해석이 모호하지 않고 한 가지 의미만 가지며 명확한 해석 필요
데이터 모델링 단계
- 개념적 모델링
- 전사적 관점에서 기업의 데이터 모델링
- 추상화 관점이 가장 높은 수준의 모델링
- 복잡하게 표현하지 않고 중요한 부분을 위주로 모델링하는 단계
- 업무적 관점에서 모델링하며 기술적인 용어는 가급적 사용하지 않는다.
- 엔티티와 속성을 도출하고 개념적 ERD를 작성
- 논리적 모델링
- 특정 DB 모델에 종속
- 식별자를 도출하고 필요한 릴레이션을 정의
- 정규화를 수행해 데이터 모델의 독립성 확보 및 재사용성을 높임
- 물리적 모델링
- 성능 보안 가용성 등을 고려해 DB를 구축
데이터 모델링 관점
- 데이터
- 비즈니스 프로세스에서 사용되는 데이터
- 구조, 정적 분석
- 프로세스
- 비즈니스 프로세스에서 수행하는 작업
- 시나리오, 도메인, 동적 분석
- 데이터와 프로세스
- 데이터와 프로세스 간의 관계
- CRUD 분석
데이터 모델링을 위한 ERD
- 엔티티와 엔티티간의 관계를 정의하는 모델링 방법
- 작성 절차
- 엔티티를 도출하고 그린다.
- 엔티티 배치
- 엔티티간 관계 설정
- 관계명 서술
- 관계 참여도 표현
- 관계의 필수 여부 표현
- 작성 시 고려사항
- 데이터 모델의 독립성
- 고객 요구사항의 표현
- 데이터 품질 확보
3층 스키마
- 사용자, 설계자, 개발자가 DB를 보는 관점에 따라 DB를 기술하고 이들간의 곤계를 정의한 ANSI 표준
- DB 독립성을 확보하기 위한 방법
- 데이터의 독립성을 유지하면 - 데이터 복잡도 감소, 데이터 중복 제거, 사용자 요구사항 변경에 따른 대응력 향상, 관리 및 유지보수 비용 절감
- 각 계층을 뷰 라고 한다.
3층 스키마의 독립성
- 논리적 독립성 - 개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것
- 물리적 독립성 - 내부 스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것
3층 스키마 구조
- 외부 스키마
- 사용자 관점, 업무상 관련 있는 데이터 접근
- 관련 DB의 뷰를 표시
- 응용 프로그램이 접근하는 DB를 정의
- 개념 스키마
- 설계자 관점, 사용자 전체 집단의 DB 구조
- 전체 DB 내의 규칙과 구조를 표현
- 통합 DB 구조
- 내부 스키마
- 개발자 관점, DB의 물리적 저장 구조
- 데이터 저장 구조, 레코드 구조, 필드 정의, 인덱스
엔티티
- 업무에서 관리해야하는 데이터 집합, 저장되고 관리되어야 하는 데이터
엔티티 도출
- 고객의 비즈니스 프로세스에서 관리되어야 하는 정보를 추출
엔티티 특징
- 식별자
- 엔티티의 유일한 식별자 ex) 회원id, 계좌번호 등
- 인스턴스 집합
- 2개 이상의 인스턴스 ex) 2명 이상의 고객
- 속성
- 엔티티는 반드시 속성을 가지고 있어야함 ex) 고객의 회원id, 이름, 주소, 전화번호 등
- 관계
- 엔티티는 다른 엔티티와 최소 한 개 이상의 관계가 있어야함 ex) 고객과 계좌
- 업무
- 엔티티는 업무에서 관리되어야 하는 집합이다 ex) 고객, 계좌
엔티티 종류
- 유형과 무형에 따른 엔티티 종류
- 유형 엔티티 - 업무에서 도출되며 지속적으로 사용되는 엔티티 ex) 고객, 강사, 사원 등
- 개념 엔티티 - 물리적 형태가 없는 개념적으로 사용되는 엔티티 ex) 거래소 종목, 보험 상품 등
- 사건 엔티티 - 비즈니스 프로세스를 실행하며 생성되는 엔티티 ex) 주문, 체결, 취소 주문, 수수료 청구 등
- 발생 시점에 따른 엔티티 종류
- 기본 엔티티 - = 키 엔티티, 독립적으로 생성되는 엔티티 ex) 고객, 상품, 부서 등
- 중심 엔티티 - 기본 엔티티와 행위 엔티티 간의 중간, 기본 엔티티에 의해 행위 엔티티를 생성하는 것 ex) 계좌, 주문 등
- 행위 엔티티 - 2개 이상의 엔티티로부터 발생 ex) 주문 이력, 체결 이력 등
속성
- 업무에서 필요한 정보인 엔티티가 가지는 항목
- 더 이상 분리되지 않는 단위, 업무에 필요한 데이터를 저장할 수 있다.
- 인스턴스의 구성요소이고 의미적으로 더 이상 분해되지 않음
속성의 특징과 종류
- 속성의 특징
- 업무에서 관리되는 정보
- 하나의 값만 가짐
- 주식별자에 함수적으로 종속, 기본키가 변경되면 속성의 값도 변경된다.
- 속성의 종류
- 분해 여부에 따른
- 단일 속성 - 하나의 의미로 구성된 것 ex) 회원id, 이름 등
- 복합 속성 - 여러개의 의미가 있는 것 ex) 주소(시 군 동) 등
- 다중값 속성 - 여러 개의 값을 가질 수 있는 것, 엔티티로 분해됨 ex) 상품 리스트
- 특성에 따른
- 기본 속성 - 비즈니스 프로세스에서 도출되는 본래의 속성 ex) 회원id, 이름, 계좌번호 등
- 설계 속성 - 데이터 모델링 과정에서 발생되는 속성, 유일한 값을 부여 ex) 상품 코드, 지점 코드 등
- 파생 속성 - 다른 속성에 의해 만들어지는 속성 ex) 합계, 평균 등
- 분해 여부에 따른
- 도메인 - 속성이 가질 수 있는 값의 범위 ex) 성별이란 속성의 도메인은 남자, 여자
관계
- 엔티티간의 관련성, 존재 관계와 행위 관계로 분류
- 존재 관계
- 엔티티간의 상태 ex) 고객이 은행에 회원가입 -> 할당 관리점이 고객을 관리하는 관계
- 행위 관계
- 엔티티 간에 어떤 행위가 있는 것 ex) 계좌를 사용해 주문을 발주하는 계좌와 주문 이력의 관계
관계 차수
- 두 개의 엔티티 간에 관계에 참여하는 수
관계 차수의 종류
- 1대 1
- 완전 1대 1 관계 - 하나의 엔티티에 관계되는 엔티티의 관계가 반드시 하나인 경우
- 선택적 1대 1 관계 - 하나의 엔티티에 관계되는 엔티티의 관계가 하나이거나 없을 수 있는 경우
- 1대 N
- 엔티티에 하나의 행이 있을 때 다른 엔티티의 값이 여러 개 있는 관계 ex) 고객과 여러 개의 계좌
- M대 N
- 두 개의 엔티티가 서로 여러 개의 관계를 가지는 경우 ex) 한 명의 학생이 여러 개의 과목을 수강하고 한 개의 과목은 여러 명의 학생이 수강하는 관계
- M대 N은 카테시안 곱이 발생하여 N대 1, 1대 N 관계로 해소해야 한다.
- 카테시안 곱(곱집합) - 각 릴레이션에 존재하는 모든 데이터를 조합하여 연산하는 것
- 필수적 관계
- 반드시 하나가 있어야 하는 관계 ex) 고객은 반드시 계좌를 개설해야 한다.
- ERD 에서 | 로 표시
- 선택적 관계
- 업을 수도 있는 관계 ex) 고객은 있지만 계좌를 개설하지 않아도 된다.
- ERD 에서 O 로 표시
식별 관계와 비식별 관계
- 식별 관계
- 강한 개체는 다른 엔티티에 의존하지 않고 독립적으로 존재
- 강한 개체는 다른 엔티티와 관계를 가질 때 다른 엔티티에 기본키를 공유
- 고객과 계좌 엔티티에서 고객은 독립적으로 존재할 수 있는 강한 개체
- 고객 엔티티의 기본키 회원id를 계좌 엔티티의 기본키에 포함하는 관계
- 강한 개체의 기본키 값이 변겨오디면 식별 관계(계좌)에 있는 엔티티 값도 변경된다.
- 계좌는 약한 개체
- ERD 에서 실선으로 표현
- 비식별 관계
- 강한 개체의 기본키를 다른 에티티의 기본키가 아닌 일반 속성으로 관계를 가지는 것
- ex) 관리점 엔티티의 기본키는 지점 코드이고 고객 엔티티와 비식별 관계로 고객 엔티티의 속성에 지점코드가 이쓴 관계
- ERD 에서 점선으로 표현
엔티티 식별자
- 주식별자(= 기본키, Primary key)
- 최소성 - 최소성을 만족하는 키
- 대표성 - 엔티티를 대표할 수 있어야 함
- 유일성 - 엔티티의 인스턴스를 유일하게 식별
- 불변성 - 자주 변경되지 않아야 함
- 후보키(= Candidate key) - 유일성과 최소성을 만족하는 키
- 슈퍼키 - 유일성은 만족하지만 최소성을 만족하지 않는 키
- 대체키(= Alternate key) - 여러 개의 후보키 중 기본키를 선정하고 남은 키
- 외래키 - 하나 혹은 다수의 다른 테이블의 기본키를 가리키는 것, 참조 무결성을 확인하기 위해 사용되는 키
식별자의 종류
- 대표성, 생성 여부, 속성의 수, 대체 여부로 분류
대표성 여부에 따른
- 주식별자 - 유일성과 최소성을 만족하며 엔티티를 대표하는 식별자, 다른 엔티티와 참조 관계로 연결
- 보조식별자 - 유일성과 최소성은 만족하지만 대표성을 만족하지 못하는 식별자
생성 여부에 따른
- 내부 식별자 - 엔티티 내부에서 스스로 생성되는 식별자 ex) 부서코드, 주문번호 등
- 외부 식별자 - 다른 엔티티와의 관계로 인해 만들어진 식별자 ex) 계좌 엔티티에 회원id
속성의 수에 따른
- 단일 식별자 - 하나의 속성으로 구성 ex) 고객 엔티티의 회원id
- 복합 식별자 - 두 개 이상의 속성으로 구성
대체 여부에 따른
- 본질 식별자 - 비즈니스 프로세스에서 만들어지는 식별자
- 인조 식별자 - 인위적으로 만들어지는 식별자, 후보 식별자 중 주 식별자로 선정할 것이 없거나 주 식별자가 너무 많은 칼럼으로 되어 있는경우 사용
'Etc' 카테고리의 다른 글
[SQLD] 2과목 정리 - SQL 최적화의 원리 (2) | 2023.03.12 |
---|---|
[SQLD] 1과목 정리 - 데이터 모델과 성능 (0) | 2023.03.08 |
[클린 아키텍처] 프로그래밍 패러다임 (2) | 2023.02.22 |
[클린 아키텍처] 아키텍처와 설계 (0) | 2023.02.20 |
SSL이란?, SSL과 TLS 정의 및 차이 (2) | 2021.12.09 |