목록전체 글 (87)
매일 매일 미라클 코딩
반정규화를 정의하면 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발(Development)과 운영(Maintenance)의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법을 의미한다. 협의의 반정규화는 데이터를 중복하여 성능을 향상시키기 위한 기법이라고 정의할 수 있고 좀 더 넓은 의미의 반정규화는 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정을 의미한다. 데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는 데이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나 칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정..
모델링의 특징 1) 추상화 2) 단순화 3) 정확화 -> 모델링은 단지 시스템 구현만을 위한 것이 아니라, 그를 포함한 업무분석 및 업무 형상화를 하는 목적도 있음 데이터 모델링시 유의사항 1) 중복 : 데이터베이스가 여러장소에 같은 정보를 저장하지 않도록 한다 2) 비유연성 : 사소한 업무변화에도 데이터 모델이 수시로 변경됨으로써 유지보수의 어려움을 가중시킬 수 있다. 그러므로 프로세스와 데이터 정의를 분리하여, 프로세스의 작은 변화가 데이터에 (혹은 데이터의 변화가 애플리케이션에) 중대한 변화를 일으킬 수 있는 변화를 줄인다. 3) 비일관성 : 프로세스와 테이블의 연계성을 높일 경우 데이터 수정시 다른 데이터와의 모순이 발생할 수 있다. 때문에 데이터를 모델링할 때 데이터와 데이터간의 상호 연관관계에..
DECODE: if else 문과 같은 기능을 수행하는 함수 ex) DECODE( 컬럼명, '조건1', '결과1', '조건2', '결과2', .... , 해당조건 없을 때 결과[ELSE - 생략가능]) # decode 함수 예시 SELECT emp_cd, DECODE(edmp_cd, 'A', '사원' ,'B', '선임' ,'C', '책임' ,NULL) as emp_job FROM emp_table; CASE WHEN - CASE WHEN 조건 THEN 결과 ELSE 결과 END - 꼭 END 문으로 종료되어야하며, 조건 사이에 컴마(,) 는 들어가지 않음 - 결과에 NULL 이 들어갈 수 없음 # CASE WHEN 문 예시 SELECT emp_cd , CASE WHEN emp_cd = 'A' THEN '..
MERGE INTO 절은 대상테이블에 기준테이블의 특정 키에 해당하는 데이터가 있으면 UPDATE, 없으면 INSERT 할 수 있는 구문 → SEARCH , INSERT, UPDATE 를 하나로 묶은 기능 사용예 MERGE INTO target_table TT --대상테이블 USING ( -- 기준테이블 SELECT col1, col2, col3 FROM source_table ) ST ON ( -- 대상 테이블에서 기준테이블과 비교할 키 TT.col1 = ST.col1 ) --대상테이블에 내가 가진 키가 있을때 UPDATE WHEN MATCHED THEN ( UPDATE SET TT.col2 = ST.col2 ) -- 대상테이블에 내가 가진 키 없을 때 데이터 추가 INSERT WHEN NOT MATC..