Free E-Books รวมหนังสือมากมายหลายประเภท สามารถดาวน์โหลดได้ฟรี และมีหนังสือเกี่ยวกับวิศวกรรมศาสตร์ให้เลือกอ่านมากมาย Show
BOOKBOONรวมหนังสือและตำราเรียนสำหรับดาวโหลดฟรี ในรูปแบบไฟล์ PDF ส่วนใหญ่เป็นวิชาคณิตศาสตร์, เทคโนโลยี, วิทยาศาสตร์ และธุรกิจ ฐานข้อมูลที่ออกแบบมาอย่างเหมาะสมช่วยให้คุณสามารถเข้าถึงข้อมูลล่าสุดและถูกต้อง เนื่องจากการออกแบบที่ถูกต้องเป็นสิ่งสําคัญในการบรรลุเป้าหมายในการทํางานกับฐานข้อมูลการใช้เวลาที่จําเป็นในการเรียนรู้หลักการของการออกแบบที่ดีเหมาะสม ในท้ายที่สุดคุณมีแนวโน้มที่จะลงเอยด้วยฐานข้อมูลที่ตรงกับความต้องการของคุณและสามารถรองรับการเปลี่ยนแปลงได้อย่างง่ายดาย บทความนี้จะให้แนวทางสําหรับการวางแผนฐานข้อมูลบนเดสก์ท็อป คุณจะได้เรียนรู้วิธีการตัดสินใจว่าข้อมูลใดที่คุณต้องการ วิธีการแบ่งข้อมูลนั้นลงในตารางและคอลัมน์ที่เหมาะสม และตารางเหล่านั้นเกี่ยวข้องกันอย่างไร คุณควรอ่านบทความนี้ก่อนที่คุณจะสร้างฐานข้อมูลเดสก์ท็อปแรกของคุณ ในบทความนี้คำศัพท์เกี่ยวกับฐานข้อมูลบางอย่างที่ควรรู้Access จัดระเบียบข้อมูลของคุณลงใน ตาราง: รายการแถวและคอลัมน์ทําให้นึกถึงแผ่นบัญชีหรือสเปรดชีตของนักบัญชี ในฐานข้อมูลอย่างง่าย คุณอาจมีเพียงหนึ่งตาราง สําหรับฐานข้อมูลส่วนใหญ่ คุณจะต้องมีมากกว่าหนึ่งฐานข้อมูล ตัวอย่างเช่น คุณอาจมีตารางที่จัดเก็บข้อมูลเกี่ยวกับผลิตภัณฑ์ อีกตารางหนึ่งที่จัดเก็บข้อมูลเกี่ยวกับใบสั่งซื้อ และตารางอื่นที่มีข้อมูลเกี่ยวกับลูกค้า แต่ละแถวจะถูกเรียกว่าระเบียนอย่างถูกต้องมากขึ้น และแต่ละคอลัมน์คือเขตข้อมูล ระเบียนเป็นวิธีที่มีประสิทธิภาพและสอดคล้องกันในการรวมข้อมูลเกี่ยวกับบางสิ่งบางอย่าง เขตข้อมูลเป็นรายการเดียวของข้อมูล ซึ่งเป็นชนิดรายการที่ปรากฏในทุกระเบียน ในตารางผลิตภัณฑ์ แถวแต่ละแถวหรือระเบียนแต่ละระเบียนจะมีข้อมูลเกี่ยวกับผลิตภัณฑ์หนึ่งผลิตภัณฑ์ แต่ละคอลัมน์หรือเขตข้อมูลจะมีข้อมูลบางชนิดเกี่ยวกับผลิตภัณฑ์นั้น เช่น ชื่อหรือราคา การออกแบบฐานข้อมูลที่ดีคืออะไรหลักการบางอย่างเป็นแนวทางในกระบวนการออกแบบฐานข้อมูล หลักการแรกคือข้อมูลที่ซ้ํากัน (หรือเรียกว่าข้อมูลซ้ําซ้อน) นั้นไม่ดีเพราะมันจะเสียพื้นที่และเพิ่มความเป็นไปได้ที่จะเกิดข้อผิดพลาดและความไม่สอดคล้องกัน หลักการที่สองคือความถูกต้องและความสมบูรณ์ของข้อมูลเป็นสิ่งสําคัญ ถ้าฐานข้อมูลของคุณมีข้อมูลที่ไม่ถูกต้อง รายงานใดๆ ที่ดึงข้อมูลจากฐานข้อมูลจะมีข้อมูลที่ไม่ถูกต้องด้วย ดังนั้นการตัดสินใจใด ๆ ที่คุณทําที่ยึดตามรายงานเหล่านั้นจะได้รับการเข้าใจผิด การออกแบบฐานข้อมูลที่คือ ฐานข้อมูลที่:
ขั้นตอนการออกแบบขั้นตอนการออกแบบมีขั้นตอนดังต่อไปนี้:
การกำหนดวัตถุประสงค์ของฐานข้อมูลของคุณคุณควรจดบันทึกวัตถุประสงค์ของฐานข้อมูลไว้บนเอกสาร เช่น วัตถุประสงค์ วิธีที่คุณคาดหวังที่จะใช้ฐานข้อมูล และผู้ที่จะใช้ฐานข้อมูล สําหรับฐานข้อมูลขนาดเล็กสําหรับธุรกิจที่บ้าน คุณอาจเขียนบางอย่างง่ายๆ เช่น "ฐานข้อมูลลูกค้าเก็บรายชื่อข้อมูลลูกค้าเพื่อวัตถุประสงค์ในการสร้างการส่งจดหมายและรายงาน" ถ้าฐานข้อมูลมีความซับซ้อนหรือมีการใช้โดยบุคคลหลายคน บ่อยครั้งที่เกิดขึ้นในการตั้งค่าขององค์กร วัตถุประสงค์อาจเป็นย่อหน้าหรือมากกว่าและควรรวมเวลาและวิธีการที่แต่ละคนจะใช้ฐานข้อมูล ความคิดคือการมีพันธกิจที่ได้รับการพัฒนามาอย่างดีซึ่งสามารถอ้างอิงได้ตลอดกระบวนการออกแบบ การมีคําชี้แจงดังกล่าวช่วยให้คุณมุ่งเน้นไปที่เป้าหมายของคุณเมื่อคุณตัดสินใจ การค้นหาและการจัดระเบียบข้อมูลที่จำเป็นเมื่อต้องการค้นหาและจัดระเบียบข้อมูลที่ต้องการ ให้เริ่มต้นด้วยข้อมูลที่มีอยู่ของคุณ ตัวอย่างเช่น คุณอาจบันทึกใบสั่งซื้อในบัญชีแยกประเภท หรือเก็บข้อมูลลูกค้าไว้ในแบบฟอร์มกระดาษในตู้เอกสาร รวบรวมเอกสารเหล่านั้นและแสดงรายการข้อมูลแต่ละชนิด (ตัวอย่างเช่น แต่ละกล่องที่คุณกรอกลงในฟอร์ม) ถ้าคุณไม่มีแบบฟอร์มใดๆ ที่มีอยู่ ให้จินตนาการแทนว่าคุณต้องออกแบบฟอร์มเพื่อบันทึกข้อมูลลูกค้า คุณจะใส่ข้อมูลอะไรลงในฟอร์ม คุณจะสร้างกล่องเติมข้อความแบบใด ระบุและแสดงรายการแต่ละรายการเหล่านี้ ตัวอย่างเช่น สมมติว่าคุณเก็บรายชื่อลูกค้าไว้ในบัตรดัชนี การตรวจสอบบัตรเหล่านี้อาจแสดงว่าบัตรแต่ละใบมีชื่อลูกค้า ที่อยู่ เมือง รัฐ รหัสไปรษณีย์ และหมายเลขโทรศัพท์ แต่ละรายการเหล่านี้แสดงถึงคอลัมน์ที่เป็นไปได้ในตาราง เมื่อคุณเตรียมรายการนี้ไม่ต้องกังวลกับการทําให้สมบูรณ์แบบในตอนแรก แต่ให้ระบุข้อมูลแต่ละรายการที่อยู่ในใจแทน ถ้ามีบุคคลอื่นกําลังใช้ฐานข้อมูลให้ขอแนวคิดของพวกเขาด้วย คุณสามารถปรับแต่งรายการได้ในภายหลัง จากนั้น ให้พิจารณาชนิดของรายงานหรือการส่งจดหมายที่คุณอาจต้องการสร้างจากฐานข้อมูล ตัวอย่างเช่น คุณอาจต้องการให้รายงานยอดขายผลิตภัณฑ์แสดงยอดขายตามภูมิภาค หรือรายงานสรุปสินค้าคงคลังที่แสดงระดับสินค้าคงคลังของผลิตภัณฑ์ นอกจากนี้ คุณอาจต้องการสร้างฟอร์มจดหมายเพื่อส่งถึงลูกค้าที่ประกาศเหตุการณ์การขายหรือข้อเสนอพิเศษ ออกแบบรายงานในใจของคุณ และจินตนาการถึงลักษณะของรายงาน ข้อมูลใดที่คุณจะใส่ไว้ในรายงาน แสดงรายการแต่ละรายการ ทําแบบเดียวกันสําหรับฟอร์มจดหมายและรายงานอื่นๆ ที่คุณคาดว่าจะสร้าง การให้ความคิดกับรายงานและการส่งจดหมายที่คุณอาจต้องการสร้างจะช่วยคุณระบุรายการที่คุณต้องการในฐานข้อมูลของคุณ ตัวอย่างเช่น สมมติว่าคุณเปิดโอกาสให้ลูกค้าเลือกรับการอัปเดตอีเมลประจํางวด (หรือไม่เข้าร่วม) และคุณต้องการพิมพ์รายการของผู้ที่เข้าร่วม เมื่อต้องการบันทึกข้อมูลนั้น ให้คุณเพิ่มคอลัมน์ "ส่งอีเมล" ลงในตารางลูกค้า สําหรับลูกค้าแต่ละราย ความต้องการในการส่งข้อความอีเมลไปยังลูกค้าจะแนะนํารายการอื่นให้บันทึก เมื่อคุณทราบว่าลูกค้าต้องการรับข้อความอีเมล คุณจะต้องทราบที่อยู่อีเมลที่จะส่งไปให้ลูกค้าด้วย ดังนั้น คุณจึงจําเป็นต้องบันทึกที่อยู่อีเมล์สําหรับลูกค้าแต่ละราย การสร้างต้นแบบของรายงานหรือรายการผลลัพธ์แต่ละรายการให้เหมาะสมและพิจารณาว่ารายการใดที่คุณจะต้องสร้างรายงาน ตัวอย่างเช่น เมื่อคุณตรวจสอบฟอร์มจดหมาย อาจมีบางสิ่งที่คุณอาจนึกถึง ถ้าคุณต้องการใส่คําทักทายที่เหมาะสม ตัวอย่างเช่น สตริง "Mr.", "Mrs." หรือ "Ms" ที่เริ่มต้นคําทักทาย คุณจะต้องสร้างรายการคําทักทาย นอกจากนี้ โดยทั่วไปคุณอาจเริ่มตัวอักษรด้วย "เรียนคุณสมิธ" แทนที่จะเป็น "เรียน" คุณซิลเวสเตอร์ สมิธ" วิธีนี้แนะนําให้คุณมักจะเก็บนามสกุลแยกจากชื่อ จุดสําคัญที่ต้องจําคือคุณควรแบ่งข้อมูลแต่ละส่วนออกเป็นส่วนที่มีประโยชน์ที่เล็กที่สุด ในกรณีของชื่อ เพื่อให้นามสกุลพร้อมใช้งาน คุณจะต้องแบ่งชื่อออกเป็นสองส่วน ได้แก่ ชื่อและนามสกุล ตัวอย่างเช่น เมื่อต้องการเรียงลําดับรายงานตามนามสกุล จะช่วยให้นามสกุลของลูกค้าจัดเก็บแยกต่างหากกัน โดยทั่วไปแล้ว ถ้าคุณต้องการเรียงลําดับ ค้นหา คํานวณ หรือรายงานโดยยึดตามรายการของข้อมูล คุณควรใส่รายการนั้นในเขตข้อมูลของรายการ ลองนึกถึงคําถามต่างๆ ที่คุณอาจต้องการให้ฐานข้อมูลตอบ ตัวอย่างเช่น คุณปิดการขายผลิตภัณฑ์เด่นของคุณเท่าใดเมื่อเดือนที่แล้ว ลูกค้าที่ดีที่สุดของคุณอยู่ที่ไหน ใครคือซัพพลายเออร์สําหรับผลิตภัณฑ์ที่ขายดีที่สุดของคุณ การคาดว่าคําถามเหล่านี้จะช่วยให้คุณเน้นไปที่รายการเพิ่มเติมเพื่อบันทึก หลังจากรวบรวมข้อมูลนี้ คุณพร้อมสำหรับขั้นตอนถัดไปแล้ว การแบ่งข้อมูลลงในตารางเมื่อต้องการแบ่งข้อมูลออกเป็นตาราง ให้เลือกเอนทิตีหลักหรือหัวข้อ ตัวอย่างเช่น หลังจากการค้นหาและจัดระเบียบข้อมูลสําหรับฐานข้อมูลยอดขายผลิตภัณฑ์ รายการเบื้องต้นอาจมีลักษณะดังนี้ เอนทิตีหลักที่แสดงที่นี่คือผลิตภัณฑ์ ซัพพลายเออร์ ลูกค้า และคําสั่งซื้อ ดังนั้นจึงเหมาะสมที่จะเริ่มต้นด้วยสี่ตารางเหล่านี้: หนึ่งตารางสําหรับข้อมูลเกี่ยวกับผลิตภัณฑ์หนึ่งสําหรับข้อเท็จจริงเกี่ยวกับซัพพลายเออร์หนึ่งสําหรับข้อเท็จจริงเกี่ยวกับลูกค้าและอีกตารางหนึ่งสําหรับข้อมูลเกี่ยวกับคําสั่งซื้อ แม้ว่าวิธีนี้จะไม่ทําให้รายการเสร็จสมบูรณ์ แต่ก็เป็นจุดเริ่มต้นที่ดี คุณสามารถปรับปรุงรายการนี้ต่อไปได้จนกว่าคุณจะมีการออกแบบที่ทํางานได้ดี เมื่อคุณตรวจทานรายการเบื้องต้นเป็นครั้งแรก คุณอาจอยากวางทั้งหมดลงในตารางเดียว แทนที่จะวางทั้งสี่ที่แสดงในภาพประกอบก่อนหน้า คุณจะได้เรียนรู้ที่นี่ว่าทําไมที่เป็นความคิดที่ไม่ดี พิจารณาสักครู่ ตารางที่แสดงที่นี่: ในกรณีนี้ แต่ละแถวจะมีข้อมูลเกี่ยวกับทั้งผลิตภัณฑ์และผู้จําหน่าย เนื่องจากคุณสามารถมีผลิตภัณฑ์มากมายจากซัพพลายเออร์รายเดียวกันข้อมูลชื่อซัพพลายเออร์และที่อยู่ต้องทําซ้ําหลายครั้ง การดําเนินการนี้จะทําให้เนื้อที่ดิสก์สิ้นเปลือง การบันทึกข้อมูลผู้ขายเพียงครั้งเดียวในตารางผู้จําหน่ายที่แยกจากกัน แล้วเชื่อมโยงตารางนั้นไปยังตารางผลิตภัณฑ์ เป็นโซลูชันที่ดีกว่ามาก ปัญหาที่สองเกี่ยวกับการออกแบบนี้เกิดขึ้นเมื่อคุณจําเป็นต้องปรับเปลี่ยนข้อมูลเกี่ยวกับซัพพลายเออร์ ตัวอย่างเช่น สมมติว่าคุณจําเป็นต้องเปลี่ยนที่อยู่ของซัพพลายเออร์ เนื่องจากที่อยู่ปรากฏในหลายที่ คุณอาจเปลี่ยนที่อยู่โดยไม่ได้ตั้งใจในที่เดียว แต่ลืมเปลี่ยนในที่อื่นๆ การบันทึกที่อยู่ของซัพพลายเออร์ไว้ในที่เดียวสามารถแก้ไขปัญหาได้ เมื่อคุณออกแบบฐานข้อมูลของคุณ ให้พยายามบันทึกข้อเท็จจริงแต่ละข้อเพียงครั้งเดียวเสมอ ถ้าคุณพบว่าคุณใส่ข้อมูลเดียวกันซ้ํามากกว่าหนึ่งที่ เช่น ที่อยู่ของผู้ขายรายใดรายหนึ่ง ให้ใส่ข้อมูลนั้นลงในตารางที่แยกต่างหาก ในที่สุดสมมติว่ามีผลิตภัณฑ์ที่จัดหาโดย Coho Winery เพียงผลิตภัณฑ์เดียวและคุณต้องการลบผลิตภัณฑ์ แต่รักษาข้อมูลชื่อและที่อยู่ของซัพพลายเออร์ไว้ คุณจะลบระเบียนผลิตภัณฑ์โดยไม่สูญเสียข้อมูลผู้จัดจําหน่ายได้อย่างไร คุณทําไม่ได้ เนื่องจากแต่ละระเบียนมีข้อเท็จจริงเกี่ยวกับผลิตภัณฑ์รวมถึงข้อเท็จจริงเกี่ยวกับซัพพลายเออร์คุณจึงไม่สามารถลบได้โดยไม่ลบอีกระเบียนหนึ่ง เมื่อต้องการแยกข้อเท็จจริงเหล่านี้ออกจากกัน คุณต้องแยกตารางหนึ่งออกเป็นสองตาราง: ตารางหนึ่งสําหรับข้อมูลผลิตภัณฑ์ และอีกตารางหนึ่งสําหรับข้อมูลผู้ขาย การลบเรกคอร์ดผลิตภัณฑ์ควรลบเฉพาะข้อเท็จจริงเกี่ยวกับผลิตภัณฑ์ ไม่ใช่ข้อเท็จจริงเกี่ยวกับซัพพลายเออร์ เมื่อคุณเลือกหัวข้อที่แสดงด้วยตาราง คอลัมน์ในตารางนั้นควรเก็บข้อมูลเกี่ยวกับเรื่องเท่านั้น ตัวอย่างเช่นตารางผลิตภัณฑ์ควรจัดเก็บข้อเท็จจริงเกี่ยวกับผลิตภัณฑ์เท่านั้น เนื่องจากที่อยู่ผู้ขายเป็นข้อเท็จจริงเกี่ยวกับผู้ขายและไม่ใช่ข้อเท็จจริงเกี่ยวกับผลิตภัณฑ์ จึงอยู่ในตารางผู้ขาย การเปลี่ยนรายการข้อมูลลงในคอลัมน์เมื่อต้องการกําหนดคอลัมน์ในตาราง ให้ตัดสินใจว่าข้อมูลใดที่คุณต้องติดตามเกี่ยวกับเรื่องที่ถูกบันทึกในตาราง ตัวอย่างเช่น สําหรับตาราง Customers, Name, Address, City-State-Zip, Send e-mail, Salutation and E-mail address ประกอบด้วยรายการเริ่มต้นที่ดีของคอลัมน์ แต่ละระเบียนในตารางจะมีชุดของคอลัมน์ที่เหมือนกัน คุณจึงสามารถเก็บชื่อ ที่อยู่ จังหวัด-Zip ส่งอีเมล ข้อมูลคําทักทาย และที่อยู่อีเมลสําหรับแต่ละระเบียนได้ ตัวอย่างเช่น คอลัมน์ที่อยู่จะมีที่อยู่ของลูกค้า แต่ละเร็กคอร์ดจะมีข้อมูลเกี่ยวกับลูกค้าหนึ่งราย และฟิลด์ที่อยู่จะมีที่อยู่สําหรับลูกค้ารายนั้น เมื่อคุณได้กําหนดชุดคอลัมน์เริ่มต้นสําหรับแต่ละตารางแล้ว คุณสามารถปรับปรุงคอลัมน์เพิ่มเติมได้ ตัวอย่างเช่น คุณควรจัดเก็บชื่อลูกค้าเป็นสองคอลัมน์ที่แยกกัน: ชื่อและนามสกุล เพื่อให้คุณสามารถเรียงลําดับ ค้นหา และทําดัชนีเฉพาะคอลัมน์เหล่านั้นได้ ในทํานองเดียวกันที่อยู่จริงประกอบด้วยห้าส่วนประกอบที่อยู่เมืองรัฐรหัสไปรษณีย์และประเทศ / ภูมิภาคและยังเหมาะสมที่จะจัดเก็บไว้ในคอลัมน์ที่แยกต่างหาก ตัวอย่างเช่น ถ้าคุณต้องการดําเนินการค้นหา กรอง หรือเรียงลําดับตามสถานะ คุณจําเป็นต้องมีข้อมูลสถานะที่เก็บไว้ในคอลัมน์ที่แยกต่างหาก นอกจากนี้คุณควรพิจารณาว่าฐานข้อมูลจะเก็บข้อมูลที่เป็นแหล่งกําเนิดภายในประเทศเท่านั้นหรือระหว่างประเทศด้วย ตัวอย่างเช่น หากคุณวางแผนที่จะจัดเก็บที่อยู่ระหว่างประเทศ การมีคอลัมน์ภูมิภาคแทนรัฐจะดีกว่า เนื่องจากคอลัมน์ดังกล่าวสามารถรองรับได้ทั้งรัฐภายในประเทศและภูมิภาคของประเทศ/ภูมิภาคอื่น ในทํานองเดียวกันรหัสไปรษณีย์เหมาะสมกว่ารหัสไปรษณีย์หากคุณจะจัดเก็บที่อยู่ต่างประเทศ รายการต่อไปนี้แสดงเคล็ดลับบางอย่างสำหรับการตรวจสอบคอลัมน์ของคุณ
เมื่อคุณกำหนดคอลัมน์ข้อมูลในแต่ละตารางแล้ว คุณพร้อมแล้วที่จะเลือกคีย์หลักของแต่ละตาราง การระบุคีย์หลักแต่ละตารางควรมีคอลัมน์หรือชุดของคอลัมน์ที่ระบุแถวแต่ละแถวที่เก็บอยู่ในตารางโดยไม่ซ้ํากัน หมายเลขนี้มักจะเป็นหมายเลขประจําตัวที่ไม่ซ้ํากัน เช่น หมายเลขรหัสพนักงานหรือหมายเลขลําดับประจําสินค้า ในศัพท์เฉพาะของฐานข้อมูล ข้อมูลนี้เรียกว่า คีย์หลักของ ตาราง 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 ผู้ขาย การนำกฎการนอร์มัลไลซ์ไปใช้คุณสามารถใช้กฎการนัลไลซ์ข้อมูล (บางครั้งเรียกว่ากฎการนัลไลซ์) เป็นขั้นตอนถัดไปในการออกแบบของคุณ คุณใช้กฎเหล่านี้เพื่อดูว่าตารางของคุณมีโครงสร้างอย่างถูกต้องหรือไม่ กระบวนการนํากฎไปใช้กับการออกแบบฐานข้อมูลของคุณเรียกว่า การนอร์มัลไลซ์ฐานข้อมูล หรือการนอร์มัลไลซ์ การนัลไลซ์มีประโยชน์มากที่สุดหลังจากที่คุณแสดงรายการข้อมูลทั้งหมดและมาถึงการออกแบบเบื้องต้น แนวคิดคือช่วยให้คุณแน่ใจได้ว่า คุณได้แบ่งรายการข้อมูลของคุณออกเป็นตารางที่เหมาะสม สิ่งที่การนัลไลซ์ไม่สามารถทําได้คือการตรวจสอบให้แน่ใจว่าคุณมีรายการข้อมูลที่ถูกต้องทั้งหมดที่จะเริ่มต้นด้วย คุณนํากฎไปใช้อย่างต่อเนื่องในแต่ละขั้นตอนเพื่อให้แน่ใจว่าการออกแบบของคุณมาถึงหนึ่งในสิ่งที่เรียกว่า "รูปแบบปกติ" ห้ารูปแบบปกติได้รับการยอมรับอย่างกว้างขวาง — รูปแบบปกติแรกผ่านรูปแบบปกติที่ห้า บทความนี้จะขยายในสามส่วนแรก เนื่องจากทั้งหมดนี้จําเป็นสําหรับการออกแบบฐานข้อมูลส่วนใหญ่ ฟอร์มปกติที่หนึ่งฟอร์มปกติแรกจะระบุว่าทุกแถวและจุดตัดของคอลัมน์ในตารางมีค่าเดียว และไม่ใช่รายการของค่า ตัวอย่างเช่น คุณไม่สามารถมีเขตข้อมูลที่ชื่อราคาซึ่งคุณใส่ราคามากกว่าหนึ่งรายการ ถ้าคุณคิดว่าแต่ละจุดตัดของแถวและคอลัมน์เป็นเซลล์ แต่ละเซลล์สามารถมีค่าได้เพียงค่าเดียวเท่านั้น ฟอร์มปกติที่สองฟอร์มปกติที่สองจําเป็นต้องให้คอลัมน์ที่ไม่ใช่คีย์แต่ละคอลัมน์ขึ้นอยู่กับคีย์หลักทั้งหมด ไม่ใช่เพียงส่วนหนึ่งของคีย์ กฎนี้จะนําไปใช้เมื่อคุณมีคีย์หลักที่มีมากกว่าหนึ่งคอลัมน์ ตัวอย่างเช่น สมมติว่าคุณมีตารางที่มีคอลัมน์ต่อไปนี้ ซึ่ง ID คําสั่งซื้อและ ID ผลิตภัณฑ์จะเป็นคีย์หลัก:
การออกแบบนี้ละเมิดฟอร์มปกติที่สอง เนื่องจากชื่อผลิตภัณฑ์ขึ้นอยู่กับ ID ผลิตภัณฑ์ แต่ไม่ขึ้นอยู่กับ ID คําสั่งซื้อ ดังนั้นจึงไม่ขึ้นอยู่กับคีย์หลักทั้งหมด คุณต้องลบชื่อผลิตภัณฑ์ออกจากตาราง ซึ่งอยู่ในตารางอื่น (ผลิตภัณฑ์) ฟอร์มปกติที่สามฟอร์มทั่วไปที่สามจำเป็นต้องมีคอลัมน์ที่ไม่ใช่คีย์ทุกคอลัมน์ขึ้นอยู่กับคีย์หลักทั้งหมด แต่คอลัมน์ที่ไม่คีย์เป็นอิสระต่อกัน อีกวิธีหนึ่งที่ระบุว่าคอลัมน์ที่ไม่ใช่คีย์แต่ละคอลัมน์จะต้องขึ้นอยู่กับคีย์หลักและไม่มีอะไรนอกจากคีย์หลัก ตัวอย่างเช่น สมมติว่าคุณมีตารางที่มีคอลัมน์ต่อไปนี้:
สมมติว่าส่วนลดขึ้นอยู่กับราคาขายปลีกที่แนะนํา (SRP) ตารางนี้ละเมิดฟอร์มปกติที่สามเนื่องจากคอลัมน์ที่ไม่ใช่คีย์ Discount ขึ้นอยู่กับคอลัมน์อื่นที่ไม่ใช่คีย์ SRP ความเป็นอิสระของคอลัมน์หมายความว่าคุณควรสามารถเปลี่ยนแปลงคอลัมน์ที่ไม่ใช่คีย์ได้โดยไม่มีผลกระทบต่อคอลัมน์อื่น หากคุณเปลี่ยนค่าในช่อง SRP ส่วนลดจะเปลี่ยนแปลงตามนั้น จึงเป็นการละเมิดกฎนั้น ในกรณีนี้ ควรย้ายส่วนลดไปยังตารางอื่นที่คีย์บน SRP |