Tôi đang xây dựng một ứng dụng quản lý để giúp quản lý công ty chi tiết tự động trên điện thoại di động của tôi (và hy vọng những người khác). Tôi đang đấu tranh để tìm ra cách mô hình hóa một số dữ liệu.Các cuộc hẹn và chi tiết đơn hàng
Câu hỏi này có liên quan đến một câu hỏi trước mà tôi đã đăng, nhưng tôi đã sao chép các thông tin liên quan dưới đây: Database design - google app engine
Trong ứng dụng này, có khái niệm về "cuộc hẹn" và "Line Items. "
Các cuộc hẹn là địa điểm và thời gian mà nhân viên dự kiến sẽ cung cấp dịch vụ.
Chi tiết đơn hàng là dịch vụ, phí hoặc chiết khấu và thông tin liên quan của nó. Ví dụ về chi tiết đơn hàng có thể tham gia cuộc hẹn:
Name: Price: Commission: Time estimate Full Detail, Regular Size: 160 75 3.5 hours $10 Off Full Detail Coupon: -10 0 0 hours Premium Detail: 220 110 4.5 hours Derived totals(not a line item): $370 $185 8.0 hours
Trong lần triển khai trước của ứng dụng này, Chi tiết đơn hàng được chứa trong một cuộc hẹn. Điều này làm việc tốt hầu hết thời gian, nhưng đôi khi gây ra vấn đề. Một ví dụ sẽ là nếu một cuộc hẹn bị gián đoạn một nửa vì mưa và kỹ thuật viên phải quay trở lại vào ngày hôm sau và kết thúc. Tình huống này yêu cầu hai cuộc hẹn cho cùng một chi tiết đơn hàng. Trong những trường hợp như thế này, tôi sẽ chỉ dịch chuyển dữ liệu một chút bằng cách đặt "mục hàng" trong cuộc hẹn thứ hai để đọc nội dung như "Hoàn thành" và sau đó chi phí sẽ là $ 0.
Trong phiên bản tiếp theo này, tôi đang xem xét tạo điều kiện cho dòng bài viết nào được xuất hiện với nhiều hơn một cuộc hẹn với một cấu trúc bảng trông như thế này:
Appointment
start_time
etc...
Line_Item
appointment_Key_List
name
price
etc...
Một vấn đề chung với cấu trúc này là nó là phức tạp và tôi thậm chí không chắc liệu nó có phù hợp để phù hợp với một mục hàng có nhiều cuộc hẹn hay không. Nếu Mục hàng chỉ có thể là một phần của một cuộc hẹn, thì tôi thực sự có thể chỉ cần đưa danh sách mục hàng vào mỗi cuộc hẹn, khi tôi nhận được cuộc hẹn, tôi đã nhận được mục hàng.
Một vấn đề cụ thể hơn là tôi đang sử dụng công cụ ứng dụng của Google và nếu tôi muốn truy vấn tập hợp các cuộc hẹn và mục hàng được liên kết của họ, tôi phải truy vấn đầu tiên cho các cuộc hẹn và sau đó thực hiện một giây truy vấn cho các mục hàng bằng cách sử dụng toán tử IN để kiểm tra xem có bất kỳ khóa cuộc hẹn của Line_Item nào rơi vào tập hợp các khóa cuộc hẹn được trả về từ truy vấn trước đó hay không. Truy vấn thứ hai sẽ thất bại nếu tôi có hơn 30 khóa yêu cầu tôi phân phát truy vấn. Tôi có thể không chuẩn hóa dữ liệu để tránh truy vấn đọc phức tạp và mở rộng này, và tôi có lẽ sẽ phải biến đổi bất thường ở mức độ nào đó, nhưng tôi muốn tránh sự phức tạp khi thích hợp.
Câu hỏi của tôi là loại tình huống này thường được mô hình hóa như thế nào? Thậm chí có thích hợp cho một Mục hàng được kết hợp với nhiều cuộc hẹn hay không, chỉ đơn giản là chia các chi tiết đơn hàng thành các mục riêng biệt cho mỗi cuộc hẹn như "nửa đầu của công việc 2 ngày" và "nửa sau của công việc hai ngày . " Làm thế nào để các ứng dụng thành công tương tự làm điều này? Quy tắc chung trong loại tình huống này là gì? Việc triển khai nào đã trở nên ít vấn đề hơn?
Cảm ơn!
Câu trả lời rất nhiều thông tin! Cảm ơn bạn đã chia sẻ thông tin này với SO. @DutrowLLC vui lòng đánh dấu câu trả lời này là câu trả lời chính xác, theo ý kiến của tôi, một câu trả lời tốt hơn cho câu hỏi của bạn. @ Nick Johnson Tôi xin lỗi vì đã tin vào những thứ sai trái. Cảm ơn bạn đã giải thích và cung cấp câu trả lời rất hay này với thông tin tuyệt vời cho mọi người! – Pindatjuh
@Pindatjuh - Rất nhiều thứ để tham gia. Video này cũng đi sâu vào một số chi tiết về cách danh sách được lập chỉ mục và tìm kiếm. Tôi tìm thấy nửa thứ hai trên hợp nhất tham gia cực kỳ hữu ích. Đó là bản pdf có trang trình bày mà bạn có thể xem trong khi xem video: http://code.google.com/events/io/2009/sessions/BuildingScalableComplexApps.html –
Cảm ơn bạn đã dành thời gian trả lời câu hỏi này thật kỹ lưỡng , Tôi hy vọng những người khác cũng sẽ có thể tìm thấy câu trả lời của bạn và hưởng lợi từ nó. –