Đây là một câu hỏi về thiết kế chuẩn hóa/SQL/Cơ sở dữ liệu khó hiểu đã khiến chúng tôi khó hiểu. Tôi hy vọng tôi có thể tuyên bố nó một cách chính xác.Cách tốt nhất để thiết kế cơ sở dữ liệu/vấn đề SQL cụ thể này là gì?
Bạn có một tập hợp các hoạt động. Đó là những điều cần được thực hiện - danh sách TODO được tôn vinh. Bất kỳ hoạt động cụ thể nào cũng có thể được chỉ định cho một nhân viên.
Mọi hoạt động cũng có một sự ghê tởm đối với hoạt động sẽ được thực hiện. Những hoạt động đó là Liên hệ (người) hoặc Khách hàng (doanh nghiệp). Mỗi hoạt động sau đó sẽ có một liên hệ hoặc một khách hàng cho người mà các hoạt động sẽ được thực hiện. Ví dụ: hoạt động có thể là "Gửi thẻ cảm ơn đến Spacely Sprockets (một khách hàng)" hoặc "Gửi tài liệu tiếp thị tới Tony Almeida (một Liên hệ)".
Từ cấu trúc đó, chúng tôi sau đó cần phải có khả năng truy vấn để tìm tất cả các hoạt động một nhân viên cho có để làm, cách liệt kê chúng trong một mối quan hệ đơn đó sẽ là một cái gì đó như thế này trong nó hình thức đơn giản nhất:
-----------------------------------------------------
| Activity | Description | Recipient of Activity |
-----------------------------------------------------
Ý tưởng ở đây là để tránh có hai cột cho Liên hệ và Khách hàng với một trong số chúng trống.
Tôi hy vọng tôi đã mô tả chính xác điều này, vì điều này không rõ ràng vì nó có vẻ thoáng qua.
Vì vậy, câu hỏi đặt ra là: Thiết kế "đúng" cho cơ sở dữ liệu là gì và bạn sẽ truy vấn nó như thế nào để nhận thông tin được yêu cầu?
Dường như có sự nhầm lẫn về khách hàng và địa chỉ liên hệ. Họ có bàn riêng biệt không? Có mối quan hệ nào giữa khách hàng và người liên hệ không? Chúng có phải là các bảng hiện có mà bạn cần phải làm việc, hoặc các bảng mới hoặc có thể tái cấu trúc được không? – ulty4life
Có, khách hàng và người liên hệ là các thực thể riêng biệt. Có lẽ họ không nên, nhưng họ đang có. ;-) –