본문 바로가기

전체 글

SQL 활용 JOIN 방식 중첩 반복 조인 (NESTED LOOP JOIN) - 적은 데이터를 조인할 때 유리한 구조 - 온라인 트랜잭션 처리(OLTP)에 유용 - RANDOM ACCESS로 인한 부하로 성능지연이 발생할수 있음 - 후행(Driven) 테이블에는 조인을 위한 인덱스가 생성되어 있어야 함 - 실행속도 = 선행 테이블 사이즈 * 후행 테이블 접근횟수 색인된 중첩 반복 조인, 단일 반복 조인 (SINGLE LOOP JOIN) - 후행(Driven) 테이블의 조인 속성에 인덱스가 존재할 경우 사용 - 선행 테이블의 각 레코드들에 대하여 후행 테이블의 인덱스 접근 구조를 사용하여 직접 검색 후 조인하는 방식 정렬 합병 조인 (SORT MERGE JOIN) - 해당 테이블의 인덱스가 없을때 수행 - 테이블을 정.. 더보기
성능 데이터 모델링 / 정규화 / 반정규화 성능 데이터 모델링 성능 데이터 모델링이란 데이터베이스 성능향상을 목적으로 설계단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블통합, 테이블분할, 조인구조, PK, FK 등 여러 가지 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것 일반적으로 성능이라고 하면 데이터조회의 성능을 의미함, 업무에 따라서는 입력/수정/삭제의 성능이 중요한 경우도 있음 분석/설계 단계에서 데이터 모델에 성능을 고려한 데이터 모델링을 수행할 경우 성능저하에 따른 재업무(Rework) 비용을 최소화 할 수 있음 성능 데이터 모델링의 순서 데이터 모델링을 할 때 정규화를 정확하게 수행한다. 데이터베이스 용량산정을 수행한다. 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다. 용량과 트랜잭션의 유형에 따라 반정규.. 더보기
관계 관계의 분류 관계를 연결함에 있어 어떤 목적으로 연결되었느냐에 따라 존재에 의한 관계와 행위에 의한 관계로 분류 존재에 의한 관계 : 황경빈사원은 그냥 DB팀에 소속되어 있다. 행위에 의한 관계 : 주문번호는 김경재 고객이 ‘주문한다’라는 행위에 의해 발생된다. 관계 표기법 관계명(Membership) : 관계의 이름 엔터티가 관계에 참여하는 형태를 지칭 애매한 동사를 피한다. 예를 들면 ‘관계된다’, ‘관련이 있다’, ‘이다’, ‘한다’ 등은 구체적이지 않아 어떤 행위가 있는지 또는 두 참여자간 어떤 상태가 존재하는지 파악할 수 없다. 현재형으로 표현한다. 예를 들면 ‘수강을 신청했다’, ‘강의를 할 것이다’라는 식으로 표현해서는 안된다. ‘수강 신청한다’, ‘강의를 한다’로 표현해야 한다. 관계차수(.. 더보기
엔터티 / 속성 엔터티(Entity) 엔터티 = 인스턴스의 집합 인스턴스 = 엔터티의 하나의 값 엔터티의 특징 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다. 유일한 식별자에 의해 식별이 가능해야 한다. 영속적으로 존재하는 두 개 이상의 인스턴스의 집합이어야 한다. 엔터티는 업무 프로세스에 의해 이용되어야 한다. 엔터티는 두 개 이상의 속성이 있어야 한다. 주식별자만 있어선 안 된다. 공통코트, 통계성 엔터티, 관계 엔터티의 경우 예외 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다. 엔터티의 분류 유무(有無)형에 따른 분류 유형엔터티(Tangible Entity) : 물리적인 형태가 있고 안정적이며 지속적으로 활용되는 엔터티 (사원, 물품, 강사 등) 개념엔터티(Conceptual Ent.. 더보기
SQL 기본 ER모델 항목 카디날리티(Cardinality) : 특정 데이터 집합의 유니크(Unique)한 값의 개수, '주민등록번호'는 중복이 없으므로 카디널리티가 높음, '성별'은 남 여 두 가지 값을 가지므로 카디널리티가 2 도메인(Domain) : 속성에서 값이 가질 수 있는 허용범위 인스턴스(Instance) : 값 차수(Degree) : 테이블 컬럼의 개수 (속성의 수) 트랜잭션의 특성 원자성(atomicity) 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. 일관성(consistency) 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안 된다. 고립성(isolat.. 더보기
DML DML(Data Manipulation Language) - 정의된 데이터베이스에 레코드를 입력, 수정, 삭제, 조회하기 위한 명령어 INSERT : 데이터 입력, UPDATE : 데이터 수정, DELETE : 데이터 삭제 데이터 입력 INSERT INTO 테이블명 (컬럼명1, 컬럼명2) VALUES (컬럼명1_값, 컬럼명2_값); >> 컬럼명 지정이 이루어지지 않은 상태에서는 전체값이 들어가야 함 데이터 수정 UPDATE 테이블명 SET (); 데이터 삭제 DELETE FROM 테이블명 (WHERE 조건); >> FROM 생략 가능 >> DB에 반영되기 전에는 되돌릴 수 있음 SELECT : 조회 데이터 조회 SELECT 컬럼명 FROM 테이블명 WHERE 조건 GROUP BY 컬럼명 HAVING 조건.. 더보기
DCL / DDL / TCL DCL(Data Control Language) - 데이터베이스 사용자에게 권한을 부여, 회수하는 언어 권한의 종류 : SELET, INSERT, UPDATE, DELETE, REFERENCES, ALTER, INDEX, ALL GRANT : 권한 부여, REVOKE : 권한 회수 권한 부여 GRANT 권한 ON 테이블 TO 유저; GRANT 권한 ON 테이블 TO 유저 WITH GRANT OPTION; >> 부여받은 권한을 다른 유저에게 부여할 수 있게 됨 >> 부모의 권한이 회수될 때 자식의 권한도 회수 GRANT 권한 ON 테이블 TO 유저 WITH ADMIN OPTION; >> 부여받은 권한을 다른 유저에게 부여할 수 있게 됨 >> 부모의 권한이 회수되어도 자식의 권한은 유지 권한 회수 REVOK.. 더보기
IIFE IIFE IIFE란 Immediately Invoked Function Expression의 약자로, 즉시 실행되는 함수표현식 이라는 뜻 즉시 실행 함수 표현식 즉시 실행 함수는 함수 리터럴을 ()로 감싼 뒤 바로 실행하는 형태가 일반적이다. (function () { console.log('Hello') })(); // "Hello" IIFE는 크게 두 부분으로 구성된다. 첫 번째는 괄호()로 둘러싸인 익명함수(Anonymous Function)이다. 이는 전역 스코프에 불필요한 변수를 추가해서 오염시키는 것을 방지할 수 있을 뿐 아니라 IIFE 내부 안으로 다른 변수들이 접근하는 것을 막을 수 있는 방법이다. 두 번째는 즉시 실행 함수를 생성하는 괄호()이다. 이를 통해 자바스크립트 엔진은 함수를 즉.. 더보기