Yêu cầu là lưu trữ tệp đính kèm cho các loại thực thể khác nhau.Cách tốt nhất để thiết kế kịch bản cơ sở dữ liệu này là gì?
Giả sử chúng tôi có 3 loại thực thể Công ty, Phòng và Nhân viên. Mỗi tệp có thể có nhiều tệp đính kèm (tài liệu).
Cách nào tốt nhất để xử lý việc này?
Giải pháp 1:
bảng Công ty
- CompanyId
bảng Dept
- deptID
nhân viên bàn
- EmployeeID
bảng AttchmentType
- typeid
- loại (công ty, nợ, người lao động)
đính kèm bảng
- AttachmentId
- typeid (bản đồ để loại tập tin đính kèm)
- ENTITYID (bản đồ để CompanyId/deptID/EmployeeID)
Ưu điểm: tôi có thể thêm các loại thực thể mới một cách dễ dàng trong tương lai
Nhược điểm: Trong trường hợp này tôi không thể có mối quan hệ khóa ngoại được duy trì giữa các thực thể và phần đính kèm.
Giải pháp 2:
bảng Công ty
- CompanyId
bảng Dept
- deptID
nhân viên bàn
- EmployeeID
CompanyAttachments bảng
- AttachmentId
- CompanyId (FK)
DeptAttachments bảng
- AttachmentId
- deptID (FK)
EmployeeAttachments bảng
- AttachmentId
- EmployeeID (FK)
Ưu điểm: tính toàn vẹn chủ chốt Ngoại
Nhược điểm: Để thêm thực thể mới, tôi cần có bảng đính kèm mới riêng biệt.
Vì vậy, cách nào tốt nhất để đi với giả định tôi có thể cần phải thêm các thực thể mới trong tương lai?
Sửa 1:
Thanks for guys trả lời của bạn.
Nếu tôi muốn đi với giải pháp 2, tôi thấy rằng việc tạo cột mới trong bảng tệp đính kèm dễ dàng hơn thay vì tạo bảng đính kèm mới cho mọi thực thể chỉ để ánh xạ chúng? một cái gì đó như thế nào,
bảng Công ty
- CompanyId
bảng Dept
- deptID
bảng Employee
- EmployeeID
đính kèm
- AttachmentId
- CompanyId (FK)
- EmployeeID (FK)
- DepartmentId (FK)
Tôi có thiếu cái gì ở đây không?
Các bạn đã nhìn NoSQL tài liệu dựa trên (ví dụ: CouchDB) cơ sở dữ liệu? – JNK