다음 세 개의 표는 각 데이터베이스에 저장된 데이터를 나타냅니다.
각 데이터베이스 간
고객 정보를 상관시키기 위해 ID 관계가 정의됩니다. 이 관계(이 예제에서는
를 사용합니다.
이러한 요소에는 각 데이터베이스의 ID 데이터가 포함되어 있기 때문에
이들 요소가 사용되며 해당 데이터는 각각의 고객에 대해 고유합니다.
다음 표는
에서 사용하는 공통 ID의 관계에서 서로 다른 데이터베이스를 상관시키는 데 사용되는 역할에 대해 설명합니다.
Common 데이터베이스에서
작성된 뷰를 사용하여 여러 관계 인스턴스를 정의할 수 있습니다.
해당 관계 역할에 대한 뷰 이름(이전에 설명한 이름 지정 규칙 사용)의
맵핑은 Common 데이터베이스의
RELN_VIEW_META_T 테이블에서
캡처됩니다. 다음 표에서는
ClarifyCustomer,
SapCustomer 및
SiebelCustomer 역할에 대한 뷰 이름의 예제에 대해
설명합니다.
표 7. RELN_VIEW_META_T
테이블VIEW_NAME |
RELATIONSHIP_NAME |
ROLE_NAME |
V_ID_CLARIFYCUSTOMER_098 |
http://CustomerModule/ID |
http://CustomerModule/ClarifyCustomer |
V_ID_SAPCUSTOMER_515 |
http://CustomerModule/ID |
http://CustomerModule/SapCustomer |
V_ID_SIEBELCUSTOMER_411 |
http://CustomerModule/ID |
http://CustomerModule/SiebelCustomer |
V_USASTATE_ABBREVIATION_DE8 |
http://CustomerModule/USASTATE |
http://CustomerModule/Abbreviation |
V_USASTATE_CODE_B32 |
http://CustomerModule/USASTATE |
http://CustomerModule/Code |
V_USASTATE_NAME_933 |
http://CustomerModule/USASTATE |
http://CustomerModule/FullName |
표 1에 설명된 뷰 열 정의에는 다음 특성이 있는
ROLE_ATTRIBUTE_COLUMN이 포함됩니다.
표 8. 뷰 열 정의열 이름 |
데이터 유형 |
값 |
설명 |
KEY_ATTRIBUTE_NAME |
키 속성 유형에 따라 다름 |
널이 아님 |
역할 인스턴스 데이터가 저장됩니다. ID 관계의 경우 열 이름은 키 속성 이름으로 지정됩니다. 예를 들어,
SAPCUSTOMER_SAPID에서는 sapid를
키 속성 이름으로 사용하고 sapcustomer를 비즈니스
오브젝트 이름으로 사용합니다. 각각의 키 속성에 대해 하나의 열이 정의됩니다.
정적 관계의 경우 열 이름은 DATA로 지정됩니다. |
다음 표에서는
ID 관계에 대한 Common 데이터베이스의 뷰에 대해 설명합니다.
표 9. 뷰 열 정의Clarify 역할 뷰 |
SAP 역할 뷰 |
Siebel 역할 뷰 |
INSTANCEID |
INSTANCEID |
INSTANCEID |
CLARIFYCUSTOMER_CLARIFYID |
SAPCUSTOMER_SAPID |
SIEBELCUSTOMER_SIEBELID |
STATUS |
STATUS |
STATUS |
LOGICAL_STATE |
LOGICAL_STATE |
LOGICAL_STATE |
LOGICAL_STATE_TIMESTAMP |
LOGICAL_STATE_TIMESTAMP |
LOGICAL_STATE_TIMESTAMP |
CREATE_TIMESTAMP |
CREATE_TIMESTAMP |
CREATE_TIMESTAMP |
UPDATE_TIMESTAMP |
UPDATE_TIMESTAMP |
UPDATE_TIMESTAMP |
ROLEID |
ROLEID |
ROLEID |
주: 키 속성 열 이름을 제외한
뷰의 모든 열 이름이 일치합니다.
역할 인스턴스 데이터를
조작하기 위해 뷰에 대해 SQL을 실행하려면 먼저 역할 런타임 테이블
뷰의 이름을 알고 있어야 합니다. 다음 SQL 스크립트에서는 DB2 Universal Database™를 사용하는 예제에 대해 설명합니다.
이 예제에서는 각 데이터베이스의 모든 데이터가 관계 데이터베이스에
복사된 것으로 가정합니다.
SELECT INTO SQL문을 사용하여
데이터를 복사할 수 있습니다.
//Create a table to store ID values from all three applications for each customer,
//and associate a unique instance ID with each customer. Use this table as a base
//source table to populate relationship tables.
CREATE TABLE joint_t (instanceid INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,
clarify_id VARCHAR(10) NOT NULL,
sap_id VARCHAR(10) NOT NULL,
siebel_id VARCHAR(10) NOT NULL)
//Compare the name and home phone number across the three application tables.
//If a match is found, insert that person's ID value from each application table
//into the joint_t table. Associate the three ID values to a unique ID; this
//ID will be used later as the relationship instance ID.
INSERT INTO joint_t (clarify_id,sap_id,siebel_id)
SELECT A.ID, B.ID, C.ID
FROM clarifycustomer A,sapcustomer B, siebelcustomer C
WHERE A.homephone=B.homephone AND
B.homephone=C.homephone, AND
B.givenname=C.firstname AND
B.lastname=C.lastname AND
A.fullname=C.firstname CONCAT ' ' CONCAT C.lastname
//Create a sequence for each application; this sequence will be
//used later as a role ID in each role table.
CREATE SEQUENCE clarify_roleid MINVALUE 1 ORDER CACHE 100
CREATE SEQUENCE sap_roleid MINVALUE 1 ORDER CACHE 100
CREATE SEQUENCE siebel_roleid MINVALUE 1 ORDER CACHE 100
//Populate the role instance table for the CLARIFY role.
INSERT INTO V_ID_CLARIFYCUSTOMER_098 (instanceid, roleid,
clarifycustomer_clarifyid, status, logical_state, logical_state_timestamp,
create_timestamp, update_timestamp)
FROM joint_t
//Populate the role instance table for the SAP role.
INSERT INTO V_ID_SAPCUSTOMER_515 (instanceid, roleid, sapcustomer_sapid,
status, logical_state, logical_state_timestamp, create_timestamp,
update_timestamp)
SELECT instanceid NEXTVAL FOR sap_roleid, sap_id, 0, 0, current
timestamp, current timestamp, current timestamp
FROM joint_t
//Populate the role instance table for the SIEBEL role.
INSERT INTO V_ID_SIEBELCUSTOMER_AFC (instanceid, roleid, siebelcustomer_siebelid,
status, logical_state, logical_state_timestamp, create_timestamp, update_timestamp)
SELECT instanceid, NEXTVAL FOR siebel_roleid, sap_id, 0, 0, current timestamp,
current timestamp, current timestamp
FROM joint_t
키 값을 임시로 저장하기 위해
joint_t
테이블이 작성됩니다. 필요하면 자원 저장을 완료한 경우
테이블을 삭제할 수 있습니다. 또는 뷰 테이블이나
임시 테이블을 작성할 수 있습니다.