พื้นฐานการออกแบบฐานข้อมูล

พื้นฐานการออกแบบฐานข้อมูล

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

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

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

ในบทความนี้

คำศัพท์เกี่ยวกับฐานข้อมูลบางอย่างที่ควรรู้

การออกแบบฐานข้อมูลที่ดีคืออะไร

ขั้นตอนการออกแบบ

การกำหนดวัตถุประสงค์ของฐานข้อมูลของคุณ

การค้นหาและการจัดระเบียบข้อมูลที่จำเป็น

การแบ่งข้อมูลเป็นตาราง

การเปลี่ยนรายการข้อมูลเป็นคอลัมน์

การระบุคีย์หลัก

การสร้างความสัมพันธ์ตาราง

การจำกัดการออกแบบ

การนำกฎการนอร์มัลไลซ์ไปใช้


คำศัพท์เกี่ยวกับฐานข้อมูลบางอย่างที่ควรรู้

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

รูปแสดงตารางสามตารางในแผ่นข้อมูล

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

ด้านบนของหน้า

การออกแบบฐานข้อมูลที่ดีคืออะไร

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

การออกแบบฐานข้อมูลที่คือ ฐานข้อมูลที่:

  • แบ่งข้อมูลของคุณลงในตารางตามหัวข้อเพื่อลดข้อมูลที่ซ้ำกัน

  • มอบการเข้าถึงข้อมูลที่จำเป็นเพื่อใช้งานข้อมูลในตารางร่วมกันตามจำเป็น

  • ช่วยสนับสนุนและแน่ใจในความถูกต้องและความสมบูรณ์ของข้อมูลของคุณ

  • เหมาะสำหรับการดำเนินการข้อมูลและความต้องการในการทำรายงานของคุณ

ด้านบนของหน้า

ขั้นตอนการออกแบบ

ขั้นตอนการออกแบบมีขั้นตอนดังต่อไปนี้:

  • กำหนดวัตถุประสงค์ของฐานข้อมูลของคุณ    

    ซึ่งช่วยให้คุณเตรียมพร้อมสำหรับขั้นตอนที่เหลือ

  • ค้นหาและจัดระเบียบข้อมูลที่ต้องการ    

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

  • แบ่งข้อมูลเป็นตาราง    

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

  • เปลี่ยนรายการข้อมูลเป็นคอลัมน์    

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

  • ระบุคีย์หลัก    

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

  • ตั้งค่าความสัมพันธ์ตาราง    

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

  • จำกัดการออกแบบของคุณ    

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

  • นำกฎการนอร์มัลไลซ์ไปใช้    

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

ด้านบนของหน้า

การกำหนดวัตถุประสงค์ของฐานข้อมูลของคุณ

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

ด้านบนของหน้า

การค้นหาและการจัดระเบียบข้อมูลที่จำเป็น

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

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

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

บุคคลกำลังจินตนาการเกี่ยวกับรายงานสินค้าคงคลังของผลิตภัณฑ์

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

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

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

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

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

หลังจากรวบรวมข้อมูลนี้ คุณพร้อมสำหรับขั้นตอนถัดไปแล้ว

ด้านบนของหน้า

การแบ่งข้อมูลลงในตาราง

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

รายการข้อมูลที่เขียนด้วยลายมือถูกจัดกลุ่มตามหัวเรื่อง

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

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

รูปแสดงตารางที่มีทั้งข้อมูลเกี่ยวกับผลิตภัณฑ์และผู้จำหน่ายผลิตภัณฑ์

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

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

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

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

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

ด้านบนของหน้า

การเปลี่ยนรายการข้อมูลลงในคอลัมน์

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

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

คุณควรพิจารณาว่าฐานข้อมูลควรมีข้อมูลเฉพาะภายในประเทศหรือนานาชาติด้วยเช่นกัน เช่น ถ้าคุณวางแผนที่จะจัดเก็บที่อยู่นานาชาติ คอลัมน์ควรเป็นภูมิภาคมากกว่าที่จะเป็นรัฐ เนื่องจากคอลัมน์สามารถจัดการได้ทั้งรัฐและภูมิภาคภายในประเทศของประเทศ/ภูมิภาคอื่น ในทำนองเดียวกัน รหัสไปรษณีย์ (Postal Code) มีความสมเหตุสมผลมากกว่ารหัสไปรษณีย์ (Zip Code) ถ้าคุณต้องการจัดเก็บที่อยู่แบบนานาชาติ

รายการต่อไปนี้แสดงเคล็ดลับบางอย่างสำหรับการตรวจสอบคอลัมน์ของคุณ

  • ไม่รวมข้อมูลที่คำนวณแล้ว    

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

  • จัดเก็บข้อมูลในส่วนทางตรรกะที่เล็กที่สุด    

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

รูปแสดงรายการข้อมูลในระหว่างกระบวนการออกแบบ

เมื่อคุณกำหนดคอลัมน์ข้อมูลในแต่ละตารางแล้ว คุณพร้อมแล้วที่จะเลือกคีย์หลักของแต่ละตาราง

ด้านบนของหน้า

การระบุคีย์หลัก

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

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

คีย์หลักต้องเป็นค่าเสมอ ถ้าไม่ได้มอบหมายค่าของคอลัมน์หรือไม่ทราบค่า (ค่าหายไป) ในบางจุด ค่าจะไม่สามารถใช้เป็นคอมโพเนนต์ในคีย์หลักได้

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

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

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

รูปแสดงตารางผลิตภัณฑ์ที่มีเขตข้อมูลคีย์หลัก

1. ชุดคอลัมน์ที่ตั้งค่าชนิดข้อมูลเป็น AutoNumber มักจะมีคีย์หลักที่ดี ไม่มีสอง ID ผลิตภัณฑ์ที่เหมือนกัน

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

สำหรับฐานข้อมูลยอดขายของผลิตภัณฑ์ คุณสามารถสร้างคอลัมน์ AutoNumber สำหรับแต่ละตารางเพื่อให้เป็นคีย์หลักได้: ID ผลิตภัณฑ์สำหรับตารางผลิตภัณฑ์, ID คำสั่งซื้อสำหรับตารางคำสั่งซื้อ, ID ลูกค้าสำหรับตารางลูกค้า, และ ID ผู้ขายสำหรับตารางผู้ขาย

รูปแสดงรายการข้อมูลในระหว่างกระบวนการออกแบบ


ด้านบนของหน้า

การสร้างความสัมพันธ์ตาราง

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

ฟอร์มใบสั่งซื้อ

1. ข้อมูลในฟอร์มนี้มาจากตารางลูกค้า...

2. ...ตารางพนักงาน...

3. ...ตารางใบสั่งซื้อ...

4. ...ตารางผลิตภัณฑ์...

5. ...และตารางรายละเอียดใบสั่งซื้อ

Access เป็นระบบการจัดการฐานข้อมูลเชิงสัมพันธ์ ในฐานข้อมูลเชิงสัมพันธ์ ให้คุณแบ่งข้อมูลของคุณออกเป็นตารางแยกตามหัวข้อ จากนั้นให้ใช้ความสัมพันธ์ของตารางเพื่อรวบรวมข้อมูลที่ต้องการ

ด้านบนของหน้า

การสร้างความสัมพันธ์แบบหนึ่ง-ต่อ-กลุ่ม

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

กรอบความคิดแบบหนึ่ง-ต่อ-กลุ่ม

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

คอลัมน์ ID ผู้ขายในตารางผลิตภัณฑ์เรียกว่าคีย์นอก คีย์นกเป็นคีย์หลักของอีกตารางหนึ่ง คอลัมน์ ID ผู้ขายในตารางผลิตภัณฑ์เป็นคีย์นอก เนื่องจากมีคีย์หลักในตารางผู้ขายเช่นเดียวกัน

รูปแสดงรายการข้อมูลในระหว่างกระบวนการออกแบบ

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

ด้านบนของหน้า

การสร้างความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่ม

พิจารณาความสัมพันธ์ระหว่างตารางผลิตภัณฑ์และตารางคำสั่งซื้อ

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

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

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

ความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่ม

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

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

  • ตารางคำสั่งซื้อและตารางรายละเอียดคำสั่งซื้อมีความสัมพันธ์แบบหนึ่ง-ต่อกลุ่ม แต่ละคำสั่งซื้อสามารถมีรายการมากกว่าหนึ่งบรรทัดที่เชื่อมต่อกันหนึ่งคำสั่งซื้อเท่านั้น

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

จากตารางรายละเอียดคำสั่งซื้อ คุณสามารถตรวจสอบผลิตภัณฑ์ทั้งหมดในคำสั่งซื้อที่ระบุได้ คุณยังสามารถตรวจสอบคำสั่งซื้อทั้งหมดสำหรับเฉพาะผลิตภัณฑ์ได้

หลังจากการรวมตารางรายละเอียดคำสั่งซื้อ รายการตารางและเขตข้อมูลอาจมีลักษณะดังนี้:

รูปแสดงรายการข้อมูลในระหว่างกระบวนการออกแบบ


ด้านบนของหน้า

การสร้างความสัมพันธ์แบบหนึ่ง-ต่อ-หนึ่ง

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

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

  • ถ้าสองตารางมีหัวเรื่องเดียวกัน คุณอาจตั้งค่าความสัมพันธ์โดยใช้คีย์หลักเดียวกันทั้งสองตารางได้

  • ถ้าสองตารางมีหัวเรื่องต่างกันและมีคีย์หลักต่างกัน ให้เลือกตารางใดตารางหนึ่งแล้วแทรกคีย์หลักในอีกตารางหนึ่งเป็นคีย์นอก

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

ด้านบนของหน้า

การจำกัดการออกแบบ

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

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

เมื่อคุณลองฐานข้อมูลเบื้องต้น คุณอาจพบจุดที่ควรปรับปรุง ต่อไปนี้เป็นบางอย่างสำหรับการตรวจสอบ:

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

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

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

  • คุณมีตารางที่มีหลายเขตข้อมูล จำนวนระเบียนที่จำกัด และมีเขตข้อมูลเปล่ามากมายในแต่ละระเบียนใช่ไหม ถ้าใช่ ให้ลองออกแบบตารางใหม่เพื่อให้มีเขตข้อมูลที่น้อยลงและมีระเบียนมากขึ้น

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

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

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

การกำหนดตารางผลิตภัณฑ์

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

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

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

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

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

  • ID ผลิตภัณฑ์

  • ชื่อ

  • ID ผลิตภัณฑ์1

  • ชื่อ1

  • ID ผลิตภัณฑ์2

  • ชื่อ2

  • ID ผลิตภัณฑ์3

  • ชื่อ3

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

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

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

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

ด้านบนของหน้า

การนำกฎการนอร์มัลไลซ์ไปใช้

คุณสามารถนำกฎการนอร์มัลไลซ์ไปใช้ (บางครั้งเรียกว่ากฎการนอร์มัลไลซ์) ตามขั้นตอนถัดไปในการออกแบบของคุณ คุณใช้กฎเหล่านี้เพื่อดูว่าตารางของคุณมีโครงสร้างถูกต้องแล้วหรือไม่ ขั้นตอนการนำกฎไปใช้กับการออกแบบฐานข้อมูลของคุณเรียกว่าการนอร์มัลไลซ์ฐานข้อมูล หรือการนอร์มัลไลซ์

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

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

ฟอร์มปกติที่หนึ่ง

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

ฟอร์มปกติที่สอง

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

  • ID คำสั่งซื้อ (คีย์หลัก)

  • ID ผลิตภัณฑ์ (คีย์หลัก)

  • ชื่อผลิตภัณฑ์

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

ฟอร์มปกติที่สาม

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

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

  • ID ผลิตภัณฑ์ (คีย์หลัก)

  • ชื่อ

  • SRP

  • ส่วนลด

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

ด้านบนของหน้า

ขยายทักษะของคุณ
สำรวจการฝึกอบรม
รับฟีเจอร์ใหม่ก่อนใคร
เข้าร่วม Office Insider

ข้อมูลนี้เป็นประโยชน์หรือไม่

ขอบคุณสำหรับคำติชมของคุณ!

ขอขอบคุณสำหรับคำติชมของคุณ! เราคิดว่าอาจเป็นประโยชน์ที่จะให้คุณได้ติดต่อกับหนึ่งในตัวแทนฝ่ายสนับสนุน Office ของเรา

×