วันพุธที่ 22 มกราคม พ.ศ. 2557

DB2 กับ RPG ภาค2

ผู้ที่ระบบที่ใช้ต่อเนื่องมานาน เกิน 15 ปี
น่าจะพบปัญหาเดียวกันนี้น๊ะครับ

Q1: Physical File = สร้างโดยไม่ระบุ Primary Key (Unique)

    แล้วจะรู้ได้อย่างไรว่า  Primary Key คือ อะไร ?
    การ Insert/Update/Delete จะชี้ได้ถูกต้อง อย่างไร ?

A1: ถ้าระบบฯ  มีอยู่แล้ว
    - เชื่อว่า โปรแกรม Maintenance ดั้งเดิม  ทำงานถูก  ได้ช่วยไกด์เรา
    - ตรวจสอบซ้ำ (จากตัว data)

SQL :  Select   Primary Keys  ,count(*) From Lib.File    
      Group by Primary Keys     
      Having   count(*) > 1

ถ้ามี  rows ออกมา  แสดงว่า  Primary Keys ไม่ถูกต้อง

อธิบาย
- Primary Keys (มีมากกว่า 1 Field ได้)
- ตามนิยาม เมื่อชี้ข้อมูลด้วย  Primary Keys จะพบแค่ 1 row เท่านั้น
- หลังการ  กรองค่า (Having)  ถ้า Primary Keys ถูกต้อง  ต้องไม่มี rows แสดงออกมา

อืนๆ - บางที่  จะมีการเก็บ ข้อมูลที่ "ลบ" ไว้ใน File  (ทำให้  ข้อมูลกลุ่มนี้  ไม่เป็นไปตามกฏ)
ดังนั้น ต้องแยกข้อมูลกลุ่มนี้  ออกไปก่อน  
เช่น itemNo ถ้าลบ จะใส่  "#" นำหน้า  ป้อนแล้วลบ  2 ครั้ง  จะมีรายการนี้ซ้ำ 2 รายการ

    - ตรวจจาก Business Concept
      เช่น   Stock File  (ItemNo, ItemName, WH , Loca, Vendor, OnHandQty)
               นิยามว่า   ItemNo  จัดวางอยู่ที่  พื้นที่ (WH,Loca)
               Primary Keys = ItemNo, WH(WareHouse),Loca

               นิยามว่า   ItemNo  จัดวางอยู่ที่  พื้นที่ (WH,Loca)  โดยต้องแสดงแยกตาม Vendor
               Primary Keys = ItemNo, WH(WareHouse),Loca, Vendor

               >> จะเห็นว่า  ถ้าใครโชคดี  ใช้ DB ที่มีโครงสร้างสมบุรณ์  (มี Field มาก)
แต่ไม่ได้กำหนด Primary Key ไว้   สามารถเดา  "ได้หลากหลาย"

Q2: ทำไม สร้าง Field ใน Logical File เหมือนใน Physical File

       สร้างแตกต่าง  ระดับ Field ได้หรือไม่ ?
A2: ได้ครับ
       ดั้งเดิม  เราจะทำให้มัน  เข้าใจ(จำ)ง่าย - เป็นเทคนิคที่ดีสำหรับระบบขนาดใหญ่
       แต่ระบบ DB ปัจจุบัน  ที่สอนกัน (จนเป็นมาตรฐาน)
       แยกเรียก Logical File  ว่า Index กับ View    
       - View   ว่าสร้างเพื่อให้  คนอื่น  ใช้งานง่าย หรือ จำกัด Security 
       - Index   ทำเพื่อความเร็วในการ Access 


ไม่มีความคิดเห็น:

แสดงความคิดเห็น