코딩(11)
-
[SQLD] 1-4. 반정규화 기법
테이블 반정규화 (병합 / 분할 / 추가) 1. 테이블 병합 - 관계 병합 (1:1 / 1:M) 두 테이블의 동시 조회가 많을 때 - 슈퍼/서브타입 관계 병합 여러 앤터티 공통 속성 = Super Type / 개별 속성 = Sub Type 2. 테이블 분할 - 수직(컬럼) 분할 (↓) 컬럼 단위 테이블을 디스크 I/O를 분산 처리하기 위해 테이블을 1:1로 분리 트랜잭션 처리 유형 파악이 선행되어야 한다 - 수평(로우) 분할 (→) 로우 단위로 발생하는 트랜잭션을 분석해서 디스크 I/O, 데이터 접근 효율성을 높여서 성능 향상 3. 테이블 추가 - 중복 테이블 추가 다른 업무 or 서버일 경우 동일한 테이블 구조를 중복해서 원격 조인 제거 - 통계 테이블 추가 SUM, AVG 등을 미리 계산해서 조회 시..
2021.10.26 -
[SQLD] 1-3. 정규화 & 반정규화
정규화 (Normalization) - 데이터에 대한 중복성을 제거 / 데이터를 관심사별로 카테고리화 => 성능 향상 - 엔티티가 계속 발생 / SQL 문에서 조인이 많이 발생 => 성능 저하 - 정규화를 수행한다고 무조건 조회 성능이 저하되는 것은 아니다 - 함수적 종속성에 근거한 정규화 수행이 필요하다 단계 - 1NF : 모든 속성 값이 원자 값 - 2NF : 1NF + 완전 함수 종속 - 3NF : 2NF + 이행적 종속 제거 - BCNF : 3NF + 모든 결정자가 후보키 반정규화 (Denormalization) 정의 - 정규화된 엔티티, 속성, 관계에 대해 시스템 성능 향상 + 개발·운영 단순화를 목적으로 중복, 통합 , 분리 등을 수행하는 데이터 모델링 기법 수행 이유 (데이터 무결성이 깨질 ..
2021.10.26 -
[SQLD] 1-2. 성능 데이터 모델
데이터 모델의 성능 저하 이유 1. 데이터 모델 구조 2. 대용량 데이터 3. 인덱스의 특성을 고려하지 않은 인덱스 생성 성능 데이터 모델 정의 - DB 성능 향상을 목적으로 설계단계의 데이터 모델로부터 (정규화, 반정규화, 테이블 분할, 조인 구조, PK/FK) 등 이러한 사항이 데이터 모델에 반영될 수 있도록 하는 것 수행 시점 - 분석/설계 단계에서 성능 데이터 모델을 구현하게 되면 Rework Cost(재업무 비용)이 최소화 된다 - 즉 시기가 빠를수록 좋다 고려사항 1. 데이터 모델링을 할 때 정규화를 정확하게 수행 2. DB 용량 산정 수행 3. DB에 발생하는 트랜잭션의 유형 파악 4. 용량, 트랜잭션의 유형을 고려해서 반정규화 수행 5. 이력 모델 조정 / PK·FK 조정 / 슈퍼·서브 타..
2021.10.26 -
[SQLD] 1-1. 데이터 모델링의 이해
1. 데이터 모델의 이해 모델링 정의 - 복합한 현실세계 (사물, 사물, 개념 등)를 일정한 표기법에 따라 표현하는 일 - 복잡한 현실세계를 단순화해 표현하는 것 특징 1. 추상화 : 다양한 현상을 일정한 양식인 표기법에 따라 표현 2. 단순화 : 복잡한 현실세계를 약속된 표기법에 의해 쉽게 이해할 수 있도록 하는 개념 3. 명확화 : 누구나 이해하기 쉽게 하기 위해 애매모호함을 제거하고 정확하게 현상을 기술 관점 1. 데이터 관점 (What, Data) : 업무가 어떤 데이터와 관련이 있는지 또는 데이터 간의 관계는 무엇인지 2. 프로세스 관점 (How, Process) : 실제하고 있는 업무는 무엇인지 또는 무엇을 해야 하는지 3. 상관 관점 (D vs P) : 업무가 처리하는 일의 방법에 따라 데이..
2021.10.20 -
[DB] 정규화
정규화 (Normalization) 주어진 릴레이션 스키마가 잘못되어 이상현상이 발생하는 릴레이션 스키마를 분해하여, 이상현상이 발생하지 않는 바람직한 릴레이션 스키마로 만들어 가는 과정 이상 현상이 발생하지 않도록, 릴레이션을 관련 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정 함수적 종속성을 판단하여 정규화를 수행 정규화의 목적 - 불필요한 데이터를 제거, 데이터의 중복 최소화 - DB 구조 확장 시, 재디자인을 최소화 - 다양한 관점에서의 query를 지원하기 위해 - 무결성 제약조건의 시행을 간단하게 하기 위해 - 각종 이상 현상을 방지하기 위해, 테이블의 구성을 논리적이고 직관적으로 한다 정규화의 필요성 - 저장공간 최소화 - 데이터 중복에 따른 데이터 불일치성 최소화 - 데이터의 삽입..
2021.10.18 -
[DB] 데이터베이스 언어 SQL(Structured Query Language) - DDL
SQL 기능에 따른 분류 - 데이터 정의어(DDL : Data Definition Language) 테이블 생성, 변경, 제거 CREATE, ALTER, DROP 문 - 데이터 조작어(DML : Data Manipulation Language) 생성된 테이블에 데이터를 검색, 삽입, 수정, 삭제 SELECT, INSERT, UPDATE, DELETE 문 - 데이터 제어어(DCL : Data Control Language) 사용자 접근 제어, 백업과 회복, 동시성 제어 등 GRANT, REVOKE, COMMIT, ROLLBACK 문 데이터 정의어(DDL) 1. CREATE TABLE 문 : 테이블 생성 - 기본 문법 CREATE TABLE 테이블이름 ( 속성이름 데이터타입 제약조건, 속성이름 데이터타입 제..
2021.10.14 -
[DB] 관계 데이터 연산
관계 데이터 모델에서의 DB 언어 : 관계 데이터 모델 기반 DBMS에서 원하는 정보를 얻기 위해 사용하는 언어 1. 관계 해석(Relational Calculus) 원하는 결과를 얻기 위해, 찾기를 원하는 데이터가 무엇인지만 명시하는 비절차적 언어 2. 관계 대수(Relational Algebra) 원하는 데이터를 얻기 위해, 데이터를 어떻게 찾는지에 대한 처리과정을 명시하는 절차적 언어 구분 관계 해석 관계 대수 특징 비절차적 언어(계산 수식의 유연적 사용) 프레디킷 해석(Predicate Calculus) 기반 절차적 언어(순서 명시) 목적 무엇을 얻을 것인가?(What) 어떻게 유도하는가?(How) 종류 튜플 관계 해석, 도메일 관계 해석 순수관계 연산자, 일반집합 연산자 ※ 관계 대수나 관계 해..
2021.10.12 -
[DB] 개체-관계(ER : Entity-Relationship) 모델 (2)
관계 제약조건 (참여 특성) 1. 필수적 참여 (Total Participation) 모든 개체 인스턴스가 관계에 반드시 참여 ER 다이어그램 표기법 : 이중선 2. 선택적 참여 (Partial Participation) 개체 인스턴스 중 일부만 관계에 참여해도 됨 / 참여를 안 해도 됨 ER 다이어그램 표기법 : 실선 ※ Example 1) - 1개의 학과는 여러명의 학생이 소속된다 1개의 학과에 학생이 없을 수도 있다 -> 신설학과 / 입학 전 (학과는 선택적 참여) - 1명의 학생은 반드시 1개의 학과에 소속된다 (학생은 필수적 참여) ※ Example 2) - 1명의 고객은 여러권의 책을 구매할 수 있다 고객은 반드시 책을 구매해야 한다 (고객은 필수적 참여) - 1권의 책은 여러 명의 고객이 구..
2021.10.12 -
[DB] 개체-관계(ER : Entity-Relationship) 모델 (1)
ER 모델 - DB 설계를 용이하게 하기 위해 피터 첸이 제안 데이터 모델 표기법 (ERD) Chen - 대학 교재에서 많이 이용 / 실무적으로 사용 안 함 IE/Crow's Foot - 가장 많이 사용하는 표기법 Barker - Crow's Foot을 적용하는데 일부 다름 ER 모델의 구성 요소 - 개체 (Entity) - 관계 (Relationship) 개체 (Entity) ≥ 1 - 사람, 사물, 개념, 사건과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 객체 - 저장할 가치가 있는 중요 데이터를 가지고 있는 사람이나 사물, 개념, 사건 등 - 각 개체만의 고유한 특성이나 상대, 즉 속성을 1개 이상 가지고 있음 ※ ER 다이어그램 표기법 : 직사각형 개체 인스턴스, 개체 타입, 개체..
2021.10.11 -
[DB] 3단계 데이터베이스 구조
ANSI/SPARC Architecture (Consists Of 3 Steps) - 대부분의 상용 DBMS 구현에 일반적으로 사용되는 아키텍처 - 외부 단계(External) or 뷰 단계(View) - 개념 단계(Conceptual) or 논리 단계(Logical) - 내부 단계(Internal) or 물리 단계(Physical) ※ 스키마(Schema) : 데이터베이스에 저장되는 데이터 구조를 정의한 것 ※ 인스턴스(Instance) : 스키마에 따라 데이터베이스에 실제로 저장된 값 외부(뷰) 단계 : 데이터베이스를 개별 사용자 관점에서 이해하고 표현하는 단계 - 데이터베이스의 각 사용자가 갖는 뷰 - 데이터베이스의 일부분에만 관심을 가짐 - 하나의 DB에는 여러 개의 외부 스키마가 존재 개념(논리..
2021.10.11 -
[DB] 데이터베이스의 정의
데이터 (Data) : 관찰하거나 측정하여 수집한 사실이나 값 (단순한 사실이나 값) 데이터베이스 (DataBase) : 특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합 - 공유 데이터 (Shared Data) : 특정 조직의 여러 사용자가 함께 소유하고 이용 - 통합 데이터 (Integrated Data) : 최소의 중복과 통제 가능한 중복만 허용 - 저장 데이터 (Stored Data) : 컴퓨터가 접근할 수 있는 매체에 저장 - 운영 데이터 (Operational Data) : 조직의 주요 기능을 수행하기 위해 지속적으로 꼭 필요 데이터베이스 관리 시스템 (DBMS : DataBase Management System) - 데이터를 편리하게 저장하고 효율적으로..
2021.10.11