꿈꾸는 개발자의 블로그
[SQLP] 1과목. 데이터 모델링의 이해 본문
과목 | 주요항목 | 세부내용 |
1과목. 데이터 모델링의 이해 | 데이터 모델링의 이해 | 데이터모델의 이해 |
엔터티 | ||
속성 | ||
관계 | ||
식별자 | ||
데이터 모델과 SQL | 정규화 | |
관계와 조인의 이해 | ||
모델이 표현하는 트랜잭션의 이해 | ||
Null 속성의 이해 | ||
본질식별자 vs 인조식별자 |
데이터 모델링의 이해
데이터모델의 이해
데이터베이스에서의 '모델링'이란 현실 세계를 단순화하여 표현하는 기법이다. (현실 세계를 데이터베이스로 표현)
모델링의 특징
특징 | 설명 |
추상화 | 현실 세계를 일정한 형식(간략하게) 표현한다. |
단순화 | 누구나 쉽게 이해할 수 있도록 복잡한 현실 세계를 정해진 표기법으로 단순하게 표현한다. |
명확성 | 불분명함을 제거하여 명확하게 해석되어야 하고, 한 가지 의미를 가져야한다. |
모델링의 세 가지 관점
관점 | 설명 |
데이터 관점 | 어떤 데이터들이 업무와 얽혀 있는지, 그 데이터들 간에 어떤 관계가 있는지 모델링 (Data) |
프로세스 관점 | 업무가 처리하고 있는 일, 앞으로 처리해야하는 일이 무엇인지에 대한 모델링 (Process) |
데이터와 프로세스의 상관 관점 | 프로세서의 흐름에 따라 업무가 어떤 영향을 받는지에 대한 모델링 (Interaction) |
모델링의 세 가지 단계
단계 | 설명 |
개념적 모델링 | 전사적 데이터 모델링 수행 시 행해짐 추상화 수준이 가장 높음 업무 중심적이고 포관적인 수준의 모델링이 진행됨 |
논리적 모델링 | 데이터베이스 모델에 대한 Key, 속성, 관계 등을 모두 표현함 재사용성이 가장 높음 정규화를 수행하여 데이터 독립성 확보 |
물리적 모델링 | 데이터베이스를 실제로 구현할 수 있도록 함 테이블, 인덱스, 함수 등 생성 성능, 보안, 가용성 등의 물리적인 성격을 고려함 |
데이터의 독립성
데이터베이스에 대한 사용자들의 관점과 데이터베이스가 실제로 표현되는 방식을 구분하기 위함이다.
(사용자는 내부 구조에 대해 알 필요가 없음)
3단계 스키마 구조
스키마 | 설명 |
외부 스키마 | 사용자 관점 : 개인 사용자가 보는 개인적 DB 스키마, 개인 사용자나 응용 프로그래머가 접근하는 DB를 정의 |
개념 스키마 | 통합된 관점 : 모든 사용자 관점을 통합한 조직 전체의 DB를 기술하는 것, DB에 저장되는 데이터를 표현, 데이터들 간 관계를 나타냄 |
내부 스키마 | 물리적 관점 : 실질적인 데이터 저장 구조나 컬럼 정의, 인덱스 등이 포함 |
ERD 작성 순서
ERD란 시스템에 어떤 엔터티들이 존재하며 그들 간에 어떤 관계가 있는지를 나타내는 다이어그램이다.
- 엔터티를 도출하고 그린다.
- 엔터티를 배치한다.
- 엔터티 간의 관계를 설정한다.
- 관계명을 서술한다.
- 관계 참여도를 그린다.
- 관계 필수 여부를 표현한다.
엔터티
식별이 가능한 객체로써, 업무에서 쓰이는 데이터를 용도별로 분류한 그룹이다.
구분
구분 | 설명 |
엔터티 | Table |
인스턴스 | Row |
속성 | Column, 엔터티가 자신을 더 상세하게 나타내기 위한 도구 |
엔터티의 특징
특징 | 설명 |
식별자 | 엔터티는 유일한 식별자가 있어야 한다. (회원 ID 등) |
인스턴스 집합 | 2개 이상의 인스턴스가 있어야 한다. |
속성 | 반드시 속성을 가지고 있어야 한다. (고객 엔터티에 회원 ID, 패스워드, 이름, 주소 등) |
관계 | 다른 엔터티와 최소한 한 개 이상 관계가 있어야 한다. (고객은 계좌를 개설) |
업무 | 업무에서 관리되어야 하는 집합이다. (고객, 계좌 등) |
엔터티의 종류
분류 | 종류 | 설명 |
유형 무형에 따른 | 유형 엔터티 | 업무에서 도출되며 지속적으로 사용되는 엔터티 물리적 형태가 있음 (고객, 강사, 사원 등) |
개념 엔터티 | 개념적으로 사용되는 엔터티 물리적 형태가 없음 (거래소 종목, 생명보험 상품 등) |
|
사건 엔터티 | 프로세스 중 생성되는 엔터티 (주문, 체결, 주문 취소 등) | |
발생 시점에 따른 | 기본 엔터티 | 키 엔터티 다른 엔터티의 영향 없이 독립적으로 생성되는 엔터티 (고객, 상품 부서 등) |
중심 엔터티 | 기본 엔터티와 행위 엔터티 중간에 있는 것 (계좌, 주문, 취소 등) |
|
행위 엔터티 | 2개 이상의 엔터티로부터 발생 (주문이력, 취소이력 등) |
속성
사물이나 개념의 특징을 설명해 줄 수 있는 항목들로써, 의미상 더 쪼개지지 않아야하고 프로세스에 필요한 항목이어야 한다.
속성의 특징
- 각각의 속성은 속성값을 가진다.
- 한 개의 속성은 한 개의 속성값만 가질 수 있다.
- 도메인 : 속성이 가질 수 있는 속성값의 범위
속성의 종류
분류 | 종류 | 설명 |
분해 여부에 따른 | 단일 속성 | 하나의 의미로 구성된 것 (회원 ID, 이름 등) |
복합 속성 | 여러 개의 의미가 있는 것 (주소 시/군/구 등) | |
다중값 속성 | 속성에 여러 개의 값을 가질 수 있는 것 엔터티로 분해 가능 (상품 리스트 등) |
|
특성에 따른 | 기본 속성 | 비즈니스 프로세스에서 도출되는 본래의 속성 (회원 ID 등) |
설계 속성 | 데이터 모델링 과정에서 발생되는 속성 유일한 값을 부여 (상품 코드 등) |
|
파생 속성 | 다른 속성에 의해서 만들어지는 속성 (합계, 평균 등) |
관계
엔터티와 엔터티 간의 관계를 의미한다.
관계 분류
관계 | 설명 |
존재 관계 | 두 개의 엔터티가 존재 여부의 관계가 있는 것 존재 자체로 연관성이 있는 관계 (직원과 부서, 학생과 학과 엔터티) |
행위 관계 | 엔터티 간에 어떤 행위가 있는 것 특정 행위를 함으로써 연관성이 생기는 관계 (회원과 주문, 학생과 출석부 엔터티) |
표기법
관계명 : 관계의 이름
관계차수 : 두 개의 엔터티 간 관계에 참여하는 수를 의미한다.
관계 선택사양 : 필수인지 선택인지의 여부를 의미한다. (필수는 "|", 선택은 "O")
관계차수의 종류
종류 | 설명 |
1:1 관계 | 완전 1:1, 선택적 1:1 |
1:N 관계 | 엔터티에 행이 하나 있을 대 다른 엔터티의 값이 여러 개 있는 관계 |
N:M 관계 | 두 개 엔터티가 서로 여러 관계를 가지고 있는 것, 1:N, N:1로 해소 필요함 |
식별자
각각의 인스턴스를 구분 가능하게 만들어주는 대표 격인 속성을 의미한다.
식별자 특징
특징 | 설명 |
유일성 | 각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 함 |
최소성 | 유일성을 만족시키는 최소 개수의 속성이어야 함 |
불변성 | 속성값이 되도록 변하지 않아야 함 |
존재성 | 속성값이 NULL일 수 없음 |
식별자 분류
분류 | 식별자 | 설명 |
대표성 여부 | 주식별자 | 주식별자의 특징을 모두 만족하는 대표 식별자 다른 엔터티와 참조 관계로 연결 |
보조식별자 | 다른 엔터티와 참조 관계로 연결되지 않음 | |
스스로 생성되었는지 여부 | 내부식별자 | 엔터티 내부에서 스스로 생성 (주문 코드 등) |
외부식별자 | 다른 엔터티와 연결관계 역할 (계좌 엔터티의 회원 ID) | |
단일 속성의 여부 | 단일식별자 | 하나의 속성으로 구성된 식별자 |
복합식별자 | 두 개 이상의 속성으로 구성된 식별자 | |
대체 여부 | 원조식별자 | 업무 프로세스에 존재하는 식별자 가공되지 않은 원래의 식별자 |
대리식별자 | 주식별자의 속성이 두 개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 식별자 |
주식별자 도출기준
해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.
복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.
식별관계와 비식별 관계
관계 | 설명 |
식별관계 | 자식의 주식별자로 부모의 주식별자 상속 A 엔터티의 기본 키를 B 엔터티의 기본키의 하나로 공유하는 것 강한 개체의 기본키 값이 변경되면 식별 관계 엔터티 값도 변경됨 강한 연결관계 표현, 실선으로 표현 |
비식별관계 | 부모 속성을 자식의 일반 속성으로 사용 강한 개체의 기본키를 다른 엔터티의 일반 컬럼으로 관계를 가지는 것 약한 연결관계 표현, 점선으로 표현 |
(강한 개체 : 어떤 다른 엔터티에 의존하지 않고 독립적으로 존재, 다른 엔터티와 관계를 가질 때 다른 엔터티에게 기본키를 공유, 식별 관계로 표현됨)
'Study > SQLP 자격증 공부하기' 카테고리의 다른 글
[SQLP] 1과목. 데이터 모델링의 이해 (0) | 2024.01.15 |
---|---|
[SQLP] 과목 및 내용 (0) | 2024.01.09 |