Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 게시판
- 스프링 시큐리티
- 스프링부트
- 자바의 정석
- 실행 컨텍스트
- 정처기
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- in-memory
- 동적계획법
- 분할정복
- 이벤트루프
- Spring Boot
- 스프링 부트
- Redis
- 다이나믹프로그래밍
- 정보처리기사
- 호이스팅
- MongoDB
- NoSQL
- 레디스
- JPA
- spring security
- 캐시
- document database
- github
- SQL
- VMware
- 영속성 컨텍스트
- sqld
- 깃허브
Archives
- Today
- Total
FreeHand
[SQLD] 데이터 모델링 본문
데이터 모델링
- 현실세계를 데이터베이스로 표현하기 위해서 추상화한다.
- 고객과 의사소통을 통해 고객의 업무 프로세스를 이해해야 한다.
- 데이터 모델링 표기법을 사용해서 모델링한다.
데이터 모델링 특징
- 추상화: 현실세계를 간략하게 표현
- 단순화: 누구나 쉽게 이해하도록 표현
- 명확성: 명확하게 의미가 해석되고, 한 가지 의미를 가짐
데이터 모델링 단계
개념적 모델링 | - 전사적 관점에서 모델링 - 추상화 수준이 가장 높은 모델링 |
논리적 모델링 | - 식별자를 정의하고 관계, 속성 등을 표현 - 정규화를 통해 재사용성을 높임 |
물리적 모델링 | - 테이블, 인덱스 등을 생성하는 단계 - 성능, 보안, 가용성 등을 고려하여 구축 |
- 개념적 모델링
- 업무 전체에 대해서 모델링
- 복잡하지 않게 중요한 부분 모델링
- 엔터티(Entity)와 속성(Attribute)을 도출하고 개념적 ERD 작성
- 논리적 모델링
- 식별자 정의
- 정규화 수행
- 물리적 모델링
- 실제 데이터베이스 구축
* ERD: 엔터티와 엔터티 간의 관계를 정의하는 모델링 방법
- 엔터티를 도출하고 배치한다. (중요한 엔터티를 왼쪽 상단에 배치)
- 엔터티 간의 관계를 설정한다.
- 관계 참여도를 표현한다.
- 관계 필수 여부를 표현한다.
3층 스키마
사용자, 설계자, 개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술한 ANSI 표준
3단계로 분리해서 독립성을 확보한다.
외부 스키마 | - 사용자 관점 - 데이터베이스의 뷰를 표시 - 응용 프로그램이 접근하는 데이터베이스 |
개념 스키마 | - 설계자 관점 - 데이터베이스 내의 규칙과 구조를 표현 - 통합 데이터베이스 구조 |
내부 스키마 | - 개발자 관점 - 데이터베이스의 물리적 저장 구조 - 저장 구조, 레코드 구조, 필드 정의, 인덱스 등을 의미 |
엔터티(Entity)
업무에서 관리해야 하는 데이터 집합으로, 저장되고 관리되어야 한다.
엔터티 특징 | 설명 |
식별자 | - 엔터티는 유일한 식별자가 있어야 한다. |
인스턴스 집합 | - 2개 이상의 인스턴스가 있어야 한다. |
속성 | - 엔터티는 반드시 속성을 가지고 있다. |
관계 | - 엔터티는 다른 엔터티와 최소한 한 개 이상의 관계가 있어야 한다. |
업무 | - 엔터티는 업무에서 관리되어야 하는 집합이다. |
엔터티의 종류
- 유형과 무형에 따른 종류
유형 엔터티 | - 업무에서 도출되며 지속적으로 사용되는 엔터티 - 예) 고객, 강사, 사원 등 |
개념 엔터티 | - 물리적 형태가 없는, 개념적으로 사용되는 엔터티 - 예) 거래소 종목, 코스닥 종목, 보험 상품 등 |
사건 엔터티 | - 비즈니스 프로세스를 실행하면서 생성되는 엔터티 - 예) 주문, 체결, 수수료 청구 등 |
- 발생 시점에 따른 종류
기본 엔터티 | - 다른 엔터티로부터 영향을 받지 않고 독립적으로 생성되는 엔터티. 키 엔터티라고도 함 - 예) 고객, 상품, 부서 등 |
중심 엔터티 | - 기본 엔터티로부터 발생되고 행위 엔터티를 생성한다. - 예) 계좌, 주문, 취소, 체결 등 |
행위 엔터티 | - 2개 이상의 엔터티로부터 발생된다. - 예) 주문 이력, 체결 이력 등 |
속성
엔터티가 가지는 항목으로, 의미적으로 더 이상 분리되지 않는 단위이다.
- 속성의 특징
- 업무에서 관리되는 정보이다.
- 하나의 값만 갖는다.
- 주식별자에게 함수적 종속된다. 즉, 기본키가 변경되면 속성의 값도 변경된다.
속성의 종류
- 분해 여부에 따른 종류
단일 속성 | - 하나의 의미로 구성된 것 - 예) 회원 ID, 이름 등 |
복합 속성 | - 여러 개의 의미가 있는 것 - 예) 주소 (시, 군, 동 등으로 분해 가능) |
다중값 속성 | - 여러 개의 값을 가지는 것. 엔터티로 분해된다. - 예) 상품 리스트 |
- 특성에 따른 종류
기본 속성 | - 비즈니스 프로세스에서 도출되는 본래의 속성 - 예) 회원 ID, 이름, 계좌번호, 주문 일자 등 |
설계 속성 | - 데이터 모델링 과정에서 발생되는 속성 - 유일한 값을 부여한다. - 예) 상품코드, 지점코드 등 |
파생 속성 | - 다른 속성에 의해서 만들어지는 속성 - 예) 합계, 평균 등 |
* 도메인: 속성이 가질 수 있는 값의 범위
관계
엔터티 간의 관련성을 의미한다.
- 관계의 종류
- 존재 관계: 엔터티 간의 상태
- 행위 관계: 엔터티 간의 행위
관계 차수
두 개의 엔터티 간에 관계에 참여하는 수를 의미한다.

- 1대1 관계
하나의 엔터티에 관계되는 엔터티가 1개인 관계
- 완전 1대1: 반드시 존재한다.
- 선택적 1대1: 없을 수도 있다.
- 1대N 관계
하나의 엔터티에 관계되는 엔터티 값이 여러 개 존재하는 관계
예) 고객과 계좌 -> 한 명의 고객은 여러 개의 계좌를 가질 수 있다.
- M대N 관계
두 개의 엔터티가 서로 여러 개의 관계를 갖는다.
예) 학생과 과목 -> 한 명의 학생은 여러 개의 과목을 수강할 수 있고, 한 개의 과목은 여러 학생이 수행한다.
- 필수적 관계, 선택적 관계
필수적 관계는 반드시 하나는 존재해야 하는 관계이고 선택적 관계는 없을 수도 있는 관계이다.
예) 고객이 반드시 있어야 계좌를 만들 수 있지만 고객이 있다고 반드시 계좌도 있는 것은 아니다.
식별 관계와 비식별 관계
식별 관계
- 다른 엔터티에 의존하지 않고 독립적으로 존재할 수 있는 엔터티를 강한 개체라고 한다.(고객과 계좌에서 고객)
- 강한 개체의 기본키를 다른 엔터티의 기본키로 관계를 갖는다.
비식별 관계
- 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 칼럼으로 관계를 갖는다.
- 비식별 관계는 점선으로 표현한다.
식별자
엔터티를 대표할 수 있는 유일성을 만족하는 속성
예) 회원 ID, 계좌번호, 주민등록번호 등
식별자의 종류
- 대표성 여부에 따른 종류
주식별자 | - 유일성과 최소성을 만족하며서 엔터티를 대표하는 식별자 - 다른 엔터티와 참조 관계로 연결될 수 있다. |
보조 식별자 | - 유일성과 최소성을 만족하지만 대표성을 만족하지 못하는 식별자 |
- 생성 여부에 따른 종류
내부 식별자 | - 엔터티 내부에서 스스로 생성되는 식별자 - 예) 부서코드, 주문번호, 종목코드 등 |
외부 식별자 | - 다른 엔터티와의 관계로 만들어지는 식별자 - 예) 계좌 엔터티에 회원 ID |
- 속성의 수에 따른 종류
단일 식별자 | - 하나의 속성으로 구성 |
복합 식별자 | - 두 개 이상의 속성으로 구성 |
- 대체 여부에 따른 종류
본질 식별자 | - 비즈니스 프로세스에서 만들어지는 식별자 |
인조 식별자 | - 인위적으로 만들어지는 식별자 |
주식별자(기본키)
- 유일성과 최소성을 만족한다.
- 엔터티를 대표할 수 있어야 한다.
- 엔터티의 인스턴스를 유일하게 식별한다.
- 자주 변경되지 않아야 한다.
키의 종류
- 슈퍼키: 유일성 O, 최소성 X
- 후보키: 유일성 O, 최소성 O
- 기본키: 유일성 O, 최소성 O, 대표성 O (후보키에서 대표성을 만족하는 키)
- 대체키: 여러 후보키에서 기본키를 선정하고 남은 키
'기타 > 자격증' 카테고리의 다른 글
[SQLD] SQL 활용 (0) | 2023.11.14 |
---|---|
[SQLD] SQL 기본 (0) | 2023.11.12 |
[SQLD] 데이터 모델과 성능 (0) | 2023.11.10 |