เอสซีดีประเภทที่ 4
เอสซีดีประเภททที่ 4 มีชื่อเรียกอีกอย่างว่า “เพิ่มไดเมนชันเล็ก” หรือ “Add Mini-Dimension” หลักการคือ ปกติแล้วหนึ่งไดเมนชันจะมีเทเบิ้ลเพียงเทเบิ้ลเดียว (ในกรณีที่ออกแบบฐานข้อมูลเป็นโครงสร้างดาวหรือ Star Schema) หากไดเมนชันใดถูกออกแบบให้ใช้เอสซีดีประเภทที่ 4 ไดเมนชันนั้นจะมีเทเบิ้ลขนาดเล็กเพิ่มขึ้นมา โดยเทเบิ้ลขนาดเล็กนี้เรียกว่าไดเมนชันเล็ก โดยไดเมนชันหลักและไดเมนชันเล็กนี้จะทำหน้าที่เก็บข้อมูลที่แตกต่างกัน ไดเมนชันหลักจะเก็บข้อมูลที่ถ้ามีการเปลี่ยนแปลง มันไม่ควรส่งผลกระทบกับยอดของรายงาน ส่วนไดเมนชันเล็กจะเก็บข้อมูลที่ถ้ามีการเปลี่ยนแปลง จะส่งผลกระทบกับยอดของรายงาน
การเปลี่ยนแปลงของไดเมนชันหลักและไดเมนชันเล็กก็แตกต่างกัน โดยไดเมนชันหลักจะใช้เอสซีดีประเภทที่ 1 คือการเขียนทับ ส่วนไดเมนชันเล็กถ้าข้อมูลใหม่ยังไม่มีในไดเมนชันเล็กก็ให้เพิ่มข้อมูลเข้าไป
ส่วนข้อมูลในแฟกซ์ (Fact) ก็จะต้องอ้างอิงข้อมูลทั้งในไดเมนชันหลักและไดเมนชันเล็ก เพื่อให้ได้ข้อมูลของไดเมนชันนั้นอย่างครบถ้วน
ตัวอย่าง
ข้อมูลก่อนการเปลี่ยนแปลง
ถ้าให้ข้อมูลดั้งเดิมเป็นดังข้อมูลข้างล่าง ให้เลขข้อมูลลูกค้า และ รหัสลูกค้า ในเทเบิ้ลลูกค้าเป็นเซอโรเกตคีย์และเนเชอรัลคีย์ตามลำดับ และให้เทเบิ้ลลูกค้าใช้หลักเอสซีดีประเภทที่ 4
จากข้อมูลก่อน2_1 และข้อมูลก่อน2_2 สังเกตได้ว่าไม่มีการเชื่อมข้อมูลถึงกัน ฉะนั้นผู้ใช้จะไม่รู้เลยว่าลูกค้าอยู่จังหวัดใด ส่วนถ้าดูข้อมูลก่อน1 การซื้อขายที่เกิดขึ้นจะต้องมีการกรอกข้อมูลสองอย่างทั้งเลขข้อมูลลูกค้าและเลขข้อมูลลูกค้าเล็ก ถึงจุดนี้ผู้อ่านอาจจะคิดได้ว่าข้อมูลก่อน2_2 ถึงแม้จะได้ชื่อว่าเป็นไดเมนชันเล็กของข้อมูลก่อน2_1 แต่ถ้ามองในมุมมองของข้อมูลก่อน1 ก็จะมองข้อมูลก่อน2_2 เป็นไดเมนชันหลักไม่ต่างจากข้อมูลก่อน2_1 เลย
| ข้อมูลการขาย (ข้อมูลก่อน1) | |||||
|---|---|---|---|---|---|
| รหัสการขาย | วันเวลาซื้อขาย | เลขข้อมูลลูกค้า | เลขข้อมูลลูกค้าเล็ก | เลขข้อมูลสินค้า | จำนวนสินค้าที่ซื้อ |
| O001 | 20220701 | 1 | 1 | 1 | 2 |
| O002 | 20220702 | 2 | 1 | 2 | 5 |
| O003 | 20220703 | 1 | 1 | 2 | 3 |
| ลูกค้า (ไดเมนชันหลัก) (ข้อมูลก่อน2_1) | ||
|---|---|---|
| เลขข้อมูลลูกค้า SK | รหัสลูกค้า NK | ชื่อลูกค้า |
| 1 | C001 | ทองดี แน่นะ |
| 2 | C002 | เงินทอง ของจริง |
| ลูกค้า (ไดเมนชันเล็ก) (ข้อมูลก่อน2_2) | |
|---|---|
| เลขข้อมูลลูกค้าเล็ก SK | ชื่อจังหวัด |
| 1 | กรุงเทพ |
รายงานของข้อมูลก่อนการเปลี่ยนแปลง
สมมติว่าต้องออกรายงานสองรายงาน ได้แก่ ยอดรวมจำนวนสินค้าต่อจังหวัดของลูกค้า และยอดรวมจำนวนสินค้าต่อชื่อลูกค้า ได้รายงานดังด้านล่าง
| รายงานยอดรวมจำนวนสินค้าต่อจังหวัดของลูกค้า (รายงานก่อน1) | |
|---|---|
| จังหวัดลูกค้า | ยอดรวมจำนวนสินค้า |
| กรุงเทพ | 10 |
| รายงานยอดรวมจำนวนสินค้าต่อชื่อลูกค้า (รายงานก่อน2) | |
|---|---|
| ชื่อลูกค้า | ยอดรวมจำนวนสินค้า |
| ทองดี แน่นะ | 5 |
| เงินทอง ของจริง | 5 |
ข้อมูลหลังการเปลี่ยนแปลง
วันที่ 1 มกราคม 2023 นายทองดี แน่นะ ย้ายจังหวัดจากกรุงเทพไปเชียงรายและได้เปลี่ยนชื่อจากทองดี แน่นะ เป็นทองดี แน่นอน ผลที่ได้จะเป็นดังข้างล่าง
การเปลี่ยนชื่อทำให้ข้อมูลหลัง2_1ซึ่งเป็นไดเมนชันหลัก การเปลี่ยนแปลงจะเป็นการเขียนทับ ส่งผลให้คอลัมน์ “ชื่อลูกค้า” เปลี่ยนจาก ทองดี แน่นะ กลายเป็น ทองดี แน่นอน
การเปลี่ยนจังหวัดไม่ได้ทำให้มีจังหวัดของข้อมูลหลัง2_2 เพิ่มขึ้น เพราะถึงแม้จะเป็นข้อมูลเสริมของลูกค้า แต่มันถูกอ้างอิงจากข้อมูลหลัง1 ถ้าเลขข้อมูลลูกค้าเล็กไม่มีการอ้างอิงเชียงราย ก็ไม่มีความจำเป็นต้องเพิ่มแถวในข้อมูลหลัง2_2
| ข้อมูลการขาย (ข้อมูลหลัง1) | |||||
|---|---|---|---|---|---|
| รหัสการขาย | วันเวลาซื้อขาย | เลขข้อมูลลูกค้า | เลขข้อมูลลูกค้าเล็ก | เลขข้อมูลสินค้า | จำนวนสินค้าที่ซื้อ |
| O001 | 20220701 | 1 | 1 | 1 | 2 |
| O002 | 20220702 | 2 | 1 | 2 | 5 |
| O003 | 20220703 | 1 | 1 | 2 | 3 |
| ลูกค้า (ไดเมนชันหลัก) (ข้อมูลหลัง2_1) | ||
|---|---|---|
| เลขข้อมูลลูกค้า SK | รหัสลูกค้า NK | ชื่อลูกค้า |
| 1 | C001 | ทองดี แน่นอน |
| 2 | C002 | เงินทอง ของจริง |
| ลูกค้า (ไดเมนชันเล็ก) (ข้อมูลหลัง2_2) | |
|---|---|
| เลขข้อมูลลูกค้าเล็ก SK | ชื่อจังหวัด |
| 1 | กรุงเทพ |
รายงานของข้อมูลหลังการเปลี่ยนแปลง
สมมติว่าต้องออกรายงานสองรายงาน ได้แก่ ยอดรวมจำนวนสินค้าต่อจังหวัดของลูกค้า และยอดรวมจำนวนสินค้าต่อชื่อลูกค้า ผลที่ได้จะเป็นไปด้านล่าง
ข้อดีที่เห็นได้ชัดจากเอสซีดีประเภทที่ 4 คือยอดของรายงานไม่มีการเปลี่ยนแปลง ซึ่งเป็นสิ่งที่ถูกต้องเพราะสิ่งที่เปลี่ยนแปลงคือข้อมูลลูกค้า ไม่ใช่ข้อมูลการซื้อขาย ยอดทุกอย่างควรอยู่เหมือนเดิม
| รายงานยอดรวมจำนวนสินค้าต่อจังหวัดของลูกค้า (รายงานหลัง1) | |
|---|---|
| จังหวัดลูกค้า | ยอดรวมจำนวนสินค้า |
| กรุงเทพ | 10 |
| รายงานยอดรวมจำนวนสินค้าต่อชื่อลูกค้า (รายงานหลัง2) | |
|---|---|
| ชื่อลูกค้า | ยอดรวมจำนวนสินค้า |
| ทองดี แน่นอน | 5 |
| เงินทอง ของจริง | 5 |
การซื้อขายหลังการเปลี่ยนแปลง
วันที่ 5 มกราคม 2023 นายทองดี ได้เข้าไปซื้อของ ผลที่ได้จะเป็นไปดังข้อมูลด้านล่าง
เมื่อมีข้อมูลการซื้อขายจากทองดี ซึ่งตอนนี้อยู่เชียงรายแล้ว เลขข้อมูลลูกค้าเล็กในข้อมูลหลังซื้อขาย2_2 จึงมีการเพิ่มเชียงราย เพื่อให้ข้อมูลหลังซื้อขาย1อ้างอิงได้
| ข้อมูลการขาย (ข้อมูลหลังซื้อขาย1) | |||||
|---|---|---|---|---|---|
| รหัสการขาย | วันเวลาซื้อขาย | เลขข้อมูลลูกค้า | เลขข้อมูลลูกค้าเล็ก | เลขข้อมูลสินค้า | จำนวนสินค้าที่ซื้อ |
| O001 | 20220701 | 1 | 1 | 1 | 2 |
| O002 | 20220702 | 2 | 1 | 2 | 5 |
| O003 | 20220703 | 1 | 1 | 2 | 3 |
| O004 | 20230105 | 1 | 2 | 1 | 2 |
| ลูกค้า (ไดเมนชันหลัก) (ข้อมูลหลังซื้อขาย2_1) | ||
|---|---|---|
| เลขข้อมูลลูกค้า SK | รหัสลูกค้า NK | ชื่อลูกค้า |
| 1 | C001 | ทองดี แน่นอน |
| 2 | C002 | เงินทอง ของจริง |
| ลูกค้า (ไดเมนชันเล็ก) (ข้อมูลหลังซื้อขาย2_2) | |
|---|---|
| เลขข้อมูลลูกค้าเล็ก SK | ชื่อจังหวัด |
| 1 | กรุงเทพ |
| 2 | เชียงราย |
รายงานของข้อมูลหลังการซื้อขาย
สมมติว่าต้องออกรายงานสองรายงาน ได้แก่ ยอดรวมจำนวนสินค้าต่อจังหวัดของลูกค้า และยอดรวมจำนวนสินค้าต่อชื่อลูกค้า ผลที่ได้จะเป็นไปด้านล่าง
| รายงานยอดรวมจำนวนสินค้าต่อจังหวัดของลูกค้า (รายงานหลังซื้อขาย1) | |
|---|---|
| จังหวัดลูกค้า | ยอดรวมจำนวนสินค้า |
| กรุงเทพ | 10 |
| เชียงราย | 2 |
| รายงานยอดรวมจำนวนสินค้าต่อชื่อลูกค้า (รายงานหลังซื้อขาย2) | |
|---|---|
| ชื่อลูกค้า | ยอดรวมจำนวนสินค้า |
| ทองดี แน่นอน | 7 |
| เงินทอง ของจริง | 5 |
ข้อดี
1. การเปลี่ยนแปลงไดเมนชัน ไม่ส่งผลต่อยอดรายงาน
2. ไดเมนชันมีขนาดเล็ก
3. ปรับเปลี่ยนได้ไม่จำกัดจำนวนครั้ง
ข้อเสีย
1. ไดเมนชันหลักและไดเมนชันเล็กไม่เชื่อมกันทำให้ไม่สามารถบอกได้ว่าข้อมูลปัจจุบันฉบับสมบูรณ์ที่รวมไดเมนชันหลักและเล็กเป็นอย่างไร
2. แฟกซ์จะต้องใช้ข้อมูลเชื่อมไดเมนชันหลักและไดเมนชันเล็กเพื่อให้ได้ข้อมูลไดเมนชันที่สมบูรณ์
เหมาะกับไดเมนชันแบบใด
จาการสังเกตของผู้เขียน เหมาะสำหรับไดเมนชันทุกรูปแบบ ถ้าสามารถยอมรับได้ว่าไดเมนชันหลักกับไดเมนชันเล็กไม่ได้มีการเชื่อมกันส่งผลให้ไม่สามารถรู้ได้ว่าข้อมูลปัจจุบันของไดเมนชันหลักใช้ไดเมนชันเล็กตัวใด
