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