เอสซีดีประเภทที่ 7
เอสซีดีประเภททที่ 7 มีชื่อเรียกอีกอย่างว่า “ไดเมนชันคู่ประเภท1และ2” หรือ “Dual Type 1 and Type 2 Dimensions” หลักการคือ สร้างไดเมนชันที่ใช้เก็บข้อมูลอดีตและไดเมนชันที่ใช้เก็บข้อมูลปัจจุบัน โดยไดเมนชันที่ใช้เก็บข้อมูลอดีตจะทำงานเป็นเอสซีดีประเภทที่ 2 ส่วนไดเมนชันที่ใช้เก็บข้อมูลปัจจุบันจะทำงานเป็นเอสซีดีประเภทที่ 1 โดยไดเมนชันที่ใช้เก็บข้อมูลปัจจุบันจะถูกอ้างอิงจากไดเมนชันที่ใช้เก็บข้อมูลอดีตและแฟกท์ (Fact)
ตัวอย่าง
ข้อมูลก่อนการเปลี่ยนแปลง
ถ้าให้ข้อมูลดั้งเดิมเป็นดังข้อมูลข้างล่าง ให้เลขข้อมูลลูกค้า และ รหัสลูกค้า ในเทเบิ้ลลูกค้าเป็นเซอโรเกตคีย์และเนเชอรัลคีย์ตามลำดับ และให้เทเบิ้ลลูกค้าใช้หลักเอสซีดีประเภทที่ 2
จากข้อมูลก่อน2 “คอลัมน์เริ่มการใช้งาน” “จบการใช้งาน” และ “ปัจจุบันหรือไม่” เป็นคอลัมน์พิเศษเพื่อบ่งบอกว่าข้อมูลลูกค้าในแถวนั้นเป็นข้อมูลล่าสุดหรือเป็นข้อมูลปัจจุบันหรือไม่ ในการใช้งานบนโลกแห่งความเป็นจริง มักเลือกใช้อย่างใดอย่างหนึ่งระหว่าง คอลัมน์คู่(เริ่มใช้งานและจบการใช้งาน) หรือคอลัมน์เดี่ยว(ปัจจุบันหรือไม่) เพราะมีความซ้ำซ้อนในการใช้งานอยู่ แต่ในบทความสอนครั้งนี้ ผู้เขียนขี้เกียจเขียนแยกเทเบิ้ลกัน ก็เลยใส่รวมกันไปเลย
| ข้อมูลการขาย (ข้อมูลก่อน1) | |||||
|---|---|---|---|---|---|
| รหัสการขาย | วันเวลาซื้อขาย | เลขข้อมูลลูกค้า | เลขข้อมูลลูกค้าปัจจุบัน | เลขข้อมูลสินค้า | จำนวนสินค้าที่ซื้อ |
| O001 | 20220701 | 1 | 1000 | 1 | 2 |
| O002 | 20220702 | 2 | 2000 | 2 | 5 |
| O003 | 20220703 | 1 | 1000 | 2 | 3 |
| ลูกค้า (ข้อมูลก่อน2_1) | |||||||
|---|---|---|---|---|---|---|---|
| เลขข้อมูลลูกค้า SK | เลขข้อมูลลูกค้าปัจจุบัน | รหัสลูกค้า NK | ชื่อลูกค้า | จังหวัดที่อยู่อาศัย | เริ่มการใช้งาน | จบการใช้งาน | ปัจจุบันหรือไม่ |
| 1 | 1000 | C001 | ทองดี แน่นะ | กรุงเทพ | 20220101 | ใช่ | |
| 2 | 2000 | C002 | เงินทอง ของจริง | กรุงเทพ | 20220101 | ใช่ | |
| ลูกค้าปัจจุบัน (ข้อมูลก่อน2_2) | |||
|---|---|---|---|
| เลขข้อมูลลูกค้าปัจจุบัน SK | รหัสลูกค้า NK | ชื่อลูกค้า | จังหวัดที่อยู่อาศัย |
| 1000 | C001 | ทองดี แน่นะ | กรุงเทพ |
| 2000 | C002 | เงินทอง ของจริง | กรุงเทพ |
รายงานของข้อมูลก่อนการเปลี่ยนแปลง
สมมติว่าต้องออกรายงานสองรายงาน ได้แก่ ยอดรวมจำนวนสินค้าต่อจังหวัดของลูกค้า และยอดรวมจำนวนสินค้าต่อชื่อลูกค้า ได้รายงานดังด้านล่าง
| รายงานยอดรวมจำนวนสินค้าต่อจังหวัดของลูกค้า (รายงานก่อน1) | |
|---|---|
| จังหวัดลูกค้า | ยอดรวมจำนวนสินค้า |
| กรุงเทพ | 10 |
| รายงานยอดรวมจำนวนสินค้าต่อชื่อลูกค้า (รายงานก่อน2) | |
|---|---|
| ชื่อลูกค้า | ยอดรวมจำนวนสินค้า |
| ทองดี แน่นะ | 5 |
| เงินทอง ของจริง | 5 |
ข้อมูลหลังการเปลี่ยนแปลง
วันที่ 1 มกราคม 2023 นายทองดี แน่นะ ย้ายจังหวัดจากกรุงเทพไปเชียงรายและได้เปลี่ยนชื่อจากทองดี แน่นะ เป็นทองดี แน่นอน ผลที่ได้จะเป็นดังข้างล่าง
สิ่งที่เกิดขึ้นกับข้อมูลหลัง2_1 คือ ทองดี แน่นะ ที่ใช้เลขข้อมูลลูกค้าหมายเลข 1 (แถวแรก แถบแดง) จะไม่ใช่ข้อมูลที่เป็นปัจจุบันอีกต่อไป และเพื่อบอกผู้ใช้ว่าแถวข้อมูลนี้ไม่ใช่ข้อมูลปัจจุบันอีกแล้ว จึงต้องมีการใส่ข้อมูลวันที่ 1 มกราคม 2023 ซึ่งเป็นจุดสิ้นสุดของข้อมูลแถวนี้ลงในคอลัมน์”จบการใช้งาน” และเปลี่ยนจากใช่ไปเป็นไม่ในคอลัมน์”ปัจจุบันหรือไม่”
ส่วนข้อมูลใหม่ของทองดี จะถูกใส่เพิ่มเป็นแถวใหม่ (แถบน้ำเงิน) ด้วยข้อมูลใหม่ซึ่งในที่นี้คือคอลัมน์”จังหวัดที่อยู่อาศัย”เป็นเชียงราย พร้อม”เลขข้อมูลลูกค้า”ใหม่ซึ่งเป็นเซอโรเกตคีย์เป็นเลขใหม่ที่ไม่เคยมีมาก่อน ในที่นี้คือหมายเลข 3 โดยที่รหัสลูกค้าซึ่งเป็นเนเชอรัลคีย์ต้องใช้ C001 เหมือนเดิมเพราะแถวใหม่นี้คือทองดี คนเดิม และเพื่อบอกผู้ใช้ว่าแถวใหม่นี้คือข้อมูลปัจจุบันของทองดี จึงมีการใส่ข้อมูล”เริ่มการใช้งาน” และไม่ใส่”จบการใช้งาน” (เพราะมันยังไม่จบ) และใส่ใช่ลงในคอลัมน์”ปัจจุบันหรือไม่”
ในขณะเดียวกัน ข้อมูลหลัง2_2 ซึ่งจะเก็บข้อมูลปัจจุบันเท่านั้น จะต้องแก้ข้อมูลของทองดี จากทองดีแน่นะ เป็นทองดีแน่นอน และจังหวัดกรุงเทพเป็นเชียงราย
| ข้อมูลการขาย (ข้อมูลหลัง1) | |||||
|---|---|---|---|---|---|
| รหัสการขาย | วันเวลาซื้อขาย | เลขข้อมูลลูกค้า | เลขข้อมูลลูกค้าปัจจุบัน | เลขข้อมูลสินค้า | จำนวนสินค้าที่ซื้อ |
| O001 | 20220701 | 1 | 1000 | 1 | 2 |
| O002 | 20220702 | 2 | 2000 | 2 | 5 |
| O003 | 20220703 | 1 | 1000 | 2 | 3 |
| ลูกค้า (ข้อมูลหลัง2_1) | |||||||
|---|---|---|---|---|---|---|---|
| เลขข้อมูลลูกค้า SK | เลขข้อมูลลูกค้าปัจจุบัน | รหัสลูกค้า NK | ชื่อลูกค้า | จังหวัดที่อยู่อาศัย | เริ่มการใช้งาน | จบการใช้งาน | ปัจจุบันหรือไม่ |
| 1 | 1000 | C001 | ทองดี แน่นะ | กรุงเทพ | 20220101 | 20230101 | ไม่ |
| 2 | 2000 | C002 | เงินทอง ของจริง | กรุงเทพ | 20220101 | ใช่ | |
| 3 | 1000 | C001 | ทองดี แน่นอน | เชียงราย | 20230101 | ใช่ | |
| ลูกค้าปัจจุบัน (ข้อมูลหลัง2_2) | |||
|---|---|---|---|
| เลขข้อมูลลูกค้าปัจจุบัน SK | รหัสลูกค้า NK | ชื่อลูกค้า | จังหวัดที่อยู่อาศัย |
| 1000 | C001 | ทองดี แน่นอน | เชียงราย |
| 2000 | C002 | เงินทอง ของจริง | กรุงเทพ |
รายงานของข้อมูลหลังการเปลี่ยนแปลง
สมมติว่าต้องออกรายงานสองรายงาน ได้แก่ ยอดรวมจำนวนสินค้าต่อจังหวัดของลูกค้า และยอดรวมจำนวนสินค้าต่อชื่อลูกค้า การทำรายงานจะมีความเป็นไปได้สามอย่าง
ใช้ข้อมูลปัจจุบัน
หากใช้ข้อมูลปัจจุบันรายงานจะได้ดังข้างล่าง รายงานหลัง1 ยอดจะเปลี่ยนจากรายงานก่อน1 ซึ่งไม่ควรเป็นเช่นนั้น เพราะการเปลี่ยนแปลงที่เกิดขึ้นคือลูกค้า ไม่ใช่การซื้อขาย ยอดไม่ควรเปลี่ยนแปลง
| รายงานยอดรวมจำนวนสินค้าต่อจังหวัดของลูกค้า (รายงานหลัง1) | |
|---|---|
| จังหวัดลูกค้า | ยอดรวมจำนวนสินค้า |
| กรุงเทพ | 5 |
| เชียงราย | 5 |
| รายงานยอดรวมจำนวนสินค้าต่อชื่อลูกค้า (รายงานหลัง2) | |
|---|---|
| ชื่อลูกค้า | ยอดรวมจำนวนสินค้า |
| ทองดี แน่นอน | 5 |
| เงินทอง ของจริง | 5 |
ใช้ข้อมูลอดีต
หากใช้ข้อมูลอดีตจะรายงานจะได้ดังข้างล่าง รายงานหลัง1 และรายงานหลัง2 จะเหมือนรายงานก่อน1และรายงานก่อน2 ซึ่งเป็นเรื่องดีเพราะการซื้อขายไม่ได้มีการเปลี่ยนแปลง
| รายงานยอดรวมจำนวนสินค้าต่อจังหวัดของลูกค้า (รายงานหลัง1) | |
|---|---|
| จังหวัดลูกค้า | ยอดรวมจำนวนสินค้า |
| กรุงเทพ | 10 |
| รายงานยอดรวมจำนวนสินค้าต่อชื่อลูกค้า (รายงานหลัง2) | |
|---|---|
| ชื่อลูกค้า | ยอดรวมจำนวนสินค้า |
| ทองดี แน่นะ | 5 |
| เงินทอง ของจริง | 5 |
การซื้อขายหลังการเปลี่ยนแปลง
วันที่ 5 มกราคม 2023 นายทองดี ได้เข้าไปซื้อของ ผลที่ได้จะเป็นไปดังข้อมูลด้านล่าง
ในเทเบิ้ลข้อมูลหลังซื้อขาย1 แถวใหม่จะเกิดขึ้นมาจากการซื้อของของทองดี แต่เลขข้อมูลลูกค้าจะไม่ใช่เลข 1 อีกต่อไปเพราะข้อมูลหมายเลข 1 ไม่ใช่ข้อมูลปัจจุบัน ต้องใช้เลข 3 ซึ่งเป็นข้อมูลปัจจุบันของทองดี
| ข้อมูลการขาย (ข้อมูลหลัง1) | |||||
|---|---|---|---|---|---|
| รหัสการขาย | วันเวลาซื้อขาย | เลขข้อมูลลูกค้า | เลขข้อมูลลูกค้าปัจจุบัน | เลขข้อมูลสินค้า | จำนวนสินค้าที่ซื้อ |
| O001 | 20220701 | 1 | 1000 | 1 | 2 |
| O002 | 20220702 | 2 | 2000 | 2 | 5 |
| O003 | 20220703 | 1 | 1000 | 2 | 3 |
| O004 | 20230105 | 3 | 1000 | 1 | 2 |
| ลูกค้า (ข้อมูลหลัง2_1) | |||||||
|---|---|---|---|---|---|---|---|
| เลขข้อมูลลูกค้า SK | เลขข้อมูลลูกค้าปัจจุบัน | รหัสลูกค้า NK | ชื่อลูกค้า | จังหวัดที่อยู่อาศัย | เริ่มการใช้งาน | จบการใช้งาน | ปัจจุบันหรือไม่ |
| 1 | 1000 | C001 | ทองดี แน่นะ | กรุงเทพ | 20220101 | 20230101 | ไม่ |
| 2 | 2000 | C002 | เงินทอง ของจริง | กรุงเทพ | 20220101 | ใช่ | |
| 3 | 1000 | C001 | ทองดี แน่นอน | เชียงราย | 20230101 | ใช่ | |
| ลูกค้าปัจจุบัน (ข้อมูลหลัง2_2) | |||
|---|---|---|---|
| เลขข้อมูลลูกค้าปัจจุบัน SK | รหัสลูกค้า NK | ชื่อลูกค้า | จังหวัดที่อยู่อาศัย |
| 1000 | C001 | ทองดี แน่นอน | เชียงราย |
| 2000 | C002 | เงินทอง ของจริง | กรุงเทพ |
รายงานของข้อมูลหลังการซื้อขาย
สมมติว่าต้องออกรายงานสองรายงาน ได้แก่ ยอดรวมจำนวนสินค้าต่อจังหวัดของลูกค้า และยอดรวมจำนวนสินค้าต่อชื่อลูกค้า การทำรายงานจะมีความเป็นไปได้สองอย่าง
ใช้ข้อมูลปัจจุบัน
หากใช้ข้อมูลปัจจุบันรายงานจะได้ดังข้างล่าง รายงานหลังซื้อขาย1 จะส่งผลความผิดพลาดต่อเนื่องจากรายงานก่อน
| รายงานยอดรวมจำนวนสินค้าต่อจังหวัดของลูกค้า (รายงานหลังซื้อขาย1) | |
|---|---|
| จังหวัดลูกค้า | ยอดรวมจำนวนสินค้า |
| กรุงเทพ | 5 |
| เชียงราย | 7 |
| รายงานยอดรวมจำนวนสินค้าต่อชื่อลูกค้า (รายงานหลังซื้อขาย2) | |
|---|---|
| ชื่อลูกค้า | ยอดรวมจำนวนสินค้า |
| ทองดี แน่นอน | 7 |
| เงินทอง ของจริง | 5 |
ใช้ข้อมูลอดีต
หากใช้ข้อมูลอดีต ในรายงานหลังซื้อขาย2 ผู้ใช้งานอาจมีการเข้าใจผิดว่า ทองดีแน่นะ และ ทองดีแน่อนเป็นคนละคน ทั้งที่ความจริงทั้งสองเป็นคนเดียวกัน
| รายงานยอดรวมจำนวนสินค้าต่อจังหวัดของลูกค้า (รายงานหลังซื้อขาย1) | |
|---|---|
| จังหวัดลูกค้า | ยอดรวมจำนวนสินค้า |
| กรุงเทพ | 10 |
| เชียงราย | 2 |
| รายงานยอดรวมจำนวนสินค้าต่อชื่อลูกค้า (รายงานหลังซื้อขาย2) | |
|---|---|
| ชื่อลูกค้า | ยอดรวมจำนวนสินค้า |
| ทองดี แน่นะ | 5 |
| เงินทอง ของจริง | 5 |
| ทองดี แน่นอน | 2 |
ความเห็นผู้เขียนในการออกรายงาน
จากตัวอย่างรายงานหลายตัว สังเกตได้ว่าการสร้างรายงานโดยใช้ “ใช้ข้อมูลปัจจุบัน” หรือ “ใช้ข้อมูลอดีต” ต่างก็มีจุดอ่อนด้วยกันทั้งคู่ ทางที่ดีที่สุดคือ ดูจากรูปแบบของรายงาน แล้วเลือกวิธีที่ดีสุด เช่น รายงานหลังซื้อขาย1 เหมาะจะใช้วิธี “ใช้ข้อมูลอดีต” ในขณะที่ รายงานหลังซื้อขาย2 เหมาะจะใช้วิธี “ใช้ข้อมูลปัจจุบัน”
ข้อดี
1. รูปแบบของรายงาน จะใช้ข้อมูลปัจจุบันหรือข้อมูลอดีตในการออกรายงานก็ได้ ตามความเหมาะสมของรายงาน
2. ผู้ใช้สามารถตามการเปลี่ยนแปลงของไดเมนชันย้อนหลังไปยังจุดแรกเริ่มได้
3. ไม่จำกัดจำนวนครั้งการปลี่ยนแปลง
4. การเปลี่ยนแปลงแต่ละครั้ง ส่งผลต่อการแก้ไขแถวข้อมูลน้อยกว่าเอสซีดีประเภท 6
5. ข้อมูลมีความซ้ำซ้อนต่ำ
ข้อเสีย
1. มีจำนวนเทเบิ้ลเพิ่มขึ้นมาทำให้มีควาซับซ้อนในการทำงาน
2. การออกรายงานมีความซับซ้อนอยู่บ้างจากจำนวนเทเบิ้ลที่เพิ่มขึ้น
เหมาะกับไดเมนชันแบบใด
จาการสังเกตของผู้เขียน เหมาะสำหรับทุกไดเมนชัน ถ้าไม่ติดเรื่องความใหญ่และความซ้ำซ้อน น่าจะเป็นเอสซีดีที่ใช้ในการออกรายงานง่ายที่สุด
