Saya memiliki skenario desain tabel dan sebagai tipe non-DBA, ingin pendapat yang lebih mudah diukur.
Katakanlah Anda diminta untuk mencatat informasi tentang rumah-rumah untuk wilayah metro, dimulai dengan lingkungan kecil (200 rumah) tetapi akhirnya tumbuh hingga 50.000.000 rumah.
Anda diharuskan untuk menyimpan informasi dasar: ID # (Banyak unik # yang dapat kita gunakan sebagai indeks unik), Addr, Kota, Negara, Zip. Baik, meja sederhana akan menanganinya.
Tetapi setiap tahun, Anda akan diminta untuk mencatat informasi tambahan tentang semua rumah - dan informasi APA akan berubah setiap tahun. Jadi, misalnya, tahun pertama, Anda diminta untuk mencatat nama belakang pemilik dan cuplikan kotak. Tahun kedua, Anda diminta untuk menyimpan nama belakang, tetapi membuang rekaman persegi dan bukannya mulai mengumpulkan nama depan pemilik.
Terakhir - setiap tahun # kolom tambahan akan berubah. Mulai dengan 2 kolom tambahan, lalu ke 6 tahun depan, lalu kembali ke 2.
Jadi pendekatan satu tabel adalah mencoba menambahkan informasi khusus sebagai kolom di tabel rumah sehingga hanya ada satu tabel.
Tapi saya punya situasi di mana seseorang meletakkan meja untuk ini sebagai:
Kolom "House Table": ID, Addr, City, State, Zip - dengan satu baris per rumah
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
Kolom "Info Kustom Tabel": ID, Nama, Nilai - dengan tabel tampak seperti:
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
Jadi ada beberapa baris untuk setiap record rumah individu. Setiap tahun ketika informasi opsional memerlukan perubahan, tabel ini secara harfiah dibangun kembali, jadi tahun depan akan terlihat seperti:
1 Last Name Smith
2 Last Name Harrison
3 Last Name Markey
1 First Name John
2 First Name Harry
3 First Name Jim
Akhirnya Anda mengumpulkan 100.000 baris rumah DAN satu tahun ada 10 informasi tambahan; tabel kedua sekarang adalah 1.000.000 baris informasi, banyak di antaranya memiliki informasi yang berlebihan (deskripsi). Persyaratan basis data secara keseluruhan adalah bahwa orang perlu mendapatkan informasi baris rumah + nilai bidang kustom terkait ribuan kali per hari.
Jadi pertanyaan saya: Apakah praktik yang buruk (atau mengerikan) adalah:
A) Letakkan tabel rumah dengan tebakan di maks # kolom khusus (disebut mungkin "1" hingga "10") dan masukkan nilai-nilai khusus tersebut tepat di baris rumah
ATAU
B) Menyimpan informasi khusus di tabel rumah, tetapi setiap tahun ketika persyaratan berubah, buat ulang tabel rumah hanya dengan # kolom yang diperlukan untuk informasi khusus, dengan gagasan bahwa persyaratan dapat menjadi gila dan Anda tidak pernah tahu berapa banyak maksimum bidang opsional mungkin diminta?
Terima kasih, harap ini masuk akal!