Lời nói đầu: Tôi không có kinh nghiệm với các công cụ quy tắc, quy tắc xây dựng, quy tắc mô hình hóa, triển khai cấu trúc dữ liệu cho các quy tắc hoặc điều gì đó. Vì vậy, tôi không biết tôi đang làm gì hoặc nếu những gì tôi cố gắng dưới đây là cách rời khỏi cơ sở.Cấu trúc dữ liệu và lược đồ cơ sở dữ liệu thích hợp để lưu trữ các quy tắc logic là gì?
Tôi đang cố gắng tìm ra cách lưu trữ và xử lý kịch bản giả định sau đây. Để đơn giản hóa vấn đề của tôi, hãy nói rằng tôi có một loại trò chơi mà người dùng mua một đối tượng, nơi có thể có 1000 đối tượng có thể và đối tượng phải được mua trong một chuỗi được chỉ định và chỉ trong một số nhóm nhất định. Ví dụ: giả sử tôi là người dùng và tôi muốn mua đối tượng F. Trước khi tôi có thể mua đối tượng F, trước đây tôi phải mua đối tượng A OR (B VÀ C). Tôi không thể mua F và A cùng lúc, cũng như F và B, C. Chúng phải nằm trong trình tự quy tắc chỉ định. Đầu tiên, sau đó là F sau. Hoặc, B, C trước, sau đó là F sau. Tôi không quan tâm ngay bây giờ với khoảng thời gian giữa các lần mua hàng hoặc bất kỳ đặc điểm nào khác của người dùng, chỉ là chúng là trình tự chính xác cho đến bây giờ.
Cách tốt nhất để lưu trữ thông tin này cho hàng nghìn đối tượng có thể cho phép tôi đọc trong quy tắc cho đối tượng đang được mua và sau đó kiểm tra đối với lịch sử mua trước đó của người dùng?
Tôi đã thử điều này, nhưng tôi bị kẹt khi cố gắng triển khai các nhóm như A OR (B VÀ C). Tôi muốn lưu trữ các quy tắc trong cơ sở dữ liệu nơi tôi có các bảng này:
Objects
(ID(int),Description(char))
ObjectPurchRules
(ObjectID(int),ReqirementObjectID(int),OperatorRule(char),Sequence(int))
Nhưng rõ ràng là khi bạn xử lý thông qua kết quả mà không có nhóm, bạn sẽ nhận được câu trả lời sai. Tôi muốn tránh phân tích chuỗi quá mức nếu có thể :). Một đối tượng có thể có số lượng không xác định các lần mua hàng bắt buộc trước đó. Các đoạn mã SQL hoặc psuedocode để xử lý các quy tắc sẽ được đánh giá cao. :)