Saya telah melakukan sedikit pekerjaan dengan database relasional, dan saya pikir saya memahami konsep dasar desain skema yang baik dengan cukup baik. Baru-baru ini saya ditugaskan untuk mengambil alih sebuah proyek di mana DB dirancang oleh konsultan yang dibayar tinggi. Tolong beri tahu saya jika usus saya intinct - "WTF ??!?" - Dijamin, atau apakah orang ini jenius sehingga dia beroperasi di luar wilayah saya?
DB yang dimaksud adalah aplikasi internal yang digunakan untuk memasukkan permintaan dari karyawan. Hanya dengan melihat sebagian kecil saja, Anda memiliki informasi tentang pengguna, dan informasi tentang permintaan yang dibuat. Saya akan mendesain seperti ini:
Tabel pengguna:
UserID (primary Key, indexed, no dupes)
FirstName
LastName
Department
Tabel permintaan
RequestID (primary Key, indexed, no dupes)
<...> various data fields containing request details
UserID -- foreign key associated with User table
Sederhana bukan?
Konsultan mendesainnya seperti ini (dengan data sampel):
Tabel Pengguna
UserID FirstName LastName
234 John Doe
516 Jane Doe
123 Foo Bar
Tabel Departemen
DepartmentID Name
1 Sales
2 HR
3 IT
Tabel UserDepartment
UserDepartmentID UserID Department
1 234 2
2 516 2
3 123 1
Tabel Permintaan
RequestID UserID <...>
1 516 blah
2 516 blah
3 234 blah
Seluruh basis data dibangun seperti ini, dengan setiap bagian data dienkapsulasi dalam tabelnya sendiri, dengan ID numerik yang menghubungkan semuanya menjadi satu. Rupanya konsultan telah membaca tentang OLAP dan menginginkan 'kecepatan pencarian integer'
Dia juga memiliki sejumlah besar prosedur tersimpan untuk referensi silang semua tabel ini.
Apakah desain ini valid untuk SQL DB kecil hingga menengah?
Terima kasih atas komentar / jawaban ...