DB 15

반정규화

반정규화란? 정규화는 쓰기의 편의성을 위해 읽기의 성능을 어느 정도 희생 (join을 써야하기 때문) 이 정규화 된 모델을 성능이나 개발 편의성을 위해 구조를 바꾸는 것 *정규화와 달리 규격화된 방법이 있지는 않다 반정규화의 예시들 1. 테이블을 병합해 Join을 줄이기 (Join과 같은 효과) 2. 파생 컬럼의 형성으로 계산 작업을 줄이기 3. 컬럼을 기준으로 데이터가 많은 테이블을 분리 4. 행을 기준으로 데이블 분리 (1~100, 101~200, 201~300 ...) 5. foreign 키의 추가를 통해 지름길을 만들기 데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는 데이터를 조회할 때 디스크 량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한..

DB/SQLD 2021.03.16

정규화

정규형이란? 정규형의 조건에 부합된 테이블로 6차 정규형까지 존재한다 *산업적으로는 3차까지 쓰이고 나머지는 학술적으로 많이 쓰임 1차 정규화 (Atomic Columns) 각각의 컬럼의 레코드는 값을 하나만 가지도록 한다 tag (rdb, free) *값이 여러개이면 select, order by, join 등의 작업을 할 때 기준이 없어 명확한 DB구축에 어려움이 있다 2차 정규화 (No Partial Dependencies) 부분 종속성이 없게 한다 부분적으로 종속되는 컬럼들끼리 모으고 전체적으로 종속되는 것끼리 모으기 또한 이 과정에서 중복되는걸 정리한다 3차 정규화 (No Transitive Dependencies) 이행적 종속성을 분류형이란? 정규형의 조건에 부합된 테이블로 6차 정규형까지 존..

DB/SQLD 2021.03.15

성능 데이터 모델링

성능 데이터 모델링이란? 설계 단계부터 성능과 관련된 사항을 반영하는 것 성능은 크게 1) 조회, 2) 입력/수정/삭제 두가지로 나눌 수 있다 *데이터 용량이 커질 수록 데이터 모델링은 중요하다 성능 데이터 모델링 고려사항 1. 정규화를 정확히 수행 2. 데이터베이스 용량을 산정 3. 데이터베이스에 발생되는 트랜잭션 유형 파악 4. 용량과 트랜잭션의 유형에 따라 반정규화 수행 5. 이력모델, pk/fk, 슈퍼타입/서브타입 조정 등을 수행 6. 성능관점에서 데이터 모델을 검증 정규화를 통한 성능 향상 정규화는 데이터의 중복을 제거하고 카테고리별로 분류하기 때문에 성능이 향상되는 특징이 있다 하지만 이 말은 새로운 엔터티가 계속 생긴다는 말이므로 SQL 문장에서 조인이 많이 발생해 성능 저하가 나타날 수 있..

DB/SQLD 2021.03.15

식별자

식별자란? 각각의 인스턴스를 구분할 수 있는 논리적 이름 *엔터티는 반드시 하나의 유일한 식별자가 존재해야한다 식별자와 키의 차이 식별자는 논리적 데이터 모델에서 사용 키는 데이터 베이스에 접근을 위한 매개체로 사용 식별자의 특징 1. 유일성 주식별자에 의해 인스턴스들이 유일하게 구분되어야함 2. 최소성 유일성을 만족하는 최소의 수가 되어야함 3. 불변성 주식별자의 값은 자주 변하면 안됌 4. 존재성 주식별자가 지정 되면 반드시 값이 들어와야 함 식별자 분류 1. 주식별자 *각 인스턴스 값을 구분, 다른 엔터티와 참조관계 가능 > 도출 기준 1) 업무에서 자주 이용, 2) 명칭 내역 등 이름은 파하기 3) 속성의 수가 많아지지 않게 하기 (인조식별자를 통해 통합) 3).예시) 관할부서, 접수일자, 일련번..

DB/SQLD 2021.03.15

관계

관계란 관계 엔터티, 인스턴스끼리 논리적으로 연관성이 부여된 상태 관계의 페어링 엔터티 안의 인스턴스가 개별적으로 관계를 가지는 것 관계의 표기법 1. 관계명 - 관계의 이름 *유의점 - 애매한 동사를 피하고 현재형을 사용 2. 관계차수(Cardinality) - 1:1, 1:M, M:N *여러개의 관계를 가지고 있으면 까마귀 발로 표시 3. 관계선택사양 *필수참여관계(Mandatory) - 문이 닫혀야 지하철은 출발한다 모든 참여자가 관계를 가짐 *선택적참여관계(Optional) - 안내방송과 지하철 출발은 영향을 주지 않는다 예시) 주문서는 목록이 있어야하니까 주문서와 주문목록은 필수참여관계지만 목록은 주문된 목록, 주문이 되지 않은 목록이 될 수 있으므로 주문목록과 선택적참여관계이다

DB/SQLD 2021.03.14

속성

속성이란 1) 업무에서 필요로 하고 2) 의미상 더 이상 분리되지 않으며 3) 엔터티를 설명하고 인스턴스의 구성요소가 된다 * 1) 생년월일은 서로 관련되어 있는 걸 하나로 정의했기 때문에 속성이지만 서로 관련 없는 이름주소는 하나의 속성 두개 의미를 가지기 때문에 속성이 아니다 각각의 인스턴스는 속성의 집합으로 설명할 수 있다 하나의 속성은 하나의 인스턴스에만 존재 속성의 특징 1. 해당 업무에서 필요한 정보이어야함 2. 주식별자에 함수적 종속성을 가져야함 3. 하나의 속성은 하나의 속성값을 가짐 *속성에 여러 값이 있다면 정규화를 통해 분리한다 속성의 특징에 따른 분류 1. 기본속성 업무로부터 추출한 모든 속성, 가장 일반적임 일련번호 같이 다른 속성에 영향을 받지 않고 생성된 속성 *제품이름, 제조..

DB/SQLD 2021.03.14

엔터티

앤터티는 자바의 객체와 비슷한 개념으로 업무에 필요하고 유용한 정보를 저장하는 인스턴스의 집합이다 엔터티의 특징 1. 해당 업무와 관련이 있어야한다 *병원을 예로 들면 환자 2. 유일한 식별자로 식별이 가능해야한다 *동명이인이 발생할 수 있는 이름 X, 사원 번호 O 3. 두개 이상의 인스턴스 집합이어야한다 *하나만 있으면 엔터티가 아님 4. 업무 프로세스에 이용될 것 *업무 처리과정에서 이용이 되지 않으면 존재 이유 X 5. 반드시 속성 존재 *예외적으로 관계 엔터티는 주식별자만 존재하면 속성이 없어도 OK 6. 다른 엔터티와 최소 한 개 이상의 관계가 있을 것 *통계성 엔터티, 코드성 엔터티, 시스템 처리시 내부 필요에 의한 엔터티 도출 같은 경우는 생략 가능 > 통계는 별도로 엔터티를 다시 정의하게..

DB/SQLD 2021.03.14

모델링

모델링 = 모델을 만들어가는 일 자체 1. 추상화 다양한 현상을 일정한 표기법으로 표현 2. 단순화 복잡한 현상을 표기법을 이용해 쉽게 이해할 수 있도록 하는 것 3. 명확화 누구나 이해할 수 있도록 애매모호함 제거 모델링의 세가지 관점 1. 데이터관점 (What, Data) 업무가 어떤 데이터와 관련되어 있는지 관계는 무엇인지에 대해 모델링 2. 프로세스관점 (How, Process) 실제 업무를 정의하고 뭘해야하는지 모델링 3. 데이터와 프로세스의 상관관점 업무와 데이터가 어떻게 영향을 받는지 모델링 데이터모델링을 하는 이유 1. 일정한 표기법을 사용해 업무 내용을 정확히 분석 2. 분석된 모델을 통해 db를 생성해 개발 및 데이터 관리에 사용 3. 정보시스템 구축을 위해 데이터관점의 업무 분석 *모..

DB/SQLD 2021.03.14