Saya sedang membangun database inventaris yang menyimpan perangkat keras TI, seperti komputer desktop, laptop, sakelar, router, ponsel, dll. Saya menggunakan pola supertipe / subtipe, di mana semua perangkat disimpan dalam satu tabel, dan informasi spesifik dimasukkan ke dalam tabel subtipe. Dilema saya adalah memilih antara dua desain berikut:

Di diagram atas, semua perangkat berbagi subtipe umum. Misalnya, komputer desktop dan laptop akan memiliki catatan dalam tabel berikut: Perangkat, NetworkDevice. Switch akan memiliki catatan di: Perangkat, NetworkDevice. Perute akan memiliki catatan di: Perangkat, NetworkDevice, WANDevice. Perangkat apa pun yang kami lacak lokasinya akan memiliki catatan di Lokasi. Beberapa pro dan kontra yang saya pikirkan untuk pengaturan ini:
- Pro: MEMILIH catatan berdasarkan bidang umum, seperti Hostname, atau LocationID lebih mudah.
- Pro: Tidak ada bidang nol.
- Con: Tabel yang harus dimasukkan dalam operasi CRUD untuk perangkat tertentu tidak jelas, dan dapat membingungkan DBA di masa depan.
Di diagram bawah, semua perangkat memiliki subtipe sendiri (Ada lebih banyak kelas perangkat yang tidak ditampilkan di sini). Dalam situasi ini, jelas catatan tabel mana yang dimasukkan atau dipilih. Komputer desktop dan laptop masuk dalam Komputer, dll. Beberapa pro dan kontra yang saya pikirkan untuk pengaturan ini:
- Pro: Jelas tabel mana yang akan digunakan untuk operasi CRUD untuk subtipe.
- Pro: Hanya perlu menggunakan satu tabel untuk operasi CRUD.
- Con: MEMILIH catatan berdasarkan bidang subtipe umum mengharuskan semua tabel digabungkan, misalnya mencari berdasarkan Nama Inang, atau LocationID.
Dalam kedua situasi, bidang ClassDiscriminator ditempatkan di tabel subtipe untuk digunakan dengan kendala PERIKSA untuk mengontrol tipe mana yang bisa dimasukkan.
Apakah ada rekomendasi untuk desain yang lebih baik, atau apakah itu sepenuhnya pendapat dan tergantung pada tujuan database?
EDIT: Sebuah pertanyaan spesifik yang saya miliki mengenai sifat tabel "NetworkDevice" yang tumpang tindih. Tabel ini dimaksudkan untuk menyimpan informasi jaringan untuk perangkat apa pun dengan nama host dan / atau alamat IP, apakah itu komputer, sakelar, atau router. Apakah sifat tabel ini tumpang tindih sesuatu yang dapat menyebabkan masalah, atau apakah saya boleh menerapkannya dengan cara ini?
Terima kasih sebelumnya atas segala masukan yang diberikan. Tanyakan apakah ada informasi tambahan yang diperlukan.