1.9.7 การปรับการออกแบบให้ดียิ่งขึ้น

1.9.7 การปรับการออกแบบให้ดียิ่งขึ้น


เมื่อมีตาราง เขตข้อมูล และความสัมพันธ์ตามที่ต้องการแล้ว ควรสร้างตารางและใส่ ข้อมูลตัวอย่างแล้วลองทำงานกับข้อมูล เช่น สร้างแบบสอบถาม เพิ่มระเบียนใหม่ และอื่น ๆ การทำ เช่นนี้จะช่วยให้เห็นปัญหาที่อาจเกิดได้ชัดเจน ตัวอย่างเช่น อาจต้องการเพิ่มคอลัมน์ที่ลืมแทรกใน ระหว่างขั้นตอนออกแบบ หรืออาจมีตารางที่ควรจะแยกเป็นสองตารางเพื่อไม่ให้ซ้ำกัน

ให้ดูว่าสามารถใช้ฐานข้อมูลดึงคำตอบที่ต้องการได้หรือไม่ ให้สร้างฟอร์มและ รายงานอย่างคร่าว ๆ ขึ้น แล้วดูว่าฟอร์มและรายงานเหล่านี้แสดงข้อมูลที่คุณคาดไว้หรือไม่ ดูว่ามี ข้อมูลที่ซ้ำกันโดยไม่จำเป็นหรือไม่ เมื่อพบว่ามี ให้แก้ไขการออกแบบเพื่อกำจัดข้อมูลเหล่านี้ ขณะที่ลองใช้ฐานข้อมูลในขั้นเริ่มต้น อาจพบสิ่งที่ต้องปรับปรุง สิ่งที่ควรตรวจสอบไม่กี่อย่างมี ดังนี้

1. ลืมคอลัมน์ใดหรือไม ถ้าลืม ่ ข้อมูลนั้นเป็นของตารางที่มีอยู่แล้วหรือไม่ ถ้าเป็น ข้อมูลเกี่ยวกับสิ่งอื่น อาจต้องสร้างตารางอีกตาราง ให้สร้างคอลัมน์สำหรับข้อมูลทุกอย่างที่คุณ ต้องการติดตาม ถ้าข้อมูลนั้นไม่สามารถคำนวณได้จากคอลัมน์อื่น ก็เป็นไปได้อย่างยิ่งที่ต้องสร้าง เป็นคอลัมน์ใหม่ 

2. มีคอลัมน์ที่ไม่จำเป็นเนื่องจากสามารถคำนวณจากเขตข้อมูลที่มีอยู่แล้วหรือไม่ ถ้ารายการข้อมูลนั้นสามารถคำนวณได้จากคอลัมน์ที่มีอยู่ ตัวอย่างเช่น ราคาที่ลดซึ่งคำนวณจาก ราคาขายปลีก การทำแบบนั้นมักจะดีกว่าและเลี่ยงการสร้างคอลัมน์ใหม่ 

3. ใส่ข้อมูลเดียวกันซ้ำกันหลาย ๆ ครั้งลงในตารางหรือไม่ ถ้าเป็นเช่นนี้ อาจ จำเป็นต้องแบ่งตารางออกเป็นสองตารางที่มีความสัมพันธ์แบบหนึ่ง-ต่อ-กลุ่ม 

4. มีตารางซึ่งมีเขตข้อมูลจำนวนมาก มีจำนวนระเบียนที่จำกัด และมีเขตข้อมูลว่าง จำนวนมากในแต่ละระเบียนหรือไม่ ถ้ามี ลองนึกถึงการออกแบบตารางใหม่เพื่อให้มีเขตข้อมูล น้อยลงและมีระเบียนมากขึ้น 

5. รายการข้อมูลแต่ละรายการแตกออกเป็นส่วนเล็กที่สุดซึ่งมีประโยชน์หรือไม่ ถ้าต้องการทำรายงาน เรียงลำดับ ค้นหา หรือคำนวณข้อมูลรายการหนึ่ง ให้ใส่ข้อมูลนั้นในคอลัมน์ ของตัวเอง 

6. แต่ละคอลัมน์มีข้อมูลเกี่ยวกับหัวเรื่องของตารางหรือไม่ ถ้าคอลัมน์ไม่มีข้อมูล เกี่ยวกับหัวเรื่องของตาราง แสดงว่าหัวเรื่องดังกล่าวอยู่ในตารางอื่น 

7. ความสัมพันธ์ทั้งหมดระหว่างตารางถูกแสดงให้เห็นผ่านเขตข้อมูลที่ใช้ร่วมกัน หรือตารางที่สามหรือไม่ ความสัมพันธ์แบบหนึ่ง-ต่อ-หนึ่งและแบบหนึ่ง-ต่อ-กลุ่มจะต้องมีคอลัมน์ ร่วมกัน ความสัมพันธ์แบบหนึ่ง-ต่อ-กลุ่มต้องการตารางที่สาม

การปรับปรุงตาราง 

สมมติว่าผลิตภัณฑ์แต่ละชนิดในฐานข้อมูลการขายผลิตภัณฑ์อยู่ในประเภททั่วไป เช่น เครื่องดื่ม เครื่องเทศ หรืออาหารทะเล ตารางผลิตภัณฑ์ควรจะมีเขตข้อมูลที่แสดงประเภทของ ผลิตภัณฑ์แต่ละชนิดด้วย 

สมมติว่าหลังจากที่ตรวจสอบและปรับปรุงการออกแบบฐานข้อมูลแล้ว ตัดสินใจ เก็บคำอธิบายประเภทผลิตภัณฑ์พร้อมกับชื่อ ถ้าจะเพิ่มเขตข้อมูล 'คำอธิบายประเภท' ลงในตาราง ผลิตภัณฑ์ คุณต้องอธิบายซ้ำแต่ละประเภทสำหรับแต่ละผลิตภัณฑ์ที่อยู่ในประเภทเดียวกัน ซึ่ง ไม่ใช่วิธีแก้ปัญหาที่ดีนัก 

ทางแก้ปัญหาที่ดีกว่าคือให้ “ประเภท” เป็นหัวเรื่องใหม่ในฐานข้อมูลที่จะติดตาม โดยมีตารางและคีย์หลักเป็นของตัวเอง จากนั้นจะสามารถเพิ่มคีย์หลักจากตารางประเภทให้เป็น Foreign Key ในตารางผลิตภัณฑ์ได้ 

ตารางประเภทและตารางผลิตภัณฑ์มีความสัมพันธ์แบบหนึ่ง-ต่อ-กลุ่ม นั่นคือ ประเภทหนึ่งอาจมีผลิตภัณฑ์มากกว่าหนึ่งอย่าง แต่ผลิตภัณฑ์หนึ่งจะอยู่ในประเภทเดียวเท่านั้น 

เมื่อได้ตรวจทานโครงสร้างตาราง ให้มองหากลุ่มที่ซ้ำกัน ตัวอย่างเช่น พิจารณา ตารางซึ่งมีคอลัมน์ต่อไปนี้ 


หมายเลขผลิตภัณฑ์
ชื่อ

หมายเลขผลิตภัณฑ์1
ชื่อ1

หมายเลขผลิตภัณฑ์2
ชื่อ2

หมายเลขผลิตภัณฑ์3
ชื่อ3

ในที่นี้ ผลิตภัณฑ์แต่ละรายการเป็นกลุ่มของคอลัมน์ที่เกิดขึ้นซ้ำกันซึ่งแต่ละคอลัมน แตกต่างจากคอลัมน์อื่นโดยมีการเพิ่มตัวเลขลงที่ส่วนท้ายของชื่อคอลัมน์ เมื่อเห็นว่ามีการใส่ตัวเลข ลงในคอลัมน์ด้วยวิธีนี้ ควรจะคิดแก้ไขการออกแบบของคุณเสียใหม่ 

การออกแบบดังกล่าวมีข้อผิดพลาดหลายแห่ง ประการแรก จะต้องระบุจำนวน ผลิตภัณฑ์ที่มีได้มากสุด ทันทีที่มีผลิตภัณฑ์เกินจำนวนที่จำกัดไว้ ต้องเพิ่มกลุ่มของคอลัมน์ใหม่ลง ในโครงสร้างตาราง ซึ่งเป็นงานหลักของผู้ดูแลระบบ 

อีกปัญหาหนึ่งคือผู้จำหน่ายสินค้าที่มีจำนวนผลิตภัณฑ์น้อยกว่าจำนวนสูงสุดจะทำ ให้เปลืองพื้นที่ เนื่องจากคอลัมน์เพิ่มเติมจะเป็นคอลัมน์ว่าง ข้อผิดพลาดร้ายแรงที่สุดของการ ออกแบบนี้คือจะทำงานหลายอย่างได้ยาก เช่น การเรียงลำดับหรือการทำดัชนีของตารางตาม หมายเลขผลิตภัณฑ์หรือชื่อผลิตภัณฑ์ 

เมื่อใดก็ตามที่เห็นกลุ่มซ้ำ ให้ตรวจทานการออกแบบอย่างละเอียดโดยเน้นที่การแบ่ง ตารางออกเป็นสองตาราง ในตัวอย่างข้างต้น จะเป็นการดีกว่าถ้าใช้สองตาราง ตารางหนึ่งสำหรับผู้ จำหน่ายและอีกตารางสำหรับผลิตภัณฑ์ แล้วเชื่อมโยงกันด้วย ID ผู้จำหน่าย

0 ความคิดเห็น:

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