+ All Categories
Home > Documents > Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계...

Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계...

Date post: 04-Jul-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
30
Transcript
Page 1: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage
Page 2: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

Data Architecture 구축을 위한실무 수행 방안

마 도 현TA 팀한국오라클

Page 3: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

순 서

통합 Data Architecture 개요

통합 Data Architecture 구축 절차

통합 Data Modeling 단계별 정의 및 ActivityReverse Modeling 개요 및 수행 절차

Reverse Modeling 실전 적용 절차

Reverse Modeling을 활용한 성능 개선(예제) Q & A

Page 4: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

통합 Data Architecture 개요

통합 Data Architecture 구성

운영 데이타 모델운영 데이타 모델

분석 데이타 모델분석 데이타 모델

메타 데이타 모델메타 데이타 모델

데이타의데이타의

일관성일관성

정보활용정보활용

극대화극대화

통합통합 된된OneOne--ViewView

독립/분산/중복 운영으로 인한 데이타의 중복 및

불 일치의 산재 (Integrity]

부분별 업무 목적에 따른 운영계 시스템의 구축으

로 인한 통합 전략의 부재 [Strategy]

각 부분 간의 데이타의 표준 체계의 부재로 변환,Interface 시의 복잡한 과정으로 인한 관리의 비

효율이 존재 [Manageability]

전체적인 통합 데이타 모델의 부재로 데이타 및 주

제 영역 추가에 따른 유연성이 없음 [Availability]

As-Is Data Architecture

Page 5: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

정확한 AS-IS 데이타 모델 작성정확한 AS-IS 데이타 모델 작성

통합 Data Architecture 구축 절차

ER Model

AS-IS데이타 모델링

Data DesignRepository

Reverse데이타 Design

SQL 유형 조사로부터

추가적인 관계 수집

Constraint(PK/FK)의관계 반영

Object(Table/Column) 업무적 용어 Mapping

AS-ISSchema DDL 작성

Process/Function구조 모델

•핵심 엔터티 수집

•업무적 관점의 관계 정의

•식별자의 지정

•핵심 엔터티 수집

•업무적 관점의 관계 정의

•식별자의 지정

•상세 엔터티/관계 조사

•주요 속성 수집 및 조사

•상세 엔터티/관계 조사

•주요 속성 수집 및 조사

AS-ISDatabase Schema

•복수의 Phase를 통해

엔터티/관계/속성 수집

•복수의 Phase를 통해

엔터티/관계/속성 수집

AdvancedLogical

Data Model

•논리성 완성화

(정규화,특수 관계 정의)

•논리성 완성화

(정규화,특수 관계 정의)

AS-IS Reverse Modeling

PhysicalData Model

DatabaseDesign

TO-BE Business Model Conceptual

Data Model

BasicLogical

Data Model

Detail Logical

Data Model

TO-BE 논리 데이타 모델TO-BE 논리 데이타 모델

물리적요소 고려에 의한

설계(Volume,Resource)

물리적요소 고려에 의한

설계(Volume,Resource)

TO-BE 물리 모델 및 DesignTO-BE 물리 모델 및 Design

운영 Data Model 및정보/분석 Data Model의 분류

운영 Data Model 및정보/분석 Data Model의 분류

현 시스템의진단

결과

참조

개선 활동 수행

To-Be Business Model의Data 관점에서 반영

To-Be Business Model의Data 관점에서 반영

AS-IS 시스템 진단 및분석을 통한 개선점 도출

AS-IS 시스템 진단 및분석을 통한 개선점 도출

Page 6: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

2 단계 : 기본 논리 데이타 모델링 (Basic Logical Data Modeling)2 단계 : 기본 논리 데이타 모델링 (Basic Logical Data Modeling)

3 단계 : 상세논리 데이타 모델링 (Advanced Logical Data Modeling)3 단계 : 상세논리 데이타 모델링 (Advanced Logical Data Modeling)

4 단계 : 물리 데이타 모델링 (Physical Data Modeling)4 단계 : 물리 데이타 모델링 (Physical Data Modeling)

1 단계 : 개념 데이타 모델링 (Conceptual Data Modeling)1 단계 : 개념 데이타 모델링 (Conceptual Data Modeling)

5 단계 : 데이타베이스 디자인 (Database Design)5 단계 : 데이타베이스 디자인 (Database Design)

데이타 모델 대상의 업무(Business] 범위의 정의 및 범위에 대한 기본/핵심 엔터티와 Business Unit과의 관계를

개념적으로 표현하여 최상위 Level의 개념적 E-R 모델을 완성

개념적 E-R 모델에서 엔터티, 속성, 릴레이션, PK 등을 논리적 기법을 통해 초기 E-R Model을 작성하고

반복적 검증을 통해 Business 범위 내의 요구의 누락이 없는 E-R Model을 완성

기본 E-R 모델에 대해서 논리적인 기법 등을 적용하여 논리적인 완성을 이루며 이력 관리 등 추가적인 요구에

대한 모델을 확장하여 최종 논리 데이타 모델링을 완성

데이타베이스 디자인 단계로 이행 전에 성능적인 요소 (H/W,DBMS, Network, Access 유형, 대용량 Volume)등을 고려한 엔터티의 분할, 중복, 통합, 추가 등을 통한 물리적 요소를 고려한 물리적 데이타 모델을 완성

물리 데이타 모델 결과를 DBMS Implement를 위한 DDL, 초기 Index 설계, 추가 Object(View,Synonym등) 정의,Storage전략, Constraint 적용, 분산 DB 범위를 결정하여 이행을 위한 모든 준비 과정을 완성

통합 Data Modeling 단계별 정의

Page 7: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

통합 Data Modeling 단계별 Activity

기준 및 설계

Guide 제시

PK/FK 및 업무적 관점의 Index 적용초기 Index 설계

접근 유형에 따른 View의 설계

Storage 전략 수립

Constraint 적용 원칙 수립

분산 DB 기준 수립

데이타베이스

디자인

물리적 고려 요소

검토서

관계 및 PK의 형태에 따른 성능 요소 검토

대응도가 높은 관계에 대한 반정규화 검토

수평(Partition),수직 분할 대상 엔터티 검토

인공키 적용 검토

관계대응(Degree)의 물리적 영향 검토

반정규화 (수직/수평)

물리 데이타

모델링

세부적인 논리적

검증 작업 수행

(검증 절차서

참조)

중복 데이타 해소

특수 형태 모델화를 통한 모델의 효율화

시 계열 관리의 일관성

논리 모델의 완성

Column Wise/Row Wise 모델 결정

M-M 관계 해소

정규화 수행 (제 1/2/3 정규형)특수 모델 검증

시 계열(Historic) 모델 적용

동질 속성의 모델 형태 결정

상세 논리

데이타 모델링

과도 및 중복

도출을 허용

기본 ER의 완성

업무 범위 내의 표현 누락 여부 검증

(반복하여 수행)

엔터티/관계의 추가 도출

엔터티의 PK 정의

속성의 적극적 도출

기본 논리

데이타 모델링

업무 범위 및

요구 사항의 분석

적용 용어의 통일을 통한 표준화

기본 ER의 작성 1 단계

기본 ER의 작성 2 단계

기본 ER의 작성 3 단계

용어집 작성

기본/핵심 엔터티 도출

업무적 관점의 관계 도출

주요 속성의 도출

개념 데이타

모델링

AS-IS Reverse Model

업무 범위 정의를 위한 기본 정보 수집AS-IS 정보 수집

업무에 대한 설명 및 요구 사항 파악

사전 준비

단계

Remark수행 목적수행 Activity단계

Page 8: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

Reverse Modeling

현재의 시스템으로부터 가장 정확하고 단기간에 데이타

모델을 구축

향 후 To-Be 통합 Data Architecture 구축을 위한 AS-IS 분석 자료의 기본으로 활용

Reverse Engineering 과정에서 시스템의 진단 및 개선

활동의 Side Effect 달성

대부분의 과정이 자동화가 가능하며 수행 결과를

Repository화하여 관리

Page 9: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

Reverse Engineering 수행 절차

리버스 대상DB Schema 결정

필요 정보 수집

Get_ddlschemautility를 통한

DDL Script 수집

SQL Usage정보 수집

추가적인관계 정보 수집

SQL 사용 형태로부터관계 정보 수집 후DDL Script에 반영

AS-IS 데이타 모델 완성

최종 DDL Script 완성CREATE TABLE APW_CHANGE (

ENTITY CHAR(12) NOT NULL,NEW_MAIN CHAR(20) NOT NULL,NEW_ENT CHAR(20) NOT NULL,OLD_MAIN CHAR(20) NOT NULL,OLD_ENT CHAR(20) NOT NULL);

ALTER TABLE APW_CHANGEADD CONSTRAINT XPK_APW_CHANGEPRIMARY KEY(ENTITY);

ALTER TABLE WIPRTO ADD CONSTRAINT WIPRTO_FK1FOREIGN KEY (WRTO_FACILITY,WRTO_OPER)REFERENCES WIPOPR (WOPR_FACILITY,WOPR_OPER);

데이타 모델 검증 작업

정규화

상품출고# 출고일자* 출고수량

매장# 매장번호* 매장명o 주소o 규모

직원# 직원번호* 성명* 주민등록번호

계약직원* 시급o 계약시작일자o 계약만료일자

정규직원* 사번* 직급* 입사일자

출고

출고

소속

소속

Super-Sub Type 모델

성향분석항목# 항목코드* 항목구분* 항목명

상품단가이력# 유효시작일자* 유효종료일자* 단가

주문내역* 주문수량* 입고예정일자

불만사항담당자o 처리내용

판매내역# 판매순번* 판매수량

불만사항# 접수번호* 접수일시* 불만유형* 처리상태* 처리결과

판매# 판매번호* 판매일자* 판매금액* 지불구분* 판매구분o 배송지o 배송일자o 결제카드번호o POS단말번호o POS단말기모델

직원# 직원번호* 성명* 주민등록번호* 직원분류

환불# 환불순번* 환불일자* 환불수량

상품판매성향# 판매년월* 항목값

매장# 매장번호* 매장명o 주소o 규모

계약직원* 시급o 계약시작일자o 계약만료일자

정규직원* 사번* 직급* 입사일자

상품출고# 출고번호* 출고일자* 출고수량

상품입고# 입고번호* 입고일자* 입고수량

고객구매성향# 구매년월* 항목값

보너스카드# 보너스카드번호* 카드구분* 발행일자o 누적보너스점수

고객# 고객번호* 성명o 주민등록번호o 자택전화번호o 핸드폰번호

주문# 주문번호* 주문일자* 처리상태

공급처# 공급자번호* 공급자명o 사업자등록번호o 매출액

상품분류# 상품분류코드* 상품분류명* 상품분류레벨

상품# 상품번호* 상품명* 단가* 포장단위* 등록일자* 모델명o 적정재고량

판매

판매

계약직

계약직

정규직

정규직

분석항목분석항목

분석항목

분석항목

구매성향

구매성향

단가변동

단가변동

환불

환불

주문상품

주문상품

내역

내역

할당

할당

담당

담당

판매내역

판매내역

판매되어

판매되어

구매

구매

불만

불만

불만

물만

이전카드

신규카드

상위분류

하위분류

공급

공급

판매성향

판매성향

소속

소속

납품

납품

소지

소지

입고

입고

출고

출고

출고

출고

분류

분류

Page 10: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

Reverse Modeling실무 적용 절차

Page 11: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

DDL Script 수집 및 완성

AS-ISDatabaseSchema

Create Table Product_Class(Product_Class_Code varchar2(10),Product_Class_Name varchar2(30),Product_Class_Level number,Upper_Product_Class_Code varchar2(10),Constraint Product_Class_PK primary key(Product_Class_Code));

Alter Table Product_Classadd constraint Product_Class_Fk1 foreign key(Upper_Product_Class_Code)

references Product_Class(Product_Class_Code);

………………….………………….………………….

Create Table Sale_Detail(Sale_Sequence number,Detail_Sequence number,Sale_Date varchar2( 8),Product_Code varchar2(10),Sale_Quantity number,Constraint Sale_Detail_PK primary key(Sale_Sequence,Detail_Sequence));

Alter Table Sale_Detailadd constraint Sale_Detail_FK1 foreign key(Sale_Sequence)

references Sale_Master(Sale_Sequence);

Alter Table Sale_Detailadd constraint Sale_Detail_FK2 foreign key(Product_Code)

references Product(Product_Code);

Select a.supplier_name,b.product_name as main_product_name from supplier a, product b Where a.main_product_code = b.product_code;

Main_product_code

SupplierProduct_code

product

Select a.product_name,sum(b.total_sale_amount) from product a, product_history b where b.sale_yyyymm between :v1 and :v2 and a.product_code = b.product_code group by a.product_name;

Product_Code

PRODUCT_HISTORY

Product_Code

PRODUCT

SQL UsageColumn Name

Child Table

Column Name

Master Table

기존Schema설계서

Create Table Product_Class(Product_Class_Code varchar2(10),Product_Class_Name varchar2(30),Product_Class_Level number,Upper_Product_Class_Code varchar2(10),Constraint Product_Class_PK

primary key(Product_Class_Code));

……………….………………….………………….

Create Table Sale_Detail(Sale_Sequence number,Detail_Sequence number,Sale_Date varchar2( 8),Product_Code varchar2(10),Sale_Quantity number,Constraint Sale_Detail_PK primary key(Sale_Sequence,Detail_Sequence));

Get_DDLscript

SQL Usage 조사분석Relationship 반영

용어사전집을이용한한글화변환

(Optional)

Page 12: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

JOIN 유형에서 한쪽 Table의 JOIN에 PK가수반되면 다른 JOIN TABLE과 관계가 존재한다

규칙

PK 정보 : Table1 (COL1+COL2)

Query 중 다음의 조건을 가정한다면

SELECT *

FROM Table1, Table2

WHERE Table1.col1 = Table2.col1

AND Table1.col2 = Table2.col2

에서 Table1의 PK가 col1+ col2이면 Table2의

Col1,col2는 Table1의 PK를 참조(Reference)

하는 외부 Key (Foreign Key) 이다. 즉,

Table1과 Table2 사이에는 1:M의 관계가 존재

함을 말한다. 이를 DDL로 표현하면 다음과

같다.

ALTER TABLE TABLE2 ADD CONSTRAINT TABLE2_FK1FOREIGN KEY(COL1,COL2 )REFERENCES TABLE1(COL1,COL2);

수집 예

일반JOIN 형태,SUB-QUERY, COMPOUND QUERY대상 SQL

기준 및 내용항목

TABLE2# COL1# COL2# COL3o ATTR21o ATTR22

TABLE1# COL1# COL2o ATTR11o ATTR12o ATTR13

REL

REL

TABLE1# COL1# COL2o ATTR11o ATTR12o ATTR13

TABLE2# PK1# PK2* COL1* COL2* COL3o ATTR21o ATTR22

REL

REL

SQL Usage에서 관계 정의

Table2의 PK : COL1,COL2를 포함 한 경우

Table2의 PK : COL1,COL2를 포함 하지 않은 경우

Page 13: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

SELECT RTRIM(WRTE_RT_GRP_1) X_FABID,WPRD_PRD_GRP_3 X_DEVICE,WRTO_SEQ_NUM SEQ,WOPR_OPER X_OPER,WOPR_LONG_DESC OPER_DESC,WOPR_OPR_GRP_3 V_GUGAN,WOPR_OPR_GRP_2 V_AREA

FROM WIPPRD,WIPPRR,WIPRTO,WIPOPR,WIPRTE

WHERE WPRD_FACILITY = :B2AND WPRR_FACILITY = :B2AND WRTO_FACILITY = :B2AND WOPR_FACILITY = :B2AND WRTE_FACILITY = :B2AND WPRD_PROD = WPRR_PRODAND WPRR_ROUTE = WRTO_ROUTEAND WPRR_ROUTE = WRTE_ROUTEAND WRTO_OPER = WOPR_OPERAND WRTO_OPER <= 9880AND WPRR_SEQ_NUM BETWEEN 1 AND 2)

WOPR_FACILITY+WOPR_OPERWIPOPRWRTO_FACILTY + WRTO_OPER + WRTO_ROUTEWIPRTOWPRR_FACILITY + WPRR_PROD + WPRR_ROUTEWIPPRR

WRTE_FACILITY + WRTE_ROUTEWIPRTE

WPRD_FACILITY + WPRD_PRODWIPPRDPrimary KeyTable명

ALTER TABLE WIPPRR ADD CONSTRAINT WIPPRR_FK1FOREIGN KEY(WPRR_FACILITY,WPRR_PROD) REFERENCES WIPPRD(WPRD_FACILITY,WPRD_PROD);ALTER TABLE WIPPRR ADD CONSTRAINT WIPPRR_FK2FOREIGN KEY(WPRR_FACILITY,WPRR_ROUTE)REFERENCES WIPRTE(WRTE_FACILITY,WRTE_ROUTE);ALTER TABLE WIPRTO ADD CONSTRAINT WIPRTO_FK2FOREIGN KEY(WRTO_FACILTY,WRTO_ROUTE)`REFERENCES WIPRTE(WRTE_FACILITY,WRTE_ROUTE);

RPT WIPRTO* RTP_SEQ_NUMo WOPR_OPR_GRP_1o WOPR_OPR_GRP_2o WOPR_OPR_GRP_3o WOPR_USRDF_SMDAT_4o WOPR_USRDF_BGDAT_3o WOPR_USRDF_BGDAT_5o WOPR_USRDF_SMDAT_3

WIPRTOo WRTO_SEQ_NUMo WRTO_MILSTNo WRTO_PROD_UNT_1o WRTO_CLCT_LBR_DATo WRTO_CST_DAT_ENTo WRTO_MVOU_REQo WRTO_MVIN_REQo WRTO_REDFN_PRDo WRTO_STRT_WFR_TRCo WRTO_STOP_WFR_TRCo WRTO_CST_DA_ENT_ALo WRTO_YLD_DAT_EN_PLo WRTO_MSG_INOUT_FLGo WRTO_ML_INOUT_FLGo WRTO_ALT_RT_ALWDo WRTO_OPR_SHRT_DESCo WRTO_LOSS_CD_TBo WRTO_BONUS_CD_TBo WRTO_REDO_CD_TBo WRTO_RWRK_CD_TBo WRTO_RWRK_RTo WRTO_ALT_RT_GRPo WRTO_PRD_UT_2o WRTO_PRD_UT_3o WRTO_SPEC_IDo WRTO_SCRIPT_IDo WRTO_RWRK_RET_RTo WRTO_RWRK_END_RTo WRTO_RT_OP_STS_1o WRTO_RT_OP_STS_2o WRTO_RT_OP_STS_3o WRTO_MVOU_PRM_STo WRTO_MVIN_PRM_STo WRTO_RWRK_PRM_STo WRTO_SCP_WIP_EF_PTo WRTO_PSET_CPYDWNo WRTO_MCH_ID_VALIDo WRTO_MCH_ID_GTS_TBo WRTO_OPID_VALIDo WRTO_OPID_GTS_TBo WRTO_YIELDo WRTO_YIELD_ALTo WRTO_QUE_CYC_TMo WRTO_PROC_CYC_TMo WRTO_STORE_OPERo WRTO_REWORK_OPERo WRTO_MVIN_HRSo WRTO_MVIN_MINo WRTO_MVOU_HRSo WRTO_MVOU_MINo WRTO_MVIN_AFT_HRo WRTO_MVIN_AFT_MINo WRTO_MVOU_AFT_HR...

WIPRTE# WRTE_ROUTEo WRTE_LST_RT_OPRo WRTE_RT_GRP_1o WRTE_RT_GRP_2o WRTE_DESCo WRTE_USRDF_BGDAT_1o WRTE_USRDF_BGDAT_2o WRTE_USRDF_BGDAT_3o WRTE_USRDF_BGDAT_4o WRTE_USRDF_BGDAT_5o WRTE_USRDF_SMDAT_1o WRTE_USRDF_SMDAT_2o WRTE_USRDF_SMDAT_3o WRTE_USRDF_SMDAT_4o WRTE_USRDF_SMDAT_5o WRTE_RTE_STS_1o WRTE_RTE_STS_2o WRTE_RTE_STS_3o WRTE_QUE_TM...

WIPPRRo WPRR_SEQ_NUMo WPRR_PREV_RTo WPRR_NEXT_RT

WIPPRD# WPRD_PRODo WPRD_PRD_GRP_1o WPRD_PRD_GRP_2o WPRD_PRD_GRP_3o WPRD_PRD_GRP_4o WPRD_PRD_GRP_5o WPRD_LST_RTEo WPRD_RSTRCTDo WPRD_BAS_CST_ENTRDo WPRD_BASCST_ENT_ALo WPRD_BASCST_MANLo WPRD_BASCST_MAN_ALo WPRD_DESCo WPRD_MATRL_TYPo WPRD_INV_CLASSo WPRD_USRDF_BGDAT_1o WPRD_USRDF_BGDAT_2o WPRD_USRDF_BGDAT_3o WPRD_USRDF_BGDAT_4o WPRD_USRDF_BGDAT_5o WPRD_USRDF_SMDAT_1o WPRD_USRDF_SMDAT_2o WPRD_USRDF_SMDAT_3o WPRD_USRDF_SMDAT_4o WPRD_USRDF_SMDAT_5o WPRD_PRD_STS_1o WPRD_PRD_STS_2o WPRD_PRD_STS_3o WPRD_BAS_MATRLo WPRD_BAS_LBRo WPRD_BAS_OH_LB_TMo WPRD_BAS_OH_LB_CSTo WPRD_BAS_OH_MC_TMo WPRD_BAS_OH_NM_UNTo WPRD_BAS_SUBCNTRo WPRD_BAS_MATRL_ALTo WPRD_BAS_LBR_ALT...

WIPOPR# WOPR_FACILITY# WOPR_OPERo WOPR_OPR_GRP_1o WOPR_OPR_GRP_2o WOPR_OPR_GRP_3o WOPR_OPR_FRZNo WOPR_INRNSTo WOPR_SHIPPINGo WOPR_STOREo WOPR_MOVE_WANDo WOPR_RAT_DAT_ENTRDo WOPR_RT_DAT_ENT_ALo WOPR_PROD_UNIT_1o WOPR_SHORT_DESCo WOPR_LOSS_CODE_TBLo WOPR_BNS_CODE_TBLo WOPR_REDO_CODE_TBLo WOPR_RWRK_CODE_TBLo WOPR_PROD_UNIT_2o WOPR_PROD_UNIT_3...

rpt_wiprto_fk1

_rpt_wiprto_fk1

_wiprto_fk1

wiprto_fk1

_wiprte_fk1

wiprte_fk1

wipprd_fk1

_wipprd_fk1

_wipprr_fk1

wipprr_fk1wipprr_fk2

_wipprr_fk2_wiprto_fk2

wiprto_fk2

E-R ModelE-R Model

SQL Usage에서 관계 정의(예제)

Page 14: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

Oracle DesignerDesign Editor/Capture Design

Schema TR Diagram(STRD)

Create Table Product_Class(Product_Class_Code varchar2(10),Product_Class_Name varchar2(30),Product_Class_Level number,Upper_Product_Class_Code varchar2(10),Constraint Product_Class_PK primary key(Product_Class_Code));

Alter Table Product_Classadd constraint Product_Class_Fk1 foreign key(Upper_Product_Class_Code)

references Product_Class(Product_Class_Code);

………………….………………….………………….

Create Table Sale_Detail(Sale_Sequence number,Detail_Sequence number,Sale_Date varchar2( 8),Product_Code varchar2(10),Sale_Quantity number,Constraint Sale_Detail_PK primary key(Sale_Sequence,Detail_Sequence));

Alter Table Sale_Detailadd constraint Sale_Detail_FK1 foreign key(Sale_Sequence)

references Sale_Master(Sale_Sequence);

Alter Table Sale_Detailadd constraint Sale_Detail_FK2 foreign key(Product_Code)

references Product(Product_Code);

AS-ISDDL Script

Designer를 이용한 Repository 작성

Page 15: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

AS-IS ER Model 완성Schema TR Diagram

(STRD)AS-IS ER Diagram

(ERD)

Oracle DesignerEntity Relationship Diagrammer

Utility/Table to Entity Retrofit

Page 16: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

Data Modeling 검증 및 개선 작업

Column-Wise/Row-Wise 모델동질의 Column의 Vector성

다양한 모델 형태별 검토(엔터티의 통합성,특수 형태의 모델 관계)

이력 관리의 형태 조사시 계열(Historic) 적용 방법의타당성

Type의 일관성 유지 여부 조사Datatype 일관성

배타적 관계 조사(SQL 유형 조사)Exclusive Type

Super-Sub Type 설계 Table 조사Super-Sub Type

PK Column 수의 과도성에 따른 Join 비용 고려(Artificial Key 적용 여부 고려)

PK의 물리적 개선

Index 설계 검증

Recursive Type

제 3 정규형

제 2 정규형

제 1 정규형

1:M 관계의 조사

PK의 논리성

세부 항목

Non-Pk의 PK 전체에 대한 종속성

동일 성격의 컬럼의 반복성 배제

계층관계 조가(SQL 유형 조사)

Non-PK 사이의 종속성 배제

정규화(Normalization)

접근 경로 반영 벼부Index 구성 컬럼 조사불 필요 Index 필요 여부 조사

물리적 고려 요소

관계의 논리적인 정확성1:M의 Degree의 조사/분석

Relationship 검증

유일성 확보의 최소 Column의 구성 여부Primary Key 검증

내용검증 항목

Page 17: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

SQL 유형에서의 Data Modeling 검증

Join에 수반되는 Table의 모델 검토1-1 Recursive 관계가 성립되지 않는지 검증2개 Table Outer Join 사용

해당 부분의 모델 및 디자인 부분 검증기본적인 관계에 의한 디자인 변환의 오류예상

Join Query 중에 Join Column이변형(Suppressing) 되어 Join이 되는경우

실행 계획 및 관련 Table의 모델 및디자인 검토

특별한 문제가 있다기보다는 최적화 여부를판단 할 필요가 있음(관계의 논리성 검증)

5개 이상의 Table을 Join 하는Query가 자주 사용된다.

관계를 맺고 있는 Table 과의 모델 검토요망

문제가 있는 지의 여부를 판단(Depth Level, Artificial Key의 적용 가능성)

PK의 구성 컬럼이 5개 이상인 Table이존재

Aggregation (Group by,Distinct) 사용View의 검토를 통해 사용 상의 최적화수행(반정규화 검증)

사용 View들의 SQL Definition 검증Aggregation View가 일반 Table과의Join형태로 많이 사용된다

Super-Sub Type의 엔터티를 조사하여디자인 결정부분의 요소를 재 검증

Partitioning 적용 가능성(Partition Column, Volumn 등의 고려)

- Super-Sub Type 모델 및 디자인 결정

- Partitioning 적용 여부 검토

Union/Union All이 많이 사용 된다

동시 사용성의 검증을 통해 사용분산도의 증가 가능 여부 검토

Lock Table이 Serial 번호 생성 부분이 있는경우 생성 Logic 및 설계 검토

Locking이 자주 발생(Wait Event 상의Enqueue가 많다)

정규화( Normalization ) 적용해당 부분의 중복성 여부(제 2,3 정규형 위배여부)

Distinct operation이 많다

필요 Activity검증 부분SQL Access 유형/진단 결과

Page 18: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

Data Modeling 검증

방법 3방법 2방법 1설계방법

다른 엔터티와의 관계가 Sub Table에 집중되어 있는 경우

다른 엔터티와의 관계가 Super/Sub Table 모두에 있는 경우

다른 엔터티와의 관계가Super Table에만 있는 경우

관계

각 Sub-Table로만

설계(모든 속성을 Sub-Table 각각이포함하도록 설계)

1 Super Table 및 각 Sub-Table로 설계(공통 속성은 Super로 각각의 속성은

Sub Table로 설계)

Super Table 하나로만

설계 (모든 속성을 Super Table로 통합)

설계 전환 방법

각 Table간의 무결성 보장이 요구되지 않음

Super와Sub 간의 Integrity 보장이필요

Nullify 되는 Column의 관리무결성 보장 원칙

필요 없음Super Table에 분류 Column이 필요분류 Column이 필요추가적인 설계

요구 사항

통합 정보 요구 시 Union 형태의Query가 사용되며 성능 상의

주의가 요구 됨

통합 정보 및 각각의 정보 접근이 모두사용 빈도가 높을 경우 (Outer-Join이

필수적으로 사용 됨)

일반적인 Single Table Query로 사용 됨

업무적 요구에따른Query 사용 형태

각각 Subtype 위주로 접근하는경우가 많은 경우

통합 및 각 Sub 위주의 접근이 같이사용 되는 경우

Super(통합) 위주의 접근이많을 경우

접근 경로

각각 Subtype의 속성으로만되어있는 경우

공통 속성 및 각각 Sub-type 만의속성이 많을 경우

공통 속성이 편중되어 많을경우

속성

Super-Sub 모델의 설계 고려 항목 및 기준

Page 19: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

To-Be ER-Modeling

STKINF# STK_ID* STK_NAME* BAY_NO* MAX_QTY* CUR_QTY* STC_MODE* EQUIP_STATUS* EQUIP_STATUS_ROBOT* PORT_STATUS_MANUAL* PORT_STATUS_TFE* FLAG_MAINT_REQUIRED...

EQPLOC# FACILITY# EQUIP_ID* BAY_NO* AREA* STK_ID1* STK_ID2* STK_ID3* STK_ID4* AUTO_MODE* EQUIP_CTL_MODE* TRANS_MODE...

CSTINF# CST_ID* FACILITY* CST_TYPE* MATERIALo CST_SIZE...

LOGINF# FACILITY# LOG_SHEET_ID# SEQ_NO* LOG_SHEET_DESCo SCREEN_WIDTH* L_NAME* M_NAME* S_NAME...

WAFSTS* FACILITY# WAFER_ID* LOT_NUMBER* CST_ID* SLOT_NO* WAFER_TYPE* USE_FLAG* TEST_FLAG...

LOGHIS_ALL

VISHIS* FACILITY* PROD# ROUTE# OPER# LOT_NUMBER...

TSTHIS# FACILITY# AREA# TRANS_DATE_TIME# WAFER_TYPE...

TOLHIS# FACILITY# TOOL_ID# TOOL_TYPE...

WAFMAP* FACILITY* LOT_NUMBER# WAFER_ID# TRANS_DATE_TIME# LOC_X# LOC_Y* DEFECT_CODEo SERIAL_NO

WAFHIS* FACILITY# LOT_NUMBER# WAFER_ID# TRANS_DATE_TIME* TRANS_CODEo SEQ_NO* PROD* ROUTE...

GMEASSPEC# FABID# PROD# MEASOPER# MEASTYPE# RECIPE_ID# PARAMETER# VERSIONo FACILITYo PRODOPERo PARADESCo ADOPTDATEo REGDATEo PARADISPSEQo PARATYPEo MERGEIDo SULo SCLo SLLo XBSULo XBSCLo XBSLLo XBUCL1o XBCCL1o XBLCL1o XBUCL2...

GMEASPPD# FABID# PROD# MEASOPER# RECIPE_ID# PARAMETERo FACILITY...

GMEASPARA# FABID# GUBUN# MEASTYPE# PARAMETERo FACILITYo PARADISCo PARATYPEo DELTA_TYPE

NTCVEN# NVEN_FACILITY# NVEN_EVENTo NVEN_MSG_EXST_FGo NVEN_MAIL_EXIST_FGo NVEN_EVENT_GROUP_1o NVEN_EVENT_GROUP_2o NVEN_EVENT_GROUP_3o NVEN_EVENT_GROUP_4o NVEN_EVENT_GROUP_5o NVEN_ALRM_W_ABRT_F...

NTCEHCo NEHC_FACILITYo NEHC_ENTITYo NEHC_ENH_HIST_SEQo NEHC_ENH_DEL_FLAGo NEHC_DISPLAY_SEQo NEHC_USERo NEHC_DATEo NEHC_TIME...

HQSTD# FABID# PRODUCT# MEASTYPE# MEASGUBUN# PARAMETERo OPERo LOWER_LIMITo UPPER_LIMITo MEASFLAG

HQLOTSUMo LOTIDo TRANSDTTMo PRODUCTo OWNERo LOTGRADEo HQQTYo NQQTYo LQQTYo XQQTYo HQDIE...

HQLOTDATAo LOTIDo TRANSDTTMo OPERo MEASTYPEo PARAMETERo LOWER_LIMITo UPPER_LIMITo STATUSVALUEo MEASFLAGo GRADE

HQWAFERSUM# LOTID# WAFERID# TRANSDTTM# WAFERGRADE# DIES

HQWAFERDATAo LOTIDo TRANSDTTMo WAFERIDo OPERo MEASTYPEo PARAMETERo LOWER_LIMITo UPPER_LIMITo STATUSVALUEo MEASFLAGo GRADE

HQLOTHISo LOTIDo HISTYPEo OPERo OPERDESCo EVENTDTTMo USERIDo CONTENTo TRANSDTTMo GRADE

ALMHIS# FACILITY# ALARM_ID# EQUIP_ID# LOT_NUMBER# CREATE_DATE_TIME* SOURCE1_ID* SOURCE1_DESC* SOURCE2_ID* SOURCE2_DESC* SOURCE3_ID* SOURCE3_DESC* ALARM_LEVEL* ALARM_TEXT* ALARM_STATUS* ACK_FLAG* ACK_DATE_TIME* ACK_USER...

EQPPMS# FACILITY# EQUIP_ID# SUB_EQUIP_ID# PM_SCHEDULE_DATE_TIME# PM_LEVEL# PM_CODE# PM_ACT_DATE_TIME* AREA* EQUIP_TYPE...

NTCENH# NENH_FACILITY# NENH_ENTITY# NENH_HIST_SEQo NENH_SCATTER_KEYo NENH_TRANS_DATEo NENH_TRANS_TIMEo NENH_EVENTo NENH_ENH_DEL_FLAG...

NTCENT# NENT_FACILITY# NENT_ENTITYo NENT_ENT_DEL_FLAGo NENT_LOT_L_EFF_CNTo NENT_LOT_QUANTITYo NENT_ENTITY_TYPEo NENT_ENT_GRP_1o NENT_ENT_GRP_2...

NTCAEV# NAEV_FACILITY# NAEV_ENTITY# NAEV_EVENTo NAEV_INDUCED_EVENTo NAEV_MSG_EXST_FGo NAEV_MAIL_EXST_FGo NAEV_SCHEDLNG_MODEo NAEV_WRKDAY_ONLY_Fo NAEV_DEPND_DT_FGo NAEV_LATEPROC_PF_Fo NAEV_LOT_ENTRY_REQ...

EQPBMH# FACILITY# EQUIP_ID# TRB_DATE_TIME# SEQ_NO* FAB_ID* UPDATE_DATE_TIME* ERROR_CONTENTS...

EQPBMS# FACILITY# EQUIP_ID# UPDATE_DATE_TIME* FAB_ID* EQUIP_AREA* BAY_NO* EQUIP_MODEL...

EQPSTS# FACILITY# EQUIP_ID* EQUIP_TYPE* BAY_NO* AREA* AUTO_MODE* EQUIP_CTL_MODE* TRANS_MODE* LAST_MODE* RESV_MODE* RESV_MODE_FLAG* PRE_RESV_FLAG* CHAMBER_MODE* EQUIP_STATUS* BOAT_STATUS* SUB_EQUIP_FLAGo CST_IN_PROC* EQUIP_PORT_TBL...

LOTSTS# LOT_NUMBER* FACILITY* PROD* ROUTEo OPER* EQUIP_ID* LOT_BATCH_IDo LOT_BATCH_SEQ* CST_ID* FIRST_STEPPER1* FIRST_STEPPER2* LOT_STATUS* LOCATION* PRIORITY* PRE_RESV_FLAG* LOT_PRIORITY...

LOTHIS_ALL

WIPBLA# WBLA_FACILITY# WBLA_BILL_OF_LADNG

WIPFAC# WFAC_FACILITYo WFAC_NODEo WFAC_PRD_OPR_MSGo WFAC_PRD_OPR_MAILo WFAC_MSG_SEE_HISTo WFAC_SSB_SUM_DATA...

WIPDLT# WDLT_LOT_NUMBER# WDLT_DATE_DELETED# WDLT_TIME_DELETED

WIPLHA# WLHA_LOT_NUMBER# WLHA_LOT_HIST_SEQ# WLHA_ATTR_NUMBERo WLHA_OLD_ATR_VALTYo WLHA_OLD_AL_ATR_VLo WLHA_OLD_NU_ATR_VLo WLHA_LTH_DEL_FLAGo WLHA_LTH_SCATT_KEY

WIPLTA# WLTA_FACILITY# WLTA_LOT_NUMBER# WLTA_ATTR_NUMBER# WLTA_ALP_ATTR_VAL# WLTA_NUM_ATTR_VALo WLTA_ATTR_VAL_TYPEo WLTA_LOT_DEL_FLAG

WIPALRo WALR_FACILITYo WALR_DATEo WALR_TIMEo WALR_TRANSACTIONo WALR_ALARMo WALR_LOT_NUMBERo WALR_PRODo WALR_OWNERo WALR_OPERo WALR_ALARM_DELETEDo WALR_PT_LOT_ON_HLDo WALR_OPERATORo WALR_ROUTEo WALR_AUTHORIZATIONo WALR_PARAMETERo WALR_REQUESTORo WALR_EXT_ALPH_DATAo WALR_ENG_ALP_NUMFLo WALR_ENG_UNIT_IDo WALR_ENG_CHANGEo WALR_TRANS_DATEo WALR_TRANS_TIMEo WALR_QUANTITYo WALR_QTY_LIMITo WALR_DATE_LIMIT...

WIPLSH# WLSH_LOT_NUMBER# WLSH_LOT_HIST_SEQ# WLSH_PROD# WLSH_LOCATIONo WLSH_QUANTITY_FROMo WLSH_QUANTITY_TOo WLSH_LTH_DEL_FLGo WLSH_LTH_SCATT_KEY

WIPRTO# WRTO_FACILITY# WRTO_ROUTE# WRTO_OPERo WRTO_SEQ_NUMo WRTO_MILSTNo WRTO_PROD_UNT_1...

WIPPRR# WPRR_FACILITY# WPRR_PROD# WPRR_ROUTEo WPRR_SEQ_NUMo WPRR_PREV_RTo WPRR_NEXT_RT

WIPPRO# WPRO_FACILITY# WPRO_PROD# WPRO_OPERo WPRO_CHK_VARNCEo WPRO_OFF_CST_ENTRDo WPRO_UC_YLD_ENTRDo WPRO_OFCST_ENT_ALTo WPRO_UC_YLD_ENT_ALo WPRO_UC_YLD_ENT_PLo WPRO_CST_DAT_ENT...

WIPLTH# WLTH_LOT_NUMBER# WLTH_HIST_SEQo WLTH_SCATTER_KEYo WLTH_DATEo WLTH_TIMEo WLTH_TRANSACTIONo WLTH_TRANS_DATEo WLTH_TRANS_TIMEo WLTH_FACILITY_OLDo WLTH_PROD_OLDo WLTH_ROUTE_OLDo WLTH_OPER_OLDo WLTH_FACILITY_NEWo WLTH_OPERATORo WLTH_HIST_DELETEDo WLTH_DELETE_DATEo WLTH_DELETE_TIME...

WIPRTE# WRTE_FACILITY# WRTE_ROUTEo WRTE_FRST_RT_OPRo WRTE_LST_RT_OPR...

WIPPRD# WPRD_FACILITY# WPRD_PRODo WPRD_PRD_GRP_1o WPRD_PRD_GRP_2...

WIPOPR# WOPR_FACILITY# WOPR_OPERo WOPR_OPR_GRP_1o WOPR_OPR_GRP_2o WOPR_OPR_GRP_3o WOPR_OPR_FRZNo WOPR_INRNST...

WIPLOT# WLOT_LOT_NUMBERo WLOT_FACILITYo WLOT_OPERo WLOT_ROUTEo WLOT_PRODo WLOT_OWNERo WLOT_LAST_HIST_SEQo WLOT_RESTRICTEDo WLOT_DELETEDo WLOT_INTRANSITo WLOT_PRIORITYo WLOT_DT_ENTRD_OPRo WLOT_DT_LAST_TRANSo WLOT_TM_LAST_TRANSo WLOT_MVIN_PERFMDo WLOT_DUE_DT_OVERRD...

LOGHIS# FACILITY* LOG_SHEET_ID# EQUIP_ID# TRANS_DATE_TIME* OPERATOR# SEQ_NOo DATA_COUNT...

LOTHIS_ARC# LOT_NUMBER# HIST_SEQ* TRANS_CODE* FACILITY* PROD* ROUTEo OPER...

LOGHIS_ARC* FACILITY* LOG_SHEET_ID* EQUIP_ID* TRANS_DATE_TIME* OPERATORo SEQ_NOo DATA_COUNT...

LOTHIS# LOT_NUMBER# HIST_SEQ* TRANS_CODE* FACILITY* PROD* ROUTEo OPER* EQUIP_ID...

STK_ID4

STK_ID4

STK_ID3

STK_ID3

STK_ID2

STK_ID2

STK_ID1

STK_ID1

EQUIPENTITY

EQUIP

EQUIP

CST

CST

LOGHIS

LOGHIS

WAFMAP

WAFMAPWAFHIS

WAFHIS

WAFER

WAFER

PROD

PROD

PARAMETER

PARAMETER

SPECVERSION

SPECVERSION

PARAMETER

PARAMETER

EVENT

EVENT

ARCHIVE

ARCHIVE

ALR_HISTORY

ALR_HISTORY

ENT_HISTOR

ENT_HISTOR

ENT_EVEN

ENT_EVEN

EQUIP_ID

EQUIP_ID

EQUIP_UPDAT

EQUIP_UPDAT

EQUIP_MASTE

EQUIP_MASTE

EQUIP_PM

EQUIP_PM

SUB_EQUIP_PM

SUB_EQUIP_PM

LOT

LOT

LOT_HIST

LOT_HIST

LOT_HIST

LOT_HIST

BILL

BILL

FACILITY

FACILITY

FACILITY

FACILITY

DELETE_LO

DELETE_LO

ATTR

ATTR

ATTR

ATTR

ALARM

ALARM

PROD_LOC

PROD_LOC

OPER

OPER

ROUTE

ROUTE

ROUTE

ROUTE

OPER

OPER

PROD

PROD

PROD

PROD

PROD_OLD

PROD_OLD

OPER_OLD

OPER_OLD

FACILITY_NE

FACILITY_NE

ROUTE_OL

ROUTE_OL

Page 20: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

Reverse Modeling을 통한성능 개선 활용 (예제)

Page 21: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

DDL 및 SQL Usage 정보 수집CREATE TABLE SYSA02TB(EMPNO CHAR(6),HNAME VARCHAR2(10),JWCOD VARCHAR2( 3),JIKWI VARCHAR2(20),STEP1 VARCHAR2( 3),STEP2 VARCHAR2( 3),JKCOD VARCHAR2( 3),JIKCK VARCHAR2(20),TMCOD VARCHAR2(14),TEAM VARCHAR2(20),TMCOD1 VARCHAR2(14),TEAM1 VARCHAR2(20),TMCOD2 VARCHAR2(14),TEAM2 VARCHAR2(20),TELNO VARCHAR2(20),TELNO2 VARCHAR2(15),EMAIL VARCHAR2(40),EMAIL2 VARCHAR2( 8),UPMOO VARCHAR2(60),PASSWD VARCHAR2( 6),USE CHAR(1),IDATE DATE,UDATE DATE,CNT NUMBER(6,0),PRV CHAR(1),CDATE DATE,TIMER NUMBER(4,0),CLS1 CHAR(1));

PK : EMPNO

CREATE TABLE ODOCU2_TAB(NO NUMBER(8,0),TTEAM VARCHAR2(20),TTYPE VARCHAR2( 1),TSABUN2 VARCHAR2( 6),TDATE2 VARCHAR2(12),TPASS2 VARCHAR2( 1),TNOPASS2 VARCHAR2( 1),TSABUN1 VARCHAR2( 6),TDATE1 VARCHAR2(12),TPASS1 VARCHAR2( 1),TNOPASS1 VARCHAR2( 1),TSABUN VARCHAR2( 6),TPASS VARCHAR2( 1),TINDATE VARCHAR2(12),PASS VARCHAR2( 1),PASS1 VARCHAR2( 1),PASS2 VARCHAR2( 1),OREMARK1 VARCHAR2(2000),OREMARK2 VARCHAR2(2000),TODATE VARCHAR2(12),GUBUN VARCHAR2(1))

PK : NO + TTEAM

CREATE TABLE ODOCU_TAB((NO NUMBER(8,0),OTYPE VARCHAR2( 4),DOCUNO VARCHAR2(16),TEAM VARCHAR2(20),SABUN VARCHAR2( 6),PASS VARCHAR2( 1),TELNO VARCHAR2(20),TITLE VARCHAR2(60),REMARK LONG,APPEND VARCHAR2(80),INDATE VARCHAR2(12),SABUN1 VARCHAR2( 6),PASS1 VARCHAR2( 1),DATE1 VARCHAR2(12),NOPASS1 VARCHAR2( 1),SABUN2 VARCHAR2( 6),PASS2 VARCHAR2( 1),NOPASS2 VARCHAR2( 1),DATE2 VARCHAR2(12),XREMARK1 VARCHAR2(200),XREMARK2 VARCHAR2(200),TODATE VARCHAR2( 8),OTYPE2 VARCHAR2( 1),APPEND2 VARCHAR2(80),APPEND3 VARCHAR2(80),OTYPE3 VARCHAR2( 1),JIKWI VARCHAR2(20),GUBUN VARCHAR2( 1),OPT VARCHAR2( 1));

PK : NO

CREATE TABLE SYSA01TB(TMCOD VARCHAR2(14),TEAM VARCHAR2(20),DOCNO1 VARCHAR2(10),DOCNO2 NUMBER(4,0),CLS CHAR(1),APP CHAR(1),OAMGR CHAR(6),ORD1 VARCHAR2( 3),ORD2 VARCHAR2( 3),AREA VARCHAR2( 3),IDATE DATE);

PK : TMCOD

Page 22: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

SQL Usage의 수집

수행 회수 TOTAL_IO(LOGICAL+PHYSICAL) 1회수행당IO---------- ------------------------------- ------------

63080 865,611,449(865,532,732+78,717) 13,722

SELECT E.DOCUNO,E.TEAM,A.NO,A.TSABUN,A.TSABUN1,E.TODATE,A.TSABUN2,D.HNAME HNAME2,FROM ODOCU2_TAB A, SYSA02TB B, SYSA02TB C, SYSA02TB D, ODOCU_TAB EWHERE A.TODATE > DECODE(:B3,NULL,TO_CHAR(SYSDATE- 30,'YYYYMMDD' ),' ')AND A.TTEAM IN

(SELECT TEAM -- 소속 및 산하FROM SYSA01TBWHERE TMCOD LIKE (SELECT TMCOD||'%' FROM SYSA01TB

WHERE TEAM = (SELECT TEAM FROM SYSA02TB WHERE EMPNO = :B4))UNIONSELECT TEAM -- 겸직소속 및 산하1FROM SYSA01TBWHERE TMCOD LIKE (SELECT TMCOD||'%' FROM SYSA01TB

WHERE TEAM = (SELECT TEAM1 FROM SYSA02TB WHERE EMPNO = :B4))UNIONSELECT TEAM -- 겸직소속 및 산하2FROM SYSA01TBWHERE TMCOD LIKE (SELECT TMCOD||'%' FROM SYSA01TB

WHERE TEAM = (SELECT TEAM2 FROM SYSA02TB WHERE EMPNO = :B4)))AND E.NO = A.NOAND B.EMPNO(+) = A.TSABUN AND C.EMPNO(+) = A.TSABUN1 AND D.EMPNO(+) = A.TSABUN2ORDER BY A.TODATE DESC;

관계정보

Page 23: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

Reverse Modeling을 통한AS-IS Data Model

ODOCU_TAB# NOo OTYPEo DOCUNOo TEAM* SABUNo PASSo TELNOo TITLEo REMARKo APPENDo INDATEo SABUN1o PASS1o DATE1o NOPASS1o SABUN2o PASS2o NOPASS2o DATE2o XREMARK1o XREMARK2o TODATEo OTYPE2o APPEND2o APPEND3o OTYPE3o JIKWIo GUBUNo OPT

ODOCU2_TAB# NO# TTEAMo TTYPEo TSABUN2o TDATE2o TPASS2o TNOPASS2o TSABUN1o TDATE1o TPASS1o TNOPASS1o TSABUNo TPASSo TINDATEo PASSo PASS1o PASS2o OREMARK1o OREMARK2o TODATEo GUBUN

SYSA02TB# EMPNO* HNAMEo JWCODo JIKWIo STEP1o STEP2o JKCODo JIKCKo TMCODo TEAMo TMCOD1o TEAM1o TMCOD2o TEAM2o TELNOo TELNO2o EMAILo EMAIL2o UPMOOo PASSWDo USEo IDATEo UDATEo CNTo PRVo CDATEo TIMERo CLS1

SYSA01TB# TMCOD* TEAMo DOCNO1o DOCNO2o CLSo APPo OAMGRo ORD1o ORD2o AREAo IDATE

TEAM TEAM2

TEAMTEAM

TEAM1TEAM

TTEAM TMCOD

NO

NO

Page 24: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

일반적 SQL 성능 개선

SELECT E.DOCUNO,E.TEAM,A.NO,A.TSABUN,A.TSABUN1,E.TODATE,A.TSABUN2,D.HNAME HNAME2,FROM ODOCU2_TAB A, SYSA02TB B, SYSA02TB C, SYSA02TB D, ODOCU_TAB E, SYSA01TB F,

(SELECT TMCOD FROM SYSA01TBWHERE TEAM IN (SELECT DECODE(R.FLAG,'1',TEAM,'2',TEAM1,'3',TEAM2)

FROM SYSA02TB,(SELECT '1' AS FLAG FROM DUAL UNION ALLSELECT '2' AS FLAG FROM DUAL UNION ALLSELECT '3' AS FLAG FROM DUAL) R

WHERE EMPNO = :B4)) VWHERE A.TTEAM = F.TEAMAND F.TMCOD LIKE V.TMCOD ||'%'AND A.TODATE > DECODE(:B3,NULL,TO_CHAR(SYSDATE- 30,'YYYYMMDD' ),' ')AND E.NO = A.NOAND B.EMPNO(+) = A.TSABUN AND C.EMPNO(+) = A.TSABUN1 AND D.EMPNO(+) = A.TSABUN2ORDER BY A.TODATE DESC;

(개선 Point)

- 비 효율적인 Sub-Query의 사용을 Cartesian Product과 In-Line View를 사용하여 효율화- Nested Loops Join의 효율화

Page 25: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

Model적 접근에 의한 개선점SELECT E.DOCUNO,E.TEAM,A.NO,A.TSABUN,A.TSABUN1,E.TODATE,A.TSABUN2,D.HNAME HNAME2,FROM ODOCU2_TAB A, SYSA02TB B, SYSA02TB C, SYSA02TB D, ODOCU_TAB EWHERE A.TODATE > DECODE(:B3,NULL,TO_CHAR(SYSDATE- 30,'YYYYMMDD' ),' ')AND A.TTEAM IN

(SELECT TEAM -- 소속 및 산하FROM SYSA01TBWHERE TMCOD LIKE (SELECT TMCOD||'%' FROM SYSA01TB

WHERE TEAM = (SELECT TEAM FROM SYSA02TBWHERE EMPNO = :B4))

UNIONSELECT TEAM -- 겸직소속 및 산하1FROM SYSA01TBWHERE TMCOD LIKE (SELECT TMCOD||'%' FROM SYSA01TB

WHERE TEAM = (SELECT TEAM1 FROM SYSA02TBWHERE EMPNO = :B4))

UNIONSELECT TEAM -- 겸직소속 및 산하2FROM SYSA01TBWHERE TMCOD LIKE (SELECT TMCOD||'%' FROM SYSA01TB

WHERE TEAM = (SELECT TEAM2 FROM SYSA02TBWHERE EMPNO = :B4)))

AND E.NO = A.NOAND B.EMPNO(+) = A.TSABUN AND C.EMPNO(+) = A.TSABUN1 AND D.EMPNO(+) = A.TSABUN2ORDER BY A.TODATE DESC;

Recursive 관계

정규화

Page 26: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

개선 된 Data ModelODOCU_TAB# NOo OTYPEo DOCUNOo TEAM* SABUNo PASSo TELNOo TITLEo REMARKo APPENDo INDATEo SABUN1o PASS1o DATE1o NOPASS1o SABUN2o PASS2o NOPASS2o DATE2o XREMARK1o XREMARK2o TODATEo OTYPE2o APPEND2o APPEND3o OTYPE3o JIKWIo GUBUNo OPT

ODOCU2_TAB# NO# TTEAMo TTYPEo TSABUN2o TDATE2o TPASS2o TNOPASS2o TSABUN1o TDATE1o TPASS1o TNOPASS1o TSABUNo TPASSo TINDATEo PASSo PASS1o PASS2o OREMARK1o OREMARK2o TODATEo GUBUN

SYSA02TB# EMPNO* HNAMEo JWCODo JIKWIo STEP1o STEP2o JKCODo JIKCKo TELNOo TELNO2o EMAILo EMAIL2o UPMOOo PASSWDo USEo IDATEo UDATEo CNTo PRVo CDATEo TIMERo CLS1

SYSA01TB# TMCOD* TEAMo DOCNO1o DOCNO2o CLSo APPo OAMGRo ORD1o ORD2o AREAo IDATEo UPPER_TMCOD

SYSEMPTEAM# EMPNO# TMCOD* TM_FLAG

TTEAM

TMCOD

UPPER_TMCO

LOWER_TMCO

NO

NO

TMCOD

TMCOD

EMPNO

EMPNO

Page 27: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

개선 Model에 의한 개선 SQLSELECT E.DOCUNO,E.TEAM,

A.NO,A.TSABUN,A.TSABUN1,E.TODATE,A.TSABUN2,D.HNAME HNAME2,

FROM ODOCU2_TAB A, SYSA02TB B, SYSA02TB C, SYSA02TB D, ODOCU_TAB EWHERE A.TODATE > DECODE(:B3,NULL,TO_CHAR(SYSDATE- 30,'YYYYMMDD' ),' ')AND A.TTEAM IN (SELECT TEAM

FROM SYSA01TBWHERE START WITH TMCOD = (SELECT TMCOD

FROM SYSEMPTEAMWHERE EMPNO = :B4)

CONNECT BY PRIOR TMCOD = UPPER_TMCOD)AND E.NO = A.NOAND B.EMPNO(+) = A.TSABUNAND C.EMPNO(+) = A.TSABUN1AND D.EMPNO(+) = A.TSABUN2ORDER BY A.TODATE DESC;

Page 28: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

Oracle 의 DA 수행 방안은 EA (Enterprise Architecture)의 큰 축인 DA (Data Architecture)를

효과적으로 구축하는 동시에 시스템의 진단 및 성능개선의 효과를 동시에 달성할 수 있는 서비스를

제공합니다.

Page 29: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

Q U E S T I O N SQ U E S T I O N SA N S W E R SA N S W E R S

Page 30: Data Architecture 구축을위한 실무수행방안기준및설계 Guide 제시 z초기Index 설계 9PK/FK 및업무적관점의Index 적용 z접근유형에따른View의설계 zStorage

Recommended