Có một câu hỏi rất giống: Modeling products with vastly different sets of needed-to-know information and linking them to lineitems? Nhưng tôi không thể tìm thấy câu trả lời giúp tôi;Có thực hành tốt để sử dụng bảng khác nhau cho chương trình kinh doanh khác nhau (nhưng tương tự) không?
Một người nào đó ở trên Q & Một điểm đến designing database to hold different metadata information, có câu trả lời được chấp nhận tuyệt vời, nhưng vì chức năng tìm kiếm rõ ràng là cần thiết trong chương trình của tôi, tôi không muốn hiệu suất bị xâm phạm.
Tôi là "kỹ thuật viên" sử dụng PHP + Oracle để theo dõi tiến trình bán hàng của công ty chúng tôi và tạo báo cáo. Quy trình làm việc của chúng tôi thường trông giống như sau:
- Nhân viên tiếp thị cung cấp bộ dữ liệu đã chuẩn bị cho hệ thống của tôi;
- Nhân viên tiền tuyến (bán hàng) đánh dấu tiến trình trên hệ thống của tôi;
- Bất kỳ ai cũng có thể tìm kiếm kết quả trong hệ thống;
- Tôi tạo báo cáo lại cho các nhân viên tiếp thị.
Vấn đề:
Nhiều cột của dữ liệu bộ đều giống nhau (hoặc có thể được coi là giống nhau), như thế này:
account|customer_name|gender|location|program_segment|...
Nhưng nợ tiếp thị. như đưa ra những ý tưởng mới (và bỏ qua những ý tưởng hiện có), vì vậy mỗi "chương trình bán hàng (chiến dịch)" có thể có dữ liệu riêng của nó, ví dụ:
Đối với chương trình 1, chúng có thể chứa:
...|prev_coupon_code|last_usage_amount|...
Đối với chương trình 2, tuy nhiên, chúng có thể chứa:
...|is_in_plan_1|is_in_plan_2|...
Bạn đã có ý tưởng.
nỗ lực không thành công:
Để giữ tất cả dữ liệu, tôi thường sử dụng "dài đủ" bảng mà có tất cả các thuộc tính có thể (cột), và để trống/tài sản không cần thiết
NULL
. Nhưng bây giờ tôi cảm thấy rằng nó sẽ không bao giờ "đủ dài", vì có quá nhiều "thuộc tính" và thậm chí nhiều hơn "điểm tập trung bán hàng": Tôi đã soạn thảo một bảng 41 cột cho một phiên bản mới của hệ thống và đột nhiên họ đề xuất một chương trình mới có thông tin không phù hợp.Ai đó đã đề xuất tôi tạo "cột giả" trong bảng và "nhớ" ý nghĩa khác của chúng trong lối vào. Điều này có thể làm việc cho một số kiểu dữ liệu, chẳng hạn như
NUMBER(1)
cho Y/N,DATE
, v.v., nhưng khi nói vềVARCHAR2
, tôi không chắc chắn bao nhiêu trong số đó là đủ ... cộng với điều này làm cho bảng trông "bẩn".
Câu hỏi:
Thất vọng, tôi là bây giờ nghiêm túc xem xét sử dụng các bảng khác nhau cho các chương trình khác nhau, và sử dụng UNION
khoản để tạo báo cáo lớn trong trường hợp họ đang hỏi "làm thế nào chúng ta bán này tháng/mùa/năm? "
Về mặt kỹ thuật, đây có phải là phương pháp hay không? Tôi có nên thực hiện nó?
Sửa # 1:
Để làm rõ, một "chương trình bán hàng" sẽ thường được chạy trong một vài tháng trước khi nó đã bị bỏ rơi, và sẽ có ít nhất một dữ liệu thiết lập mỗi tháng cho mỗi chương trình đang chạy.
Và có thể có nhiều chương trình đang chạy cùng một lúc.
Sửa # 2:
Những cột "Chương trình chỉ định" là số khác nhau: một chương trình có thể cần 10, trong khi người khác có thể chỉ cần 1.
là của họ một nhu cầu cho các dữ liệu được cập nhật (phút cuối cùng) khi bạn thực hiện báo cáo hoặc nó có thể là ok nếu dữ liệu được cập nhật một hoặc hai lần một ngày để tạo báo cáo của bạn? cùng một câu hỏi cho hàm tìm kiếm – Sebas