ตารางที่มีฟิลด์ (80+) จำนวนมากหรือตารางแบบตัวต่อตัวหลายตารางใน Symfony

ฉันใช้ Symfony1.4 ดังนั้นคำถามของฉันจึงเกี่ยวข้องกับทั้งการออกแบบฐานข้อมูลและหลักคำสอน

ฉันมีวัตถุซึ่งมีลักษณะประมาณ 80 ประการ ผู้ใช้ต้องกรอกทั้งหมด 4 ขั้นตอน จึงแบ่งลักษณะเหล่านี้ได้เป็น 4 กลุ่ม แต่ละกลุ่มจะมีประมาณ 20 ฟิลด์ บางอย่างก็จำเป็น บางอย่างก็ไม่จำเป็น

อันดับแรก ฉันต่อสู้เพื่อสร้างตารางหลัก 1 ตาราง และตารางลูกแบบตัวต่อตัว 3 ตาราง เพราะในกรณีนี้ Symfony สามารถสร้างรูปแบบที่แตกต่างกันด้วยฟิลด์บังคับที่ตั้งค่าฐานข้อมูล

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

ฉันยังสงสัยด้วยว่าวิธีใดจะมีประสิทธิภาพมากกว่าใน Symfony ตัวอย่างเช่น ทั้ง 4 ตารางจะไม่ถูกรวมเข้าด้วยกัน - สูงสุด 2 ตาราง


person Trike    schedule 06.04.2011    source แหล่งที่มา


คำตอบ (1)


ไม่รู้เกี่ยวกับ Symfony แต่ฉันจะพูดจากมุมมองการออกแบบฐานข้อมูล อย่างที่คุณบอกไปแล้วว่าทั้ง 4 ตารางจะไม่ถูกรวมเข้าด้วยกัน การแยกตารางเหล่านั้นอาจเป็นความคิดที่ดี ขึ้นอยู่กับแบบสอบถามและขนาดรวมของตาราง ผู้ใช้มักจะเป็นตารางที่มีขนาดไม่ใหญ่นัก ดังนั้นประสิทธิภาพจึงไม่เป็นปัญหาและความง่ายในการพัฒนาจึงมีความสำคัญมากกว่า แต่ถ้าคุณมีผู้ใช้หลาย GB...

อีกวิธีในการให้เหตุผลของปัญหา: หากการเชื่อมโยงระหว่างตารางเป็นแบบหนึ่งต่อหนึ่งเสมอ (ต้องมีบันทึกอยู่ในตารางทั้งหมด) ฉันจะมีแนวโน้มที่จะใช้วิธีตารางทั้งหมดในที่เดียว หากบางตารางอาจพลาดหนึ่งระเบียน การแยกจะดูน่าสนใจยิ่งขึ้น

คุณสามารถแก้ไขปัญหานี้ได้ด้วย PostgreSQL hstore (หรือเทียบเท่าสำหรับ RDBMS ของคุณ)

person Diogo Biazus    schedule 06.04.2011