Chà, đây là một trong những lĩnh vực vẫn còn nhiều thảo luận. Như một số người nói [ai? - nghĩ rằng đó là Atwood giữa những người khác, nhưng một liên kết thoát khỏi tôi], một ứng dụng có thể làm mọi thứ đã được thực hiện; nó được gọi là C. Những gì bạn muốn làm gần như nằm trong khu vực 'quá chung chung', mặc dù tôi có thể thấy giá trị của việc không cần lập trình viên mỗi khi quy tắc kinh doanh thay đổi.
Nếu tôi phải triển khai một hệ thống như vậy, tôi đoán tôi sẽ thử và chia nhỏ nó thành các miền. Bạn đã hoàn thành công việc tương đối tốt với bảng thứ hai. Chỉ cần chuẩn hóa nó thành các miền riêng biệt được sử dụng để kết hợp các quy tắc kinh doanh. Bạn tạo quy tắc kinh doanh bao gồm 1 hoặc nhiều ràng buộc HOẶC kết hợp với nhau. Mỗi ràng buộc cần một thuộc tính bị hạn chế với một toán tử đối với một thuật ngữ. Các thuật ngữ có thể phức tạp, vì chúng có thể là bất cứ thứ gì từ thuộc tính đến hàm, đến hàm ghép. Có lẽ dễ nhất là kiểm tra các quy tắc kinh doanh của bạn để xem bạn cần gì. Bắt đầu với, chẳng hạn, thuộc tính, boolean và những thứ phổ biến như 'NOW'.
Vì vậy, ví dụ, bản thân lược đồ sẽ bao gồm các rules
, chứa nhiều constraints
(lợi ích rõ ràng là bạn có thể liên kết những thứ này với bất kỳ [nhóm người dùng / ưu đãi / khoảng thời gian / miền khác] nào mà bạn muốn). Đổi lại, chúng bao gồm các thuộc tính properties
, sẽ so sánh với một trong các toán tử properties
(hầu hết là bảng tham chiếu để bạn có thể nhập tên mô tả tùy chỉnh cho những người không phải là lập trình viên, nhưng bạn có thể chọn nhập một hàm tùy chỉnh trong đó vào một số thời điểm) và tất nhiên là một trong các terms
. Phần cuối cùng là phần phức tạp nhất, vì vậy bạn có thể phải đủ điều kiện với một ID trong term_types
để bạn biết liệu bạn đang so sánh với một thuộc tính hay một chức năng khác. Bạn cũng có thể chỉ cần VARCHAR
nó và tạo trường bằng PHP, điều này không quá khó, với điều kiện bạn có tất cả các tùy chọn trong properties
và / hoặc các hàm properties
.
Đó là một hệ thống rất mở (và có lẽ có nhiều cách tốt hơn để sử dụng nó), vì vậy nó có thể không đáng làm trừ khi bạn biết rằng bạn sẽ cần mức độ năng động cao trong các quy tắc kinh doanh.