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