ฉันมีสถานการณ์การออกแบบตารางและเป็นประเภทที่ไม่ใช่ DBA ต้องการความคิดเห็นที่ปรับขนาดได้มากกว่า
สมมติว่าคุณถูกขอให้บันทึกข้อมูลบ้านในพื้นที่เมืองใหญ่โดยเริ่มจากย่านเล็ก ๆ (บ้าน 200 หลัง) แต่ในที่สุดจะเติบโตเป็นบ้าน 5 แสนหลัง
คุณจะต้องจัดเก็บข้อมูลพื้นฐาน: ID # (# ล็อตที่ไม่ซ้ำกันที่เราสามารถใช้เป็นดัชนีที่ไม่ซ้ำกัน), Addr, City, State, Zip ปรับตารางง่าย ๆ จะจัดการกับมัน
แต่ในแต่ละปีคุณจะถูกขอให้บันทึกข้อมูลพิเศษเกี่ยวกับบ้านทั้งหมด - และข้อมูลอะไรจะเปลี่ยนแปลงในแต่ละปี ตัวอย่างเช่นในปีแรกคุณจะถูกขอให้บันทึกชื่อและนามสกุลของเจ้าของวิดีโอ ในปีที่สองคุณจะถูกขอให้เก็บนามสกุล แต่ดัมพ์วิดีโอสแควร์และเริ่มรวบรวมชื่อเจ้าของแทน
สุดท้าย - ในแต่ละปีจำนวนคอลัมน์พิเศษจะเปลี่ยนไป อาจเริ่มต้นด้วย 2 คอลัมน์เพิ่มเติมจากนั้นไปที่ 6 ปีหน้าจากนั้นกลับไปที่ 2
ดังนั้นวิธีหนึ่งในตารางคือพยายามเพิ่มข้อมูลที่กำหนดเองเป็นคอลัมน์ในตารางบ้านเพื่อให้มีเพียงหนึ่งตาราง
แต่ฉันมีสถานการณ์ที่มีคนวางตารางสำหรับสิ่งนี้เช่น:
คอลัมน์ "House Table": ID, Addr, City, State, Zip - ด้วยหนึ่งแถวต่อบ้าน
ID Addr City State Zip
-------------------------------------------
1 10 Maple Street Boston MA 11203
2 144 South Street Chelmsford MA 11304
3 1 Main Avenue Lowell MA 11280
คอลัมน์ "ตารางข้อมูลที่กำหนดเอง": ID, ชื่อ, ค่า - พร้อมตารางที่มีลักษณะดังนี้:
ID Name Value
1 Last Name Smith
2 Last Name Harrison
3 Last Name Markey
1 Square Footage 1200
2 Square Footage 1930
3 Square Footage
ดังนั้นจึงมีหลายแถวสำหรับบันทึกบ้านแต่ละหลัง ในแต่ละปีเมื่อข้อมูลเพิ่มเติมจำเป็นต้องมีการเปลี่ยนแปลงตารางนี้จะถูกสร้างขึ้นใหม่อย่างแท้จริงดังนั้นในปีหน้าอาจมีลักษณะดังนี้:
1 Last Name Smith
2 Last Name Harrison
3 Last Name Markey
1 First Name John
2 First Name Harry
3 First Name Jim
ในที่สุดคุณรวม 100,000 แถวบ้านและหนึ่งปีมีข้อมูลเพิ่มเติม 10 ชิ้น; ตารางที่สองในขณะนี้คือข้อมูล 1,000,000 แถวซึ่งหลายแห่งมีข้อมูลซ้ำซ้อน (คำอธิบาย) ความต้องการฐานข้อมูลโดยรวมคือผู้คนจะต้องได้รับข้อมูลแถวบ้าน + ค่าฟิลด์ที่กำหนดเองที่เกี่ยวข้องหลายพันครั้งต่อวัน
ดังนั้นคำถามของฉัน: มันจะดี (หรือน่ากลัว) ฝึกแทน:
A) เค้าโครงตารางบ้านโดยเดาได้สูงสุด # คอลัมน์ที่กำหนดเอง (อาจเรียกว่า "1" ถึง "10") และแทรกค่าที่กำหนดเองเหล่านั้นลงในแถวบ้าน
หรือ
B) จัดเก็บข้อมูลที่กำหนดเองในตารางบ้าน แต่ในแต่ละปีเมื่อความต้องการเปลี่ยนแปลงให้สร้างตารางบ้านขึ้นใหม่โดยมีเพียง # คอลัมน์ที่จำเป็นสำหรับข้อมูลที่กำหนดเองโดยมีแนวคิดว่าความต้องการสามารถไปที่ถั่วและคุณไม่เคยรู้ว่ามีจำนวนสูงสุด อาจมีการถามฟิลด์ตัวเลือกหรือไม่
ขอบคุณหวังว่ามันจะสมเหตุสมผล!