بررسی انباره داده بخش بیست و هشتم
توجه داشته باشيد در اين بخش علاوه بر ايجاد جداول پايه قصد داريم اين جداول را نيز با اطلاعات لازم پر کنيم .لذا از روش SQL*LOADER که يک مکانيزم برای بارگذاری اطلاعات است استفاده می نماييم.بدين منظور فايلی با پسوند ctl. به صورت زير برای هر جدول پايه ايجاد می نماييم. نمونه زير برای جدول TBL_CATALOG و با عنوان TBL_CATALOG.CTL می باشد.
برای اجرای اين فايل بايد به صورت زير عمل کرد:
فايل ctl را درمسير اصلی ويندوز قرار دهيد.
به Command Prompt مربوط به ويندوز متصل شويد.
نمونه کد زير را برای اجرای فايل ctl تايپ و اجرا کنيد.
و به همين ترتيب همين فايل ر برای دو جدول پايه ديگر ايجاد می نماييم.
گام پنجم: پياده سازی مدل طراحی شده در بانکهای DB1 ،DB2 ،DB3 به عنوان سايت Materialized View
از طريق شمای RepAdmin1 به بانک DB1 متصل شده و جداول Fact طراحی شده را در اين بانک ايجاد کنيد. همين روش را برای بانکهای DB2 و DB3 با اتصال به شمای ايجاد شده ايجاد کنيد. توجه داشته باشيد در هر جدول Fact يک فيلد به عنوانDB_ID اضافه شده است. اين فيلد بسته به اينکه در کدام بانک قرار دارد، به صورت 1 برای جداول موجود در DB1 ،2 برای جداول موجود در DB2 و 3 برای جداول موجود در DB3 مقداردهی می شوند.
به منظور سرعت بخشيدن و وضوح کامل کليه script های لازم جهت ايجاد جداول Fact در هر سايت به طور درزير ليست شده است.
---
---
---
SQL>CONNECT REPADMIN1/REPADMIN1@DB1
SQL>CREATE TABLE TBL_ADDSUB
(PK_ADDSUB_ID NUMBER(10) NOT NULL
,FK_PERSON_ID NUMBER(10) NOT NULL
,ADDSUB_DATE DATE NOT NULL
,INSURANCE NUMBER(10) NOT NULL
,TAX NUMBER(5) NOT NULL
,MISSION NUMBER(5) NOT NULL
,OVERTIME NUMBER(5) NOT NULL
,DB_ID NUMBER(1) DEFAULT 1 NOT NULL )
/
SQL>CREATE TABLE TBL_PAYMENT_SALARY
(PK_PAYMENT_ID NUMBER(10) NOT NULL
,FK_PERSON_ID NUMBER(10) NOT NULL
,PAYMENT_YEAR NUMBER(4) NOT NULL
,PAYMENT_AMOUNT NUMBER(10) NOT NULL
,DB_ID NUMBER(1) DEFAULT 1 NOT NULL )
SQL>CONNECT REPADMIN2/REPADMIN2@DB2
SQL>CREATE TABLE TBL_ADDSUB
(PK_ADDSUB_ID NUMBER(10) NOT NULL
,FK_PERSON_ID NUMBER(10) NOT NULL
,ADDSUB_DATE DATE NOT NULL
,INSURANCE NUMBER(10) NOT NULL
,TAX NUMBER(5) NOT NULL
,MISSION NUMBER(5) NOT NULL
,OVERTIME NUMBER(5) NOT NULL
,DB_ID NUMBER(1) DEFAULT 2 NOT NULL )
/
SQL>CREATE TABLE TBL_PAYMENT_SALARY
(PK_PAYMENT_ID NUMBER(10) NOT NULL
,FK_PERSON_ID NUMBER(10) NOT NULL
,PAYMENT_YEAR NUMBER(4) NOT NULL
,PAYMENT_AMOUNT NUMBER(10) NOT NULL
,DB_ID NUMBER(1) DEFAULT 2 NOT NULL )
/
SQL>CREATE TABLE TBL_PERSON
(PK_PERSON_ID NUMBER(10) NOT NULL
---
---
SQL>CONNECT REPADMIN3/REPADMIN3@DB3
SQL>CREATE TABLE TBL_ADDSUB
(PK_ADDSUB_ID NUMBER(10) NOT NULL
,FK_PERSON_ID NUMBER(10) NOT NULL
,ADDSUB_DATE DATE NOT NULL
,INSURANCE NUMBER(10) NOT NULL
,TAX NUMBER(5) NOT NULL
,MISSION NUMBER(5) NOT NULL
,OVERTIME NUMBER(5) NOT NULL
,DB_ID NUMBER(1) DEFAULT 3 NOT NULL )
/
SQL>CREATE TABLE TBL_PAYMENT_SALARY
(PK_PAYMENT_ID NUMBER(10) NOT NULL
,FK_PERSON_ID NUMBER(10) NOT NULL
,PAYMENT_YEAR NUMBER(4) NOT NULL
,PAYMENT_AMOUNT NUMBER(10) NOT NULL
,DB_ID NUMBER(1) DEFAULT 3 NOT NULL )
/
SQL>CREATE TABLE TBL_PERSON
(PK_PERSON_ID NUMBER(10) NOT NULL
BEGIN
FOR I IN 1..100 LOOP
INSERT INTO TBL_PERSON
(PK_PERSON_ID
,PERSON_CODE
,FIRST_NAME
,LAST_NAME
,FATHER_NAME
,NATIONAL_NO
,BIRTH_DATE
,BIRTH_PLACE
,TEL
,ADDRESS
,BASE_SAL
,FK_MARRIED_ID
,FK_SEX_ID
,FK_POSITION_ID
,FK_WORK_UNIT_ID