การออกแบบฐานข อม ลฟาร มส กรจร ญฟาร ม เอกสารต พ มพ

Free E-Books รวมหนังสือมากมายหลายประเภท สามารถดาวน์โหลดได้ฟรี และมีหนังสือเกี่ยวกับวิศวกรรมศาสตร์ให้เลือกอ่านมากมาย

BOOKBOON

รวมหนังสือและตำราเรียนสำหรับดาวโหลดฟรี ในรูปแบบไฟล์ PDF ส่วนใหญ่เป็นวิชาคณิตศาสตร์, เทคโนโลยี, วิทยาศาสตร์ และธุรกิจ

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

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

ในบทความนี้

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

การสร้างต้นแบบของรายงานหรือรายการผลลัพธ์แต่ละรายการให้เหมาะสมและพิจารณาว่ารายการใดที่คุณจะต้องสร้างรายงาน ตัวอย่างเช่น เมื่อคุณตรวจสอบฟอร์มจดหมาย อาจมีบางสิ่งที่คุณอาจนึกถึง ถ้าคุณต้องการใส่คําทักทายที่เหมาะสม ตัวอย่างเช่น สตริง "Mr.", "Mrs." หรือ "Ms" ที่เริ่มต้นคําทักทาย คุณจะต้องสร้างรายการคําทักทาย นอกจากนี้ โดยทั่วไปคุณอาจเริ่มตัวอักษรด้วย "เรียนคุณสมิธ" แทนที่จะเป็น "เรียน" คุณซิลเวสเตอร์ สมิธ" วิธีนี้แนะนําให้คุณมักจะเก็บนามสกุลแยกจากชื่อ

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

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

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

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

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

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

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

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

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

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

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

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

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

เมื่อต้องการกําหนดคอลัมน์ในตาราง ให้ตัดสินใจว่าข้อมูลใดที่คุณต้องติดตามเกี่ยวกับเรื่องที่ถูกบันทึกในตาราง ตัวอย่างเช่น สําหรับตาราง Customers, Name, Address, City-State-Zip, Send e-mail, Salutation and E-mail address ประกอบด้วยรายการเริ่มต้นที่ดีของคอลัมน์ แต่ละระเบียนในตารางจะมีชุดของคอลัมน์ที่เหมือนกัน คุณจึงสามารถเก็บชื่อ ที่อยู่ จังหวัด-Zip ส่งอีเมล ข้อมูลคําทักทาย และที่อยู่อีเมลสําหรับแต่ละระเบียนได้ ตัวอย่างเช่น คอลัมน์ที่อยู่จะมีที่อยู่ของลูกค้า แต่ละเร็กคอร์ดจะมีข้อมูลเกี่ยวกับลูกค้าหนึ่งราย และฟิลด์ที่อยู่จะมีที่อยู่สําหรับลูกค้ารายนั้น

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

คอลัมน์ ID ผู้ขายในตารางผลิตภัณฑ์เรียกว่าคีย์นอก Foreign Key คือคีย์หลักของอีกตารางหนึ่ง คอลัมน์ 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) ตารางนี้ละเมิดฟอร์มปกติที่สามเนื่องจากคอลัมน์ที่ไม่ใช่คีย์ Discount ขึ้นอยู่กับคอลัมน์อื่นที่ไม่ใช่คีย์ SRP ความเป็นอิสระของคอลัมน์หมายความว่าคุณควรสามารถเปลี่ยนแปลงคอลัมน์ที่ไม่ใช่คีย์ได้โดยไม่มีผลกระทบต่อคอลัมน์อื่น หากคุณเปลี่ยนค่าในช่อง SRP ส่วนลดจะเปลี่ยนแปลงตามนั้น จึงเป็นการละเมิดกฎนั้น ในกรณีนี้ ควรย้ายส่วนลดไปยังตารางอื่นที่คีย์บน SRP

Toplist

โพสต์ล่าสุด

แท็ก

แปลภาษาไทย ไทยแปลอังกฤษ แปลภาษาอังกฤษเป็นไทย pantip โปรแกรม-แปล-ภาษา-อังกฤษ พร้อม-คำ-อ่าน อาจารย์ ตจต ศัพท์ทหาร ภาษาอังกฤษ pdf lmyour แปลภาษา ชขภใ ห่อหมกฮวกไปฝากป้าmv กรมพัฒนาฝีมือแรงงาน อบรมฟรี 2566 ขขขขบบบยข ่ส ศัพท์ทางทหาร military words หนังสือราชการ ตัวอย่าง หยน แปลบาลีเป็นไทย ไทยแปลอังกฤษ ประโยค การไฟฟ้านครหลวง การไฟฟ้าส่วนภูมิภาค ข้อสอบโอเน็ต ม.3 ออกเรื่องอะไรบ้าง พจนานุกรมศัพท์ทหาร เมอร์ซี่ อาร์สยาม ล่าสุด แปลภาษามลายู ยาวี Bahasa Thailand กรมพัฒนาฝีมือแรงงาน อบรมออนไลน์ การ์ดจอมือสอง ข้อสอบคณิตศาสตร์ พร้อมเฉลย คะแนน o-net โรงเรียน ค้นหา ประวัติ นามสกุล บทที่ 1 ที่มาและความสําคัญของปัญหา ร. ต จ แบบฝึกหัดเคมี ม.5 พร้อมเฉลย แปลภาษาอาหรับ-ไทย ใบรับรอง กรมพัฒนาฝีมือแรงงาน PEA Life login Terjemahan บบบย มือปราบผีพันธุ์ซาตาน ภาค2 สรุปการบริหารทรัพยากรมนุษย์ pdf สอบโอเน็ต ม.3 จําเป็นไหม เช็คยอดค่าไฟฟ้า แจ้งไฟฟ้าดับ แปลภาษา มาเลเซีย ไทย แผนที่ทวีปอเมริกาเหนือ ่้แปลภาษา Google Translate กระบวนการบริหารทรัพยากรมนุษย์ 8 ขั้นตอน ก่อนจะนิ่งก็ต้องกลิ้งมาก่อน เนื้อเพลง ข้อสอบโอเน็ตม.3 มีกี่ข้อ คะแนนโอเน็ต 65 ตม กรุงเทพ มีที่ไหนบ้าง