Saya sedang bekerja membangun aplikasi bisnis untuk perusahaan saya dan berjuang untuk memilih desain database yang paling tepat untuk situasi tertentu. Katakanlah saya memiliki entitas berikut:
Persetujuan
- Indo
- Status
- ...
Persetujuan Persetujuan
- Indo
- ApprovalId
- Komentar
Memesan
- Indo
- ...
Faktur
- Indo
- ...
Jelas ada beberapa jenis persetujuan dan beberapa objek yang memerlukan persetujuan. Apa yang paling sesuai dari opsi berikut untuk mendesain tabel:
PILIHAN 1
Memiliki satu tabel persetujuan dengan kunci asing nol:
Persetujuan
- Id PK
- Status
- PesanId FK NULL
- InvoiceId FK NULL
Persetujuan Persetujuan
- Id PK
- Persetujuan FK
- Komentar
Dalam hal ini saya harus menambahkan kolom untuk setiap objek yang membutuhkan persetujuan
PILIHAN 2
Memiliki tabel Persetujuan orang tua dengan bidang yang sama, dan tabel anak untuk setiap objek yang membutuhkan persetujuan:
Persetujuan
- Id PK
- Status
Persetujuan Persetujuan
- Id PK
- Persetujuan FK
- Komentar
Persetujuan Pesanan
- Persetujuan PK FK
- OrderId FK
Persetujuan Faktur
- Persetujuan PK FK
- Faktur FK
OPSI 3
Memiliki tabel persetujuan untuk setiap objek:
Persetujuan Pesanan
- Id PK
- OrderId FK
- Status
OrderApprovalComments
- Id PK
- OrderApprovalId FK
- Komentar
Persetujuan Faktur
- Id PK
- Faktur FK
- Status
InvoiceApprovalComments
- Id PK
- InvoiceApprovalId FK
- Komentar
Saya tahu ini semua solusi yang valid, tetapi saya tidak bisa memutuskan mana yang terbaik untuk menambahkan berbagai jenis persetujuan di masa mendatang. Adakah pikiran?
