SQL 자격검정 실전문제집(노랭이)를 풀면서 정리한 내용입니다.
모델링
현실 세계에 대해서 표현
- 정보 시스템 구축을 위한 데이터 관점, 프로세스 관점의 업무 분석
- 데이터 베이스 구축을 위한 분석 및 설계하는 과정
- 현실 세계의 데이터(what)에 대해 약속된 표기법에 의해 표현
모델링의 특징
- 추상화 : 현실 세계를 일정한 형식에 맞추어 표현
- 단순화 : 복잡한 현실을 제한된 언어나 표기법을 통해 이해하기 쉽게 표현
- 명확화(정확화) : 애매모호함을 배제하고 누구나 이해가 가능하도록 정확하게 현상을 기술
모델링이 중요한 이유
- 업무 정보를 구성하는 기초가 되는 정보들을 일정한 표기법에 의해 표현하기 위해서
- 분석된 모델을 가지고 데이터베이스를 생성하여 개발 및 데이터 관리에 사용하기 위해서
- 데이터 모델링 자체로 업무의 흐름을 설명하고 분석하는 의미를 가지기 때문에
모델링 유의점
- 중복(Duplication)을 고려
여러 장소의 데이터베이스에 같은 정보를 저장하지 않도록 중복성을 최소화
- 최소화 ? → 반정규화로 중복될 수 있으므로.
- 비유연성(Inflexibility)을 고려
사소한 업무 변화에도 데이터 모델이 수시로 변경돼 유지 보수의 어려움을 가중시키지 않도록 데이터의 정의를 사용 프로세스와 분리. 이를 통해 데이터 혹은 프로세스의 작은 변화가 애플리케이션과 데이터베이스에 중대한 변화를 일으킬 수 있는 가능성을 줄임.
- 비일관성(Inconsistency)을 고려
연관된 다른 데이터와 모순된다는 고려 없이 일련의 데이터를 수정하면 문제 발생. 데이터 모델링 때 데이터와 데이터 간 상호 연관에 대해 명확하게 정의해 위협을 사전에 예방 가능.
모델링 종류
- 개념적 데이터 모델링
- 추상화 수준 높음
- 업무 중심적이고 포괄적이며 전사적
- EA 수립 시 이용
- 논리적 데이터 모델링
- 시스템 구축 업무에 따라 key, 속성, 관계 등을 정확하게 표현
- 재사용성이 높음
- 물리적 데이터 모델링
- 실제로 데이터베이스에 이식
- 성능, 저장 등 물리적 성격을 고려하여 설계
DB 스키마 구조 3단계(ANSI-SPARC에서 정의)
각각 상호 독립적인 의미, 고유한 기능 보유
- 외부 스키마(개별 사용자 관점)
- 개념 스키마(통합 관점)
- 모든 사용자 관점을 통합한 조직 전체 관점의 통합적 표현
- 모든 응용 시스템, 사용자들이 필요로하는 데이터를 통합한 조직 전체 DB를 기술
- DB에 저장되는 데이터와 그들 간의 관계를 표현하는 스키마
- 데이터 모델링은 통합 관점의 개념 스키마를 만드는 과정
- 내부 스키마
- DB에 어떤 데이터가 어떻게 저장되어 있는 가를 기술
엔터티
- 엔터티 : 테이블
- 속성 : columns
- 인스턴스 : rows
엔터티 특징
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보
- 유일한 식별자에 의해 식별이 가능
- 영속적으로 존재하는 인스턴스의 집합(최소 두개 이상의 인스턴스로 구성)
- 계속 존재하는 인스턴스들의 집합 → 잠깐 있다가 사라지면 X
- 업무 프로세스에 의해 이용
- 반드시 속성이 있어야 함(최소 두개 이상)
- 최소 한 개 이상의 다른 엔터티와의 관계가 있음
엔터티 명명 기준
- 업무 용어를 사용
- 약어 사용 자제
- 단수 명사 사용
- 유일한 이름 부여
- 생성하는 의미대로 이름 부여
엔터티 분류
발생 시점에 따른 분류
- 기본/키 엔터티
- 해당 업무에 원래 존재하는 정보.
- 다른 엔터티와의 관계에 의해 생성되지 않고 독립적으로 생성이 가능.
- 타 엔터티의 부모 역할
- 다른 엔터티로부터 주식별자를 상속받지 않고 자신의 고유한 주식별자를 가짐
- ex) 사원, 부서, 고객, 상품, 자재
- 중심 엔터티
- 기본 엔터티로부터 발생
- 업무에서 가장 핵심적인 역할
- ex) 계약, 대출, 주문
- 행위 엔터티
- 2개 이상의 부모 엔터티로부터 발생
- 자주 내용이 바뀌거나 데이터 양이 증가
- ex) 변경 이력, 주문 목록
물리적 형태의 유무에 따른 분류
- 유형 엔터티
- 물리적 형태가 있음
- 안정적이고 지속적으로 활용
- ex ) 사원, 상품
- 개념 엔터티
- 물리적인 형태가 없음
- 관리해야 할 개념적 정보
- ex) 회사, 조직
- 무형 엔터티
- 업무 수행에 따라 비교적 많이 발생
- 통계 자료에 활용 가능
- ex) 주문, 배송
예외 엔터티
다른 엔터티와의 관계를 생략할 수 있음
- 통계성 엔터티
- 코드성 엔터티
ERD
- 1976 : 피터첸 Entity-Relationship Model(E-R Model)
- 존재적 관계와 행위에 의한 관계를 구분하지 않음
작성 순서
- 엔터티를 그린다.
- 엔터티를 적절하게 배치한다.
- 왼쪽 위 → 오른쪽 아래 순으로 배치
- 엔터티 사이 관계를 설정한다.
- 엔터티 사이 연결
- 관계명을 기술한다.
- 관계의 참여도를 기술한다.
- 1 : 1, 1: M
- 관계의 필수 여부를 기술한다.
- | : 필수, O : 선택
클래스 다이어 그램(UML)
- 존재적 관계(연관 관계)와 행위에 의한 관계(의존 관계)를 구분
- 연관 관계(실선), 의존 관계(점선)로 표현
속성
인스턴스에서 관리하는 의미 상 더 이상 분리되지 않는 최소의 데이터 단위
- 한 개의 속성은 한 개의 속성 값을 갖는다.
- 속성도 집합이다.
속성의 도메인
- 엔터티 내 속성이 가질 수 있는 값의 범위
- 데이터 타입과 크기, 제약 사항 지정
속성의 명칭 부여
- 업무에서 사용하는 용어 사용
- 서술식 속성명은 사용하지 않음
- 약어 사용은 가급적 제한
- 데이터 모델에서 유일성을 확보
속성 분류
속성의 특성에 따른 분류
- 기본(BASIC) 속성
- 업무상 필요한 데이터에 대해 정의
- 코드 성 데이터, 일련번호, 계산에 의해 생성된 속성은 제외
- 설계(DESIGNED) 속성
- 업무 규칙을 위해 새로 만들거나 변형한 속성
- 코드 성 데이터, 일련 번호
- 파생(DERIVED) 속성
- 다른 속성의 영향을 받아 생성
- 계산된 값 → 데이터를 조회할 때 빠른 성능 얻음
- 가급적 적게 정의
엔터티 구성 방식에 따른 분류
- PK 속성
- FK 속성
- 일반 속성
관계
관계 표기법
- 관계 명 : 관계 시작, 끝 점 (고객, 주문)
- 관계 차수 : 1 : 1, 1 : M, M : N
- 관계 선택 사양 : 필수/선택(|/O) 표기
관계 구분
- 존재에 의한 관계 ex) 부서 - 사원
- 행위에 의한 관계 ex) 고객 - 주문
- 클래스 다이어그램(UML)은 구분하여 연관 관계, 의존 관계로 표현
관계 체크 사항
- 두 엔터티 사이에 관심 있는 연관 규칙이 존재하는지.
- 두 엔터티 사이에 정보의 조합이 발생하는지.
- 업무 기술서, 장표에 관계 연결을 가능하게 하는 동사가 있는지.
- 존재/행위 관계 여부 확인
- 업무 기술서, 장표에 관계 연결에 대한 규칙이 서술돼 있는지.
관계 읽기
- 기준 엔터티를 한 개 또는 각으로 읽는다.
- 대상 엔터티의 관계 참여도 개수를 읽는다.
- 관계 선택 사양과 관계명을 읽는다.
- ex) 고객 당 선택적으로 M개의 주문 수행 가능
식별자
하나의 엔터티에 구성되어 있는 여러 속성들에 대해 각 속성을 구분하기 위한 구분자
- 논리 데이터 모델링 단계 → 물리적 데이터 모델링에서 KEY로 구현 됨
식별자의 종류
- 엔터티 내에서 대표성을 가지는 지.
- 주 식별자
- 보조 식별자
- 엔터티 내에서 스스로 생성되었는지 여부.
- 내부 식별자
- 외부 식별자
- 단일 속성으로 식별이 되는지
- 단일 식별자
- 복합 식별자
- 식별자 속성을 그대로 사용했는지 여부에 따라서.
- 본질 식별자
- 인조 식별자
주 식별자
엔터티 내 각 인스턴스를 구분하며 해당 엔터티에 대한 대표성을 가짐
따라서 타 엔터티와 참조 관계를 연결할 수 있음
- 해당 업무에서 자주 이용되는 속성을 주 식별자로 지정
지정 시 고려 사항
- 유일성
- 주 식별자에 의해 엔터티 내 모든 인스턴스들이 유일하게 구분되어야 함
- 최소성
- 주 식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
- 불변성
- 지정된 주 식별자 값은 자주 변하지 않아야 함
- 존재성
- 주 식별자가 지정이 되면 반드시 값이 있어야 함
식별자 / 비식별자 관계
- 식별자 관계(실선)
- 부모 엔터티로부터 속성을 받아와 자식 엔터티의 주 식별자로 사용
- 강한 연결 관계
- 부모 엔터티에 종속
- 상속 받은 주 식별자 속성을 다른 엔터티에도 이전할 필요
- 비 식별자 관계(점선)
- 부모 엔터티로부터 속성을 받아와지만 자식 엔터티의 주 식별자로 사용하지 않는 경우
- 약한 연결 관계
- 일반 속성으로 포함
- 상속 받은 주 식별자 속성을 타 엔터티에 차단
- 부모의 관계 참여가 선택 관계
- 모든 관계가 식별자 관계로 연결되면 SQL WHERE 절에서 비교하는 항목이 증가 돼 조인에 참여하는 테이블에 따라 SQL 문장이 길어져 SQL문의 복잡성이 증가 되는데 이를 방지하고 싶을 때 비 식별자 관계를 이용할 수 있음
데이터 무결성(Data Integrity)
- 데이터 값이 정확한 상태
데이터 정합성
- 데이터 값들이 일치하는 상태