본문 바로가기
[DB] 반정규화 (De-Normalization) 1. 반정규화(De-Normalization)란? 반정규화란 성능을 향상시키거나, 편의성을 위해 정규화된 데이터에 의도적으로 테이블을 병합/분할하거나, 테이블(또는 칼럼, 릴레이션)을 추가하는 것이다. 정규화만을 수행하면 엔터티의 갯수가 증가하고 관계가 많아져 일부 여러 개의 조인이 걸려야만 데이터를 가져오는 경우가 있다. 이러한 경우 오히려 성능에 역효과를 가져오는데, 이 때 성능 개선을 위해 부분적으로 반정규화를 적용하는 방법이 있다. 또한 정규화의 함수적 종속관계는 위반하지 않지만 데이터의 중복성을 증가시켜야만 데이터 조회의 성능을 향상시키는 경우가 있다. 이러한 경우 반정규화를 통해서 성능을 향상시킬 수 있게 되는 것이다. 칼럼의 반정규화가 많은 이유는 개발을 하다가 SQL문장 작성이 복잡해지고 .. 2023. 2. 27.
[DB] Attribute 1. Attribute 란? 엔티티를 설명할 수 있는 정보들 중, 더 이상 의미적으로 분리되지 않는 가장 작은 데이터 단위 인스턴스가 엔티티를 구성하는 요소인 것처럼, 속성(Attribute)은 인스턴스를 구성하는 요소이다. Entity, Instance, Attribute, Value의 관계를 다이어그램으로 보자. 에를 들면, 사원 집합(Entity)은 여러 명의 사원(Instance)들로 구성되며, 각 사원은 이름, 주소, 전화번호 등 여러 속성(Attribute)로 설명 가능하고, 이 속성들은 각각의 속성값(Value)과 1:1 매칭된다. 2. Attribute의 조건 업무에 반드시 필요로 하며, 관리해야 할 정보이어야 한다. 제 2정규화 조건에 따라, 주 식별자에 함수적 종속성을 가져야 한다. 하.. 2023. 2. 26.
[DB] Relationship 1. Relationship이란? 엔티티와 엔티티 사이의 논리적인 연관성 중, 특별히 관리하고자 하는 업무적, 직접적인 연관성을 뜻한다. 인스턴스들끼리의 연관성을 Pairing이라고 하며, Relationship은 Pairing들의 집합이다. 2. Cardinality 관계 수, 차수로, 서로 연관된 실체 유형 간의 관계유형. 한 실체 유형과 쌍을 맺고 있는 다른 편 실체 유형의 수를 정의한다. 관계 소속의 관계 수 1:1, 1: N(일대다), N:1(다대일) 혹은 M:N(다대다) 관계의 정도 혹은 순서 3가지가 있다. 1 : 1 1 : N M : N 3. Optionality 존재할 수도, 존재하지 않을 수도 있다라는 것으로, Relationship의 진위 여부를 판단해주기도 한다. 두 엔티티 간의 관.. 2023. 2. 25.
[DB] Entity 1. Entity란? 엔티티란 업무에서 지속적인 관심을 가져야 할 대상인 인스턴스들을 공통점으로 묶어놓은 집합이다. 엔티티는 자신의 특성을 설명할 수 있는 속성(Attribute)를 갖는다. 2. Entity의 조건 업무에 필요하고, 관리하고자 하는 정보이어야 한다. 유일한 식별자에 의해 식별이 가능해야 한다. 영속적으로 존재하는 두 개 이상의 인스턴스 집합이어야 한다. 업무 프로세스에 이용되어야 한다. 반드시 속성(Attribute)을 가져야 한다. 다른 엔티티와 최소 한 개 이상의 관계(Relation)를 가져야 한다. 3. Entity의 분류 유무(有無)형에 따른 분류 유형 엔티티 : 물리적인 형태가 있고 안정적이며, 지속적으로 활용되는 엔티티. ex) 사원, 물품, 강사, 등... 개념 엔티티 :.. 2023. 2. 24.
[DB] Data Modeling 1. Data Modeling이란? 주어진 개념으로부터 논리적인 모델을 구성하고, 이를 물리적인 모델로 표현하는 것을 말한다. 업무를 분석하여 일정한 표기법으로 표현하여 데이터베이스를 만들고, 개발 및 데이터관리에 사용하기 위한 것이다. 3요소 Entity(엔터티) → Table Relation(관계) → PK, FK Attribute(속성) → Column 특징 추상화 : 현실을 일정한 형식에 맞추어 표현한다. 단순화 : 누구나 쉽게 이해할 수 있도록 표현한다. 명확화 : 애매모호함을 제거하고 유일한 의미를 갖도록 표현한다. 관점 데이터 관점 : 업무와 데이터의 관계, 또는 데이터 간의 관계는 무엇인지에 대해서 모델링하는 방법. 프로세스 관점 : 무엇을 하고 있는지, 또는 무엇을 해야 하는지를 모델링하.. 2023. 2. 21.
[DB] 정규화 (Normalization) 1. 정규화(Normalization)란? 관계형 데이터베이스(RDBMS)의 설계에서 데이터의 중복을 최소화하도록 구조화하는 것. 일반적으로 정규화란 크고, 정리되지 않은 테이블들을 잘 조직된 작은 테이블들로 나누는 것이다. 정규화의 목적은 하나의 테이블에서 발생한 데이터 조작(삽입, 삭제, 변경)이 테이블 간의 관계를 통해 다른 테이블로 전달되게 하는 것이다. 이를 통해 이상 현상을 제거할 수 있다. ※ 데이터의 조작이 의도한대로 이루어지지 않은 것을 이상 현상하며, 삽입 이상, 수정 이상, 삭제 이상이 있다. 현재 제 6정규화까지 발표되었으며, 제 N정규화가 적용된 데이터를 제 N정규형(Normalized Form)이라 한다. 일반적으로는 제 3정규형을 많이 사용한다. 2. 정규형 (Normalize.. 2023. 2. 12.
[AWS] AWS에서 MySQL 시작하기 (Ubuntu) AWS로 MySQL 시작하기 (Ubuntu) AWS에 접속해보자. $ ssh -i [프라이빗키 경로] [서버 계정명]@DNS 우여곡절 끝에 AWS EC2(Elastic Compute Cloud)에 Ubuntu 서버를 만들었고, 해당 서버에 정상적으로 접속했다. ubuntu apt(Advanced Packaging Tool)을 통해 앞으로 사용할 MySQL을 설치해보자. $ sudo apt update $ sudo apt-get install mysql-server $ sudo mysql_secure_installation 이 명령어를 통해 비밀번호를 설정하고 실행하면 된다고 하지만 필자는 뭘 잘못 눌렀나 에러가 떠서 셸을 종료하고 $ sudo mysql $ alter user 'root'@'localho.. 2023. 1. 23.
[DB] Cursor 1. 커서(Cursor)란? 커서는 Private SQL의 작업 영역이다. 오라클 서버에 의해 실행되는 SQL문은 연관된 각각의 커서를 소유하고 있다. 커서의 종류 - 암시적 커서 : 모든 DML과 PL/SQL SELECT문에 대해 자동 선언된다. - 명시적 커서 : 프로그래머에 의해 선언되며, 이름이 있는 커서이다. 2. 암시적 커서(Implicit Cursor) 암시적 커서는 Oracle이나 PL/SQL 실행 메커니즘에 의해 SQL 문장이 처리되는 곳에 대한 익명의 주소이다. Oracle에서 실행되는 모든 SQL문에는 암시적 커서가 생성되며, 커서 속성을 사용할 수 있다. 암시적 커서는 OPEN과 CLOSE가 자동으로 실행된다. 암시적 커서의 속성 - SQL%ISOPEN : 암시적 커서가 열려 있는지.. 2023. 1. 18.
[DB] Function & Procedure & Trigger (Oracle) 1. Function (함수) 보통 값을 계산하고 결과 값을 반환하기 위해서 함수를 많이 사용 한다. 대부분 구성이 프로시저와 유사 하지만 IN 파라미터만 사용 할 수 있다. 반드시 반환 될 값의 데이터 타입을 RETURN문에 선언해야 한다. 또한 PL/SQL블록 내에서 RETURN문을 통해서 반드시 값을 반환해야 한다. Function 문법 -- PL/SQL Block에는 적어도 한 개의 RETURN 문이 있어야 한다. -- PL/SQL Block은 함수가 수행 할 내용을 정의한 몸체부분이다. CREATE OR REPLACE FUNCTION function name -- 선택 [argument] RETURN datatype -- datatype은 반환되는 값의 datatype이다. IS [변수 선언] .. 2023. 1. 14.
[DB] PL/SQL 기초 (Oracle) 1. PL/SQL 이란? PL/SQL은 Oracle's Procedural Language extension to SQL 의 약자로, RDBMS인 오라클에서 SQL 언어를 확장하기 위해 사용하는 컴퓨터 프로그래밍 언어 중 하나이다. SQL 문장에서 변수 정의, 조건문(IF) 처리, 반복문(LOOP, WHILE, FOR) 처리 등을 지원하는 오라클 자체의 내장 Procedure Language이다. DECLARE 문을 이용하여 정의되며, 선언문의 사용은 선택 사항이다. 블록 구조로 되어 있으며, PL/SQL 자신이 컴파일 엔진을 가지고 있다. 2. PL/SQL 의 장점 PL/SQL 문은 BLOCK 구조로 다수의 SQL 문을 한번에 DB로 보내서 처리하여 수행 속도를 향상 시킨다. PL/SQL 의 모든 요소.. 2023. 1. 13.
[DB] Table Join (Oracle) 1. Table Join 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법. 일반적으로 테이블의 식별 값인 Primary Key와 테이블 간 공통 값인 Foreign Key 값을 사용하여 연결한다. Inner Join SELECT [컬럼명] FROM [테이블A] a, [테이블B] b WHERE a.조인키컬럼 = b.조인키컬럼 ; Left-Outer Join SELECT [컬럼명] FROM [테이블A] a, [테이블B] b WHERE a.조인키컬럼 = b.조인키컬럼(+) ; Right-Outer Join SELECT [컬럼명] FROM [테이블A] a, [테이블B] b WHERE a.조인키컬럼(+) = b.조인키컬럼 ; Full-Outer Join SELECT [컬럼명] FROM [테이블A] a FULL.. 2023. 1. 9.
[DB] Optimizer & SQL 힌트문 (Oracle) 1. 옵티마이저(Optimizer)란? SQL을 가장 빠르고 효율적으로 수행할 최적(최저비용)의 처리경로를 생성해 주는 DMBS 내부의 핵심엔진이다. 옵티마이저 종류 RULE BASE OPTIMIZER - 15규칙*에 순서에 따라 실행계획을 가져가는 방식이다. => 수동카메라, 개발자가 본인의 의도대로 조작이 가능하다. COST BASE OPTIMIZER - 데이터의 분포도와 통계자료를 바탕으로 실행계획을 가져가는 방식으로, 데이터의 분포도를 항상 최신화 해놓아야 한다. => 자동카메라, 효과적인 실행 계획을 가져갈 확률이 높다. 2. SQL 힌트문 (Oracle) 힌트문은 SQL 튜닝의 핵심이다. RBO가 항상 최적의 실행을 하는 것은 아니기 때문에 사용자가 더 나은 계획을 알고 있다면, 힌트문을 통해.. 2023. 1. 5.
반응형