น่าจะพบปัญหาเดียวกันนี้น๊ะครับ
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 ไว้ สามารถเดา "ได้หลากหลาย"
แต่ไม่ได้กำหนด Primary Key ไว้ สามารถเดา "ได้หลากหลาย"
Q2: ทำไม สร้าง Field ใน Logical File เหมือนใน Physical File
สร้างแตกต่าง ระดับ Field ได้หรือไม่ ?
A2: ได้ครับ
ดั้งเดิม เราจะทำให้มัน เข้าใจ(จำ)ง่าย - เป็นเทคนิคที่ดีสำหรับระบบขนาดใหญ่
แต่ระบบ DB ปัจจุบัน ที่สอนกัน (จนเป็นมาตรฐาน)
แยกเรียก Logical File ว่า Index กับ View
- View ว่าสร้างเพื่อให้ คนอื่น ใช้งานง่าย หรือ จำกัด Security
- Index ทำเพื่อความเร็วในการ Access