Tôi đang làm việc để xây dựng một ứng dụng kinh doanh cho công ty của mình và đấu tranh để chọn thiết kế cơ sở dữ liệu phù hợp nhất cho một tình huống cụ thể. Hãy nói rằng tôi có các thực thể sau đây:
Sự chấp thuận
- Tôi
- Trạng thái
- ...
Phê duyệt
- Tôi
- Phê duyệt
- Bình luận
Đặt hàng
- Tôi
- ...
Hóa đơn
- Tôi
- ...
Rõ ràng có thể có nhiều loại phê duyệt và nhiều đối tượng yêu cầu phê duyệt. Điều gì sẽ là thích hợp nhất trong các tùy chọn sau đây để thiết kế các bảng:
LỰA CHỌN 1
Có một bảng phê duyệt với các khóa ngoại null:
Phê duyệt
- Id PK
- Trạng thái
- Đặt hàng FK NULL
- Hóa đơn FK NULL
Phê duyệt
- Id PK
- Phê duyệt FK
- Bình luận
Trong trường hợp này tôi sẽ phải thêm một cột cho mọi đối tượng cần phê duyệt
LỰA CHỌN 2
Có bảng phê duyệt cha mẹ với các trường chung và bảng con cho mỗi đối tượng cần phê duyệt:
Phê duyệt
- Id PK
- Trạng thái
Phê duyệt
- Id PK
- Phê duyệt FK
- Bình luận
Đơn đặt hàng
- Phê duyệt PK FK
- Đặt hàng FK
Hóa đơn
- Phê duyệt PK FK
- Hóa đơn FK
TÙY CHỌN 3
Có một bảng phê duyệt cho từng đối tượng:
Đơn đặt hàng
- Id PK
- Đặt hàng FK
- Trạng thái
Đặt hàng ứng dụng
- Id PK
- Đặt hàngApprovalId FK
- Bình luận
Hóa đơn
- Id PK
- Hóa đơn FK
- Trạng thái
InvoiceApprovalComments
- Id PK
- InvoiceApprovalId FK
- Bình luận
Tôi biết đây là tất cả các giải pháp hợp lệ, nhưng tôi không thể quyết định lựa chọn nào là tốt nhất để thêm các loại phê duyệt khác nhau trong tương lai. Có suy nghĩ gì không?
