ฉันมีจำนวนข้อมูลที่เหมาะสมในฐานข้อมูล ฉันสร้างตารางอย่างดีและมีความสัมพันธ์ที่ดีระหว่างกันโดยมีความซ้ำซ้อนในข้อมูลของฉัน แต่ฉันจะไปกับการฟื้นฟูได้ไกลแค่ไหน? มีข้อเสียของการปรับมาตรฐานมากเกินไปหรือไม่?
ฉันมีจำนวนข้อมูลที่เหมาะสมในฐานข้อมูล ฉันสร้างตารางอย่างดีและมีความสัมพันธ์ที่ดีระหว่างกันโดยมีความซ้ำซ้อนในข้อมูลของฉัน แต่ฉันจะไปกับการฟื้นฟูได้ไกลแค่ไหน? มีข้อเสียของการปรับมาตรฐานมากเกินไปหรือไม่?
คำตอบ:
คุณควรไปให้ไกลที่สุดและไม่ควรไปไกลกว่านี้ แน่นอน. ~ ปัญหาอาจเป็นได้ว่านี่เป็นศิลปะนิดหน่อยและนี่คือสาเหตุที่นี่ไม่ใช่วิทยาศาสตร์บริสุทธิ์
ผลิตภัณฑ์หลักของเราคือการวิเคราะห์และระบบการรายงานและในเรื่องนั้นเรามีบันทึกรายละเอียดค่อนข้างน้อย ในตอนแรกเราได้รับการออกแบบโดยมีการรวมจำนวนมากในรหัสทั่วไปสำหรับบันทึกเด็กบางส่วน แต่เราพบว่าหากเราตัดฟิลด์สองสามแห่งเราสามารถตัดการเข้าร่วมจำนวนมากและเราสามารถกำจัดอาการปวดหัวได้เป็นจำนวนมาก
แต่เรารู้เพียงว่าเพราะเรา 1) สร้างการออกแบบ "ปกติ" 2) เริ่มใช้มัน 3) แสดงประสิทธิภาพที่แท้จริงหลังจากแถวหลายร้อยล้านแถวในหลายสิบตาราง
เรื่องราวสุดท้ายคือจนกว่าเราจะทำโปรไฟล์เราไม่รู้ว่าจะเกิดอะไรขึ้นกับเรา เราชอบแนวคิดของการทำให้เป็นมาตรฐานเพื่อให้เราสามารถอัปเดตได้ง่ายขึ้น แต่ในท้ายที่สุดประสิทธิภาพที่แท้จริงคือปัจจัยในการตัดสินใจ นั่นคือคำแนะนำของฉันสำหรับคุณ: โปรไฟล์, โปรไฟล์, โปรไฟล์
in ('forgiven','pardoned')
;): p
การทำให้เป็นมาตรฐานเป็นเป้าหมายต่อเมื่อมันรองรับโมเดลข้อมูลของคุณได้ดีพอที่จะรับประกันได้ มันมีไว้เพื่อเป็นแนวทางในการอนุญาตการเติบโตการจัดการและการบำรุงรักษา โปรดจำไว้ว่าหนังสือเกี่ยวกับการทำให้เป็นมาตรฐานและผู้เขียนจะไม่สร้างหรือดูแลฐานข้อมูลหรือแอปพลิเคชันของคุณ
อ่านที่ดีเกี่ยวกับเรื่องของ "การฟื้นฟูมากเกินไป" อยู่ที่นี่
และใช่อาจมีผลกระทบต่อประสิทธิภาพในการทำให้ปกติมากเกินไป นี่จะเป็นการสำรวจเส้นทางในตารางที่ลึกกว่าเพื่อเลือกสิ่งต่างๆเช่นตารางตัวบ่งชี้สถานะเมื่อพวกเขาถูกดึงออกไปยังตารางที่แยกต่างหาก บางคนจะพูดว่านี่มักจะถูกทำให้ไร้ผลในความเร็วการอัปเดต (การเปลี่ยนข้อความสถานะจาก "ดี" เป็น "ดี" หรืออะไรทำนองนั้น) หรือในการบำรุงรักษา
ฉันขอแนะนำให้อ่านภาคผนวกต่อไปนี้ที่พบในหนังสือเล่มล่าสุดของChris Date :
ไชโยสองตัวสำหรับการทำให้เป็นมาตรฐาน
การทำให้เป็นมาตรฐานอยู่ไกลจากการเป็นยาครอบจักรวาลเนื่องจากเราสามารถมองเห็นได้ง่ายโดยพิจารณาว่าเป้าหมายคืออะไรและมีมาตรการที่ดีต่อพวกเขาอย่างไร ...
ฉันต้องทำให้ชัดเจนว่าฉันไม่ต้องการให้ความเห็นของฉันในส่วนนี้ถูกมองว่าเป็นการโจมตีใด ๆ ฉันเชื่อมั่นว่าสิ่งใดก็ตามที่น้อยกว่าการออกแบบที่เป็นมาตรฐานอย่างสมบูรณ์มีข้อห้ามอย่างมาก ...
ฉันคิดว่ามันเป็นสิ่งสำคัญเท่าเทียมกันในการดู denormalisations ที่เพิ่มเข้ามาอย่างชัดเจนไม่ว่าจะเป็นการเพิ่มค่าโดยรวมหรือบางฟิลด์จากตารางต้นแบบที่คัดลอกไปยังสำเนารายละเอียด
อาร์กิวเมนต์ส่วนใหญ่เป็นอาร์กิวเมนต์ประสิทธิภาพบางอย่าง
หากคุณบังคับใช้ฟิลด์นั้นจะถูกอัพเดตโดยทริกเกอร์และขึ้นอยู่กับฐานข้อมูลเพื่อให้สอดคล้องกัน
ฉันเห็นด้วยกับ @jcolebrand เมื่อคุณออกแบบโมเดลสำหรับแอปพลิเคชันของคุณคุณควรทำให้ทุกอย่างเป็นปกติ แต่คุณควรสร้างโปรไฟล์แบบสอบถามที่สร้างขึ้นเหนือโมเดลของคุณ
ประสบการณ์ของฉันเอง: คุณลักษณะที่เข้าร่วมสองครั้งเพื่อเข้าถึง (นั่นหมายถึงสามตารางที่เข้าร่วม) ส่วนใหญ่จะเป็นหมูที่มีประสิทธิภาพ และเพื่อทำให้สิ่งเลวร้ายที่สุดมันถูกใช้ในธุรกรรมออนไลน์ ฉันทำให้คุณสมบัติไม่ปกติดังนั้นจึงต้องมีการเข้าร่วมหนึ่งครั้งและขอให้โปรแกรมเมอร์ปรับแอปสำหรับการสืบค้นและอัปเดตแอตทริบิวต์ ตอนนี้มันทำงานได้ดีขึ้นมาก ...
กล่าวอีกนัยหนึ่งคุณควรปรับความสมดุลให้เป็นมาตรฐานกับประสิทธิภาพ